まずはExecuteMarketOrder
ExecuteMarketOrderメソッドの使い方はわかってる前提で話は進みますので、よくわからんという方は先にこちらへ。→cAlgoの発注メソッド(2)
というのも、cAlgoAPIでの発注はExecuteMarketOrderさえわかってれば、あとは簡単なんです。パラメータはExecuteMarketOrderのとほぼ共通で少し追加されてるだけです。途中までの引数指定で利用可能なオーバーロードがあるのも同じです。
また、すべての注文メソッドにAsyncバージョンがありますが、Async付きとなしの違いもExecuteMarketOrderと全く同じです。
ではExecuteMarketOrderはもう大丈夫という方はこの先へどうぞ。残りの4種類の発注メソッドについて解説します。
もう一つの即時注文
ExecuteMarketOrderのほかにもう一つ即時注文のメソッドがあります。なお、cTraderの即時注文はIOC (Immediate-Or-Cancel: できるだけ執行して残りはキャンセル) で執行されます。FOK (Fill-Or-Kill: 指定volume満たせなければ全キャンセル) は今のところ対応していないようです。
スリッページ指定付きの成行注文
ExecuteMarketOrderの成り行き注文では約定価格はマーケット任せだったのに対して、こちらは自分で約定価格を指定する注文です。基本的に指定された価格より有利な約定を目指しますが、不利方向へのズレをどこまで許容できるか指定できます。
ExecuteMarketRangeOrderメソッド
basePriceで価格を指定して、MarketRangePIpsで許容できるズレを指定します。条件に合わなかった場合は注文は成立せず、返り値TradeResultのErrorにTechnicalErrorが入ってきます。
(TradeResult) public TradeResult ExecuteMarketRangeOrder(TradeType tradeType,
string symbolName,
double volume, string label,
double marketRangePips,
double basePrice
double? stopLossPips,
double? takeProfitPips,
string comment,
bool hasTrailingStop,
StopTriggerMethod? stopLossTriggerMethod)
パラメータ
主だった引数はExecuteMarketOrderと同じなので省略します。
(double) marketRangePips
スリッページです。basePriceよりもこのmarketRangePIpsだけ不利な価格までは許容します。
(double) basePrice
注文価格です。基本的にこの価格より有利な価格での注文成立を要求します。
待機注文
Execute~Orderは即時実行される注文だったのに対し、Place~Orderの名前のメソッドは指値注文、逆指値注文のような条件を満たすまで待つ注文です。待機注文はメソッド呼び出し時に引数DateTime型で有効期限を指定できます。nullにしておけばGTC(Goog-Till-Cancel:キャンセルまで有効)となります。
指値注文
エントリー価格を指定する、普通の指値注文です。
PlaceLimitOrderメソッド
targetPriceで価格を指定し、expirationで有効期限を指定する以外はExecuteMarketOrderと同じです。
(TradeResult) PlaceLimitOrder(TradeType tradeType,
string symbolName,
double volume,
double targetPrice,
string label,
double? stopLossPips,
double? takeProfitPips,
DateTime? expiration,
string comment,
bool hasTrailingStop,
パラメータ
(double) targetPrice
約定価格を指定します。この価格、もしくはこれより有利な価格で約定します。
(DateTime?) expiration
有効期限を指定します。nullで有効期限なしです。
逆指値注文
指定した価格で約定が可能になり次第、成行注文を出す注文、つまり普通の逆指値注文です。
PlaceStopOrderメソッド
targetPriceで価格を指定、expirationで有効期限を指定するほかに、注文の執行基準をstopOrderTriggerMethodで指定できます。
(TradeResult) PlaceStopOrder(TradeType tradeType,
string symbolName,
double volume,
double targetPrice,
string label,
double? stopLossPips,
double? takeProfitPips,
DateTime? expiration,
string comment,
bool hasTrailingStop,
StopTriggerMethod? stopLossTriggerMethod,
StopTriggerMethod stopOrderTriggerMethod)
パラメータ
(double) targetPrice
注文価格を指定します。この価格に到達次第、成行注文が出されます。
(DateTime?) expiration
有効期限を指定します。nullで有効期限なしです。
(StopTriggerMethod) stopOrderTriggerMethod
注文価格に到達したときの注文執行判断基準を表します。指定しなければ一瞬でも到達したら、即発注です。詳しくはこちらを。
ストップリミット注文
わかりやすく言うならスリッページ指定付き逆指値注文です。指定した価格で約定が可能になり次第、スリッページ指定で成り行き注文をだす注文です。
PlaceStopLimitOrderメソッド
スリッページをstopLimitRangePIpsで指定できます。
(TradeResult) PlaceStopLimitOrder(TradeType tradeType,
string symbolName,
double volume,
double targetPrice,
double stopLimitRangePips,
string label,
double? stopLossPips,
double? takeProfitPips,
DateTime? expiration,
string comment,
bool hasTrailingStop,
StopTriggerMethod? stopLossTriggerMethod,
StopTriggerMethod stopOrderTriggerMethod)
パラメータ
(double) targetPrice
注文価格を指定します。この価格に到達次第、成行注文が出されます。
(double) stopLimitRangePips
スリッページを指定します。
(DateTime?) expiration
有効期限を指定します。nullで有効期限なしです。
(StopTriggerMethod) stopOrderTriggerMethod
注文価格に到達したときの注文執行判断基準を表します。指定しなければ一瞬でも到達したら、即発注です。詳しくはこちらを。
ストップリミット注文はあまりなじみがない方もいそうなので、補足説明書きました。