EA(自動売買)のサンプルコード

お疲れ様です。
ポルポルです。

今回はEA作成ってプログラミング未経験者でも以外にできるんだぜ!って事を説明しようかと思います。

まずは私が作成したサンプルコードをご覧ください。

int bar = 0; //ローソク足の数補助用

int start()
{
   //現在のローソク足の数を取得
   int new_bar = Bars(NULL           //通貨ペア名(NULLは現在の通貨ペアを意味)
                     ,PERIOD_D1);    //ローソク足の時間軸を指定
   
   double buy_pinbar = 0.0;   //下ヒゲの長さ補助用
   double sell_pinbar = 0.0;  //上ヒゲの長さ補助用
   
   //新しいローソク足が出来たら処理
   if(bar!=0 && bar!=new_bar)
   {
      //高値を取得
      double high = iHigh(NULL      //通貨ペア名(NULLは現在の通貨ペアを意味)
                         ,PERIOD_D1 //ローソク足の時間軸を指定
                         ,1);       //何個前の足か指定
      //安値を取得
      double low = iLow(NULL      //通貨ペア名(NULLは現在の通貨ペアを意味)
                       ,PERIOD_D1 //ローソク足の時間軸を指定
                       ,1);       //何個前の足か指定
   
      //始値を取得
      double open = iOpen(NULL      //通貨ペア名(NULLは現在の通貨ペアを意味)
                         ,PERIOD_D1 //ローソク足の時間軸を指定
                         ,1);       //何個前の足か指定
      
      //終値を取得
      double close = iClose(NULL      //通貨ペア名(NULLは現在の通貨ペアを意味)
                           ,PERIOD_D1 //ローソク足の時間軸を指定
                           ,1);       //何個前の足か指定
                           
      //ローソク足が陰線
      if(open > close)
      {
         buy_pinbar = close - low;  //下ヒゲの長さ
         sell_pinbar = high - open; //上ヒゲの長さ
      }
      //ローソク足が陽線
      else
      {
         buy_pinbar = open - low;   //下ヒゲの長さ
         sell_pinbar = high - close;//上ヒゲの長さ
      }
      
      
      if(buy_pinbar > 2)OrderSend(NULL    //通貨ペア
                                 ,OP_BUY  //買い
                                 ,0.01    //ロット数
                                 ,Ask     //注文価格
                                 ,3       //スリップページ
                                 ,Ask-2   //逆指値
                                 ,Ask+2   //指値
                                 ,"テスト"   //コメント
                                 ,999     //マジックナンバー(EA識別用)
                                 ,0       //注文の有効期限
                                 ,clrBlue);//チャート上の注文矢印の色。
                                  
      if(sell_pinbar > 2)OrderSend(NULL    //通貨ペア
                                  ,OP_SELL //売り
                                  ,0.01    //ロット数
                                  ,Bid     //注文価格
                                  ,3       //スリップページ
                                  ,Bid+2   //逆指値
                                  ,Bid-2   //指値
                                  ,"テスト"   //コメント
                                  ,999     //マジックナンバー(EA識別用)
                                  ,0       //注文の有効期限
                                  ,clrRed);//チャート上の注文矢印の色。
   }
   
   bar = new_bar; //ローソク足の数を保持
   
   return(0);
}

動くだけを考えたプログラムになりますが、これでも動きます。
どうですか?
これぐらいなら出来そうだと思いませんか?

これは2円分のピンバーが現れたらエントリー。
損切、利食い共に2円で決済のロジックです。

細かい所は省きざっくり説明します。

一個前のローソク足の高値、安値、始値、終値を取得

      //高値を取得
      double high = iHigh(NULL      //通貨ペア名(NULLは現在の通貨ペアを意味)
                         ,PERIOD_D1 //ローソク足の時間軸を指定
                         ,1);       //何個前の足か指定
      //安値を取得
      double low = iLow(NULL      //通貨ペア名(NULLは現在の通貨ペアを意味)
                       ,PERIOD_D1 //ローソク足の時間軸を指定
                       ,1);       //何個前の足か指定
   
      //始値を取得
      double open = iOpen(NULL      //通貨ペア名(NULLは現在の通貨ペアを意味)
                         ,PERIOD_D1 //ローソク足の時間軸を指定
                         ,1);       //何個前の足か指定
      
      //終値を取得
      double close = iClose(NULL      //通貨ペア名(NULLは現在の通貨ペアを意味)
                           ,PERIOD_D1 //ローソク足の時間軸を指定
                           ,1);       //何個前の足か指定

ピンバーの長さを計算

      //ローソク足が陰線
      if(open > close)
      {
         buy_pinbar = close - low;  //下ヒゲの長さ
         sell_pinbar = high - open; //上ヒゲの長さ
      }
      //ローソク足が陽線
      else
      {
         buy_pinbar = open - low;   //下ヒゲの長さ
         sell_pinbar = high - close;//上ヒゲの長さ
      }

下ヒゲが2円以上ならロング
上ヒゲが2円以上ならショート

      if(buy_pinbar > 2)OrderSend(NULL    //通貨ペア
                                 ,OP_BUY  //買い
                                 ,0.01    //ロット数
                                 ,Ask     //注文価格
                                 ,3       //スリップページ
                                 ,Ask-2   //逆指値
                                 ,Ask+2   //指値
                                 ,"テスト"   //コメント
                                 ,999     //マジックナンバー(EA識別用)
                                 ,0       //注文の有効期限
                                 ,clrBlue);//チャート上の注文矢印の色。
                                  
      if(sell_pinbar > 2)OrderSend(NULL    //通貨ペア
                                  ,OP_SELL //売り
                                  ,0.01    //ロット数
                                  ,Bid     //注文価格
                                  ,3       //スリップページ
                                  ,Bid+2   //逆指値
                                  ,Bid-2   //指値
                                  ,"テスト"   //コメント
                                  ,999     //マジックナンバー(EA識別用)
                                  ,0       //注文の有効期限
                                  ,clrRed);//チャート上の注文矢印の色。

たったこれだけです。

これだけでピンバーロジックの完成?です。
※実際の稼働に耐えるには当然不十分ですが

ドル円での検証結果は以下

ちゃんと検証できました。

こういった、人が作成したロジックを自分用に弄っていけば、その内自力で作成できるようになります。

興味がある人はコンパイルして試してみるべし!!

コンパイルってなんぞや?って方はまた今度の機会に説明します。


この記事が気に入ったらサポートをしてみませんか?