スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | CM(-) | --/--/--(--) --:--

OrderSend関数のラッパー関数を用意してBIDかASKで迷う必要をなくすテクニック

MQL4で初心者が混乱するOrderSend関数のBIDとASK

頭の中ではBID,ASKのことが分かっていてもコーディングしているといつの間にか逆になっているということがよくあるようです。

そんな初心者やOrderSendエラーで馬鹿みたいに悩む時間を解消するために、OrderSend関数をラップ化する例を紹介します。


MetaTrader MQL4 プログラムソース

//***************************************************************
// ASK?BID?混乱しがちな OrderSend関数
//***************************************************************
int start(){
   // 変数宣言
   int chk = 0;

   // 買い注文
   chk = OrderSendBuy(Symbol()         // 通貨ペア名
                    , 1                // ロット
                    , 3                // スリッページ
                    , "OrderSendBuy"   // コメント
                    , 10000            // オーダーマジックナンバー
                    , Green            // 矢印色
                    );
   if(chk < 0)
   {
      // エラー対処
   }
   
   // 売り注文
   chk = OrderSendSell(Symbol()        // 通貨ペア名
                     , 1               // ロット
                     , 3               // スリッページ
                     , "OrderSendBuy"  // コメント
                     , 10001           // オーダーマジックナンバー
                     , Red             // 矢印色
                     );
   if(chk < 0)
   {
      // エラー対処
   }

   return (0);
}

//***************************************************************
// 買い注文(OrderSend関数のラッパー関数)
//***************************************************************
int OrderSendBuy(string symbol
               , double volume
               , int slippage
               , string comment=""
               , int magic=0
               , color arrow_color=CLR_NONE
               )
{
   int chk = OrderSend(symbol
                     , OP_BUY       // 固定
                     , volume
                     , Ask          // 固定
                     , slippage
                     , 0            // 固定
                     , 0            // 固定
                     , comment
                     , magic
                     , 0            // 固定
                     , arrow_color
                     );
   return (chk);
}

//***************************************************************
// 売り注文(OrderSend関数のラッパー関数)
//***************************************************************
int OrderSendSell(string symbol
                , double volume
                , int slippage
                , string comment=""
                , int magic=0
                , color arrow_color=CLR_NONE
                )
{
   int chk = OrderSend(symbol
                     , OP_SELL      // 固定
                     , volume
                     , Bid          // 固定
                     , slippage
                     , 0            // 固定
                     , 0            // 固定
                     , comment
                     , magic
                     , 0            // 固定
                     , arrow_color
                     );
   return (chk);
}


解説

今回は最も一般的に使用する買い注文と売り注文のラッパー関数を作成しました。

買いも売りも本来であればOrderSend関数を使用すれば良いのですが、冒頭でも指摘したように人間にとっては混乱させる要素が残っています。

そこで、OrderSend関数をラップした買い注文と売り注文のラッパー関数をそれぞれ作成したのです。

プログラムソースにもコメントで書いてありますが、OrderSend関数の買いと売りに関する部分を固定化することにより、紛らわしさがなくなっていることが分かります。

このように、人間にとって混乱するような部分をラップ化することで、EA開発をスピードアップさせることが可能となるでしょう。


MQL4テクニック | CM(0) | 2009/09/05(土) 18:43
コメントの投稿
題名
名前
メールアドレス
URL
コメント
PASS
SECRET管理者にだけ表示を許可する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。