売買注文をコーディング|MT4,EA

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 など)の桁に丸める。