Strategies

Manage trading strategies with rules, types, and rich text content.

Overview

Strategies define your trading approaches with detailed rules and explanations. Each strategy can include rich text content describing the setup, entry/exit criteria, and risk management.

Strategy types:

  • entry — Entry strategies
  • exit — Exit strategies
  • trade_management — Position management approaches
  • risk_management — Risk control methods

Features:

  • Multi-format content support
  • Strategy rules with categories
  • Full-text search
  • Filterable by type

List strategies

Endpoint: GET /api/v1/strategies

Query parameters

ParameterTypeDescription
pageintegerPage number (default 1)
limitintegerItems per page, max 100 (default 50)
typestringFilter by type: entry, exit, trade_management, risk_management
searchstringSearch in title, description, subtitle
formatstringContent format: json, html, or markdown
include_mediabooleanInclude media URLs

Example

curl "https://app.mypropjournal.com/api/v1/strategies?type=entry&format=markdown" \
  -H "Authorization: Bearer mpj_your_api_key_here"

Example response

{
  "data": [
    {
      "id": "abc-123",
      "title": "Momentum Breakout",
      "description": "Trade breakouts with volume confirmation",
      "type": "entry",
      "content": "# Strategy Overview\n\nLook for price breaking key levels...",
      "strategy_rules": [
        {
          "id": "rule-1",
          "description": "Price breaks above resistance",
          "category": "entry",
          "sort_order": 1
        }
      ],
      "created_at": "2026-01-15T10:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 12,
    "totalPages": 1
  }
}

Get single strategy

Endpoint: GET /api/v1/strategies/{id}

curl "https://app.mypropjournal.com/api/v1/strategies/abc-123?include_media=true" \
  -H "Authorization: Bearer mpj_your_api_key_here"

Create strategy

Endpoint: POST /api/v1/strategies

Request body

FieldTypeRequiredDescription
titlestringYesStrategy title
typestringYesType: entry, exit, trade_management, risk_management
descriptionstringNoBrief description
subtitlestringNoSubtitle
contentobjectNoTipTap JSON content
content_htmlstringNoHTML content
content_markdownstringNoMarkdown content

Example

await fetch('https://app.mypropjournal.com/api/v1/strategies', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer mpj_your_api_key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    title: 'First Red Day',
    type: 'entry',
    description: 'Buy first red day after strong uptrend',
    content_markdown: `# First Red Day Strategy

**Entry Rules:**
1. Stock in confirmed uptrend (above 50 MA)
2. First red day after 3+ green days
3. Volume below average (no panic selling)
4. Enter near previous day's close

**Risk Management:**
- Stop below the low of the red day
- Risk no more than 1% of account
`
  })
});

Update strategy

Endpoint: PUT /api/v1/strategies/{id}

curl -X PUT "https://app.mypropjournal.com/api/v1/strategies/abc-123" \
  -H "Authorization: Bearer mpj_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Updated: First Red Day",
    "content_markdown": "# Updated Strategy\n\nAdded volume confirmation..."
  }'

Delete strategy

Endpoint: DELETE /api/v1/strategies/{id}

Cascade Delete Warning

Deleting a strategy will permanently cascade delete the following related data:

  • All strategy rules associated with this strategy
  • All playbook associations linking this strategy to playbooks

Additionally, these references will be set to null (not deleted):

  • Any trades using this strategy
  • Any chart books linked to this strategy

This action cannot be undone. The API response will include warnings about what data was affected.

curl -X DELETE "https://app.mypropjournal.com/api/v1/strategies/abc-123" \
  -H "Authorization: Bearer mpj_your_api_key_here"

Use cases

Export strategy playbook

import requests

def export_all_strategies(api_key):
    """Export all strategies as a formatted playbook"""
    response = requests.get(
        'https://app.mypropjournal.com/api/v1/strategies',
        headers={'Authorization': f'Bearer {api_key}'},
        params={'format': 'markdown', 'limit': 100}
    )
    
    strategies = response.json()['data']
    
    # Group by type
    playbook = {}
    for strategy in strategies:
        type_name = strategy['type'].replace('_', ' ').title()
        if type_name not in playbook:
            playbook[type_name] = []
        playbook[type_name].append(strategy)
    
    # Format as document
    document = "# Trading Playbook\n\n"
    for type_name, strategies in playbook.items():
        document += f"## {type_name}\n\n"
        for strategy in strategies:
            document += f"### {strategy['title']}\n\n"
            document += f"{strategy['content']}\n\n"
    
    return document

playbook = export_all_strategies('mpj_your_key')
with open('playbook.md', 'w') as f:
    f.write(playbook)

Next steps