売買注文をコーディング

EA(エキスパートアドバイザー)を作るにあったって、何はなくとも売買注文を出さなければ!そんなわけでまずは、トレードファンクションの OrderSend() をコーディング。

OrderSend() の最小構成

OrderSend("USDJPY",OP_BUY,0.1,Ask,3,0,0);

通貨ペアは、ドル円。成行買いを 0.1ロット。スベリは 3 ポイント。ストップロス、利確が未設定。という最小構成の注文。これがティック毎に証拠金の続く限り発注。あくまで動作テストでのみ御使用を ww

//--前略
void OnTick(){
//上記OrderSend()をこの欄に貼る
}

パラメータの解説

int OrderSend(
string symbol, // 通貨ペア
int cmd, // 注文方法
double volume, // 売買ロット
double price, // 執行価格
int slippage, // スリッページ
double stoploss, // ストップロス
double takeprofit, // 利確値
string comment=NULL, // コメント
int magic=0, // マジックナンバー
datetime expiration=0, // 予約注文期間
color arrow_color=clrNONE // チャート上の矢印色
);
  1. 売買注文を出す通貨ペア。マイクロ口座だとUSDJPYmicroなどディーラーによる違いに注意。予約語の _Symbol を入れると現在開いているチャートの通貨ペアで執行。
  2. 注文方法。OP_SELLLIMITOP_BUYSTOPなど。
  3. ロット。
  4. 価格。売りならBid
  5. 最大スリッページ。
  6. ストップロス。
  7. 利益確定価格。
  8. コメント欄。空欄なら NULL を入力。
  9. マジックナンバー。他 EA の注文と識別するため、ほぼ必須。
  10. 成行なら 0
  11. チャートに印をつけるための表示色。空欄可。

注意点

NormalizeDouble()の例

double minstoplevel=MarketInfo(_Symbol,MODE_STOPLEVEL);
NormalizeDouble(Bid-minstoplevel*_Point,_Digits);

アクティブチャートの通貨ペアの最小ストップレベルをMarketInfo() で調べ、_Point(0.001 など)をかけて小数にし、Bid から引く。_Digits(3 など)の桁に丸める。