設計:トレードロジック② | シストレの現実

シストレの現実

インフラ構築のプロが、シストレをゼロから始める記録です。
リーン・スタートアップの考えを取り込み、Expert Adviser を作っていきます。

教えるような大したものではなく、ユースケースの一つになれば幸いです。

今回は一番のキモとなるポジションの取引の設計です。
基本的には、ポジションを持つ取引「エントリー」と、利益確定する取引「利益確定(EXIT)」、損失確定する取引「損切り(ロスカット)」の3種類について定義します。

FXの基本は、このブログでは説明しませんが、これらの処理は非常に多くの回数実行されます。
特に、取引自体も重要ですが、判定ロジックが最重要です。

この判定ロジックは変更量が多くなるので、将来的にはカプセル化して柔軟性を持たせたいところです。

<エントリー>
エントリーの判断ロジックの大方針を設計します。詳細は開発時に詰めます。

【要件(復習)】
a) アップトレンドの買い
  ローソク足が短期移動平均線を上に抜いた時
b) ダウントレンドの売り
  ローソク足が短期移動平均線を下に抜いた時
※アップトレンドの売りポジション、ダウントレンドの買いポジションを持たない前提。

【設計】
判断に使うローソク足の1本をMTの世界では 「ティック(Tick)」 と呼ぶそうです。
現在を0として、そこから1本前、2本前と指定していきます。それを踏まえると、要件を設計に落とすとこういう感じになります。

A) アップトレンドの買いタイミング判定

 下記の条件を全て満たす場合に買いタイミングを満たしたと判定します。

  a) ティック[現在]の終値 > 短期移動平均値[現在]
  b) ティック[1本前] <
短期移動平均値[1本前]


B) ダウントレンドの買いタイミング判定
 下記の条件を全て満たす場合に売りタイミングを満たしたと判定します。

  a) ティック[現在]の終値 < 短期移動平均値[現在]
  b) ティック[1本前] >
短期移動平均値[1本前]

※b) は等値は含まない点が注意です。
ティック1本前から現在までの間でぶち抜けているくらいに勢いが無いと買いタイミングと判定しないことにしたいと思います。

タイミング例


<取引量>
一回に持つポジション数と保有量について設計します。まずは低レバレッジ/安全設計を目指します。
ただ、ここも注文回数を調整するために調整できる柔軟性を持たせる必要があると考えます。

【要件(復習)】
a) 注文量
  一回の注文量は最小数で行う。
b) 保有量
  ・1つの損切りとなった時に、損失が資金の2%以内に収まる量に収める
  ・全てのポジションが損切りとなった時に、損失が資金の15%以内に収まる量に収める

【設計】
A) 注文量
 一回の注文量は 1000通貨単位で行うことにして、サイズを自動的に調整するロジックは組み込みません。
 ただし、パラメータなどで適宜調整できる余地は残しておきます

B) 保有量
 注文前に必ず保有量を確認して、エントリーできるかを下記の基準に照らし合わせて判断することにします。
 もしエントリーできない場合は、利益確定もしくはロスカットの判定のみ行います。
 
 エントリーするポジションをロスカットした場合の損失額(予測値) <= 発注時点の有効証拠金(口座資金) × 2%

 損失額(買いポジションの場合)(ポジション約定価格 - ロスカット価格) × 注文量(保有通貨数)

 損失額(売りポジションの場合)ロスカット価格 - ポジション約定価格) × 注文量(保有通貨数)

※この後に設計するロスカットロジックを使用して、損失額を予め予測することで被害を最小限に保ちます。
 ただし、「2%」というリスク許容率については変更できる余地を持たせます


ロスカット(損切り)
実は今回のロジックではロスカット判断が一番キモだと考えています。
このロスカット幅の決め方によって、保有量も、利益確定も 決まってくるからです。

【要件(復習)】
a) 買いポジション
  直近の最安値のすぐ下に設定
b) 売りポジション
  直近の最高値のすぐ上に設定


【設計】
A) 買いポジションの場合
  ティック48本(2日間)の安値うち、最安値(≠終値)を用いて指定します。

  ロスカット価格 = 最安値 - バッファ(0.1 円)

B) 売りポジションの場合

  ティック48本(2日間)の高値うち、最高値(≠終値)を用いて指定します。

  ロスカット価格 = 最高値 + バッファ(0.1 円)

対象とする ティックの数 と バッファ は柔軟に指定できる余地を残します。


利益確定(EXIT)
ロスカット値と連動するため、こちらは自ずと決まってきます。
このような設計をすると、一回の利幅はロスカットした場合と等しいため、基本的には勝率を上げることで利益確保していく戦略となります。

【要件(復習)】
a) 買いポジション
  損切りと同じ値幅で、上値を設定する。
b) 売りポジション
  損切りと同じ値幅で、下値を設定する。


【設計】
A) 買いポジションの場合
  ロスカット価格を再利用します。

  利益確定価格 = ポジション約定価格 + ポジション約定価格 - ロスカット価格 + バッファ(0.1 円)
  

B) 売りポジションの場合

  ロスカット価格を再利用します。

  利益確定価格 = ポジション約定価格 - ロスカット価格 - ポジション約定価格 - バッファ(0.1 円)

対象とする バッファ は柔軟に指定できる余地を残します。


ざっくりとしたロジックは出来上がりました。
細かいパラメータに関しては、正直なところ裏付けとなるロジックがまだ持てていないので、バックテストやリリース後の運用を通じて微調整していく予定です。

※修正(2016/01/09): ロスカットの設計の誤りを修正しました。