{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/304notfound-com/json-schema/304notfound-com-position-in-schema.json",
  "title": "PositionIn",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/304notfound-com-openapi.json#/components/schemas/PositionIn",
  "properties": {
    "equity": {
      "type": "number",
      "exclusiveMinimum": 0.0,
      "title": "Equity",
      "description": "Capital total du compte."
    },
    "cash": {
      "anyOf": [
        {
          "type": "number",
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Cash",
      "description": "Liquidités disponibles (par défaut : le capital)."
    },
    "direction": {
      "type": "string",
      "enum": [
        "LONG",
        "SHORT"
      ],
      "title": "Direction"
    },
    "entry_price": {
      "type": "number",
      "exclusiveMinimum": 0.0,
      "title": "Entry Price"
    },
    "stop_distance": {
      "anyOf": [
        {
          "type": "number",
          "exclusiveMinimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Stop Distance",
      "description": "Distance du stop en prix ; sinon calculée par l'ATR des bougies."
    },
    "candles": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/CandleIn"
          },
          "type": "array",
          "maxItems": 5000,
          "minItems": 2
        },
        {
          "type": "null"
        }
      ],
      "title": "Candles"
    },
    "atr_period": {
      "type": "integer",
      "maximum": 200.0,
      "minimum": 2.0,
      "title": "Atr Period",
      "default": 14
    },
    "atr_multiplier": {
      "type": "number",
      "maximum": 20.0,
      "exclusiveMinimum": 0.0,
      "title": "Atr Multiplier",
      "default": 1.5
    },
    "risk_pct": {
      "type": "number",
      "maximum": 0.2,
      "exclusiveMinimum": 0.0,
      "title": "Risk Pct",
      "description": "Part du capital risquée si le stop est touché.",
      "default": 0.01
    },
    "take_profit_r": {
      "type": "number",
      "maximum": 50.0,
      "exclusiveMinimum": 0.0,
      "title": "Take Profit R",
      "default": 2.0
    },
    "max_notional_pct": {
      "type": "number",
      "maximum": 10.0,
      "exclusiveMinimum": 0.0,
      "title": "Max Notional Pct",
      "default": 0.25
    },
    "commission_bps": {
      "type": "number",
      "maximum": 1000.0,
      "minimum": 0.0,
      "title": "Commission Bps",
      "default": 5.0
    },
    "spread_bps": {
      "type": "number",
      "maximum": 1000.0,
      "minimum": 0.0,
      "title": "Spread Bps",
      "default": 2.0
    },
    "slippage_bps": {
      "type": "number",
      "maximum": 1000.0,
      "minimum": 0.0,
      "title": "Slippage Bps",
      "default": 3.0
    }
  },
  "type": "object",
  "required": [
    "equity",
    "direction",
    "entry_price"
  ],
  "$defs": {
    "CandleIn": {
      "properties": {
        "time": {
          "type": "integer",
          "title": "Time",
          "description": "Horodatage Unix (secondes) de l'ouverture de la bougie."
        },
        "open": {
          "type": "number",
          "exclusiveMinimum": 0.0,
          "title": "Open"
        },
        "high": {
          "type": "number",
          "exclusiveMinimum": 0.0,
          "title": "High"
        },
        "low": {
          "type": "number",
          "exclusiveMinimum": 0.0,
          "title": "Low"
        },
        "close": {
          "type": "number",
          "exclusiveMinimum": 0.0,
          "title": "Close"
        },
        "volume": {
          "type": "number",
          "minimum": 0.0,
          "title": "Volume",
          "default": 0.0
        }
      },
      "type": "object",
      "required": [
        "time",
        "open",
        "high",
        "low",
        "close"
      ],
      "title": "CandleIn"
    }
  }
}