システムトレード研究所 〜FXで完全自動売買〜

このサイトでは、FXで完全自動売買を行うために必要な情報を書いていこうと思っています。システムを自分で作りたい方、システムトレードをやってみたい方は御覧になっていって下さい。
<< 手仕舞いの仕方 | main | MACD関数の使い方 >>
ドテン売買の仕方
 本文に行く前に、新しいサービスを開始しましたので、お知らせをします。

 システムのオーダーメイドのサービスを始めました。

 以前から、有料でもいいからシステムを作ってほしいというメールが届いていましたので、今回試験的にサービスを実施してみました。

 興味がある方は、こちらを御覧下さい。


 さて、本文です。

 今回は、ドテン売買のシステムの説明です。

 サンプルプログラムはこちらです。

 http://jidoubaibai.com/Sample%20iMA3.mq4

 サンプルプログラムの使い方は、こちらで説明しています。

 
 では、MetaEditorを起動して下さい。

 NameはiMA3にして置いて下さい。

 内容はほとんど前回と同じです。

 仕掛けと手仕舞い後の処理が少し違っています。

 では、まとめて書きますね。


int start()
{
 //変数の宣言
 int cnt, CurrentPosition;
 int Ticket;
 double kakoa,gennzaia;
 double kakob,gennzaib;

 // オーダーチェック(ポジションなどのデータ)
 CurrentPosition=-1;
 for(cnt=0;cnt < OrdersTotal();cnt++){
  OrderSelect(cnt,SELECT_BY_POS);
  if(OrderSymbol() == Symbol()) CurrentPosition=cnt;
 }

 //一時間前の21日線
 kakoa = iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,1);
 //一時間前の90日線
 kakob = iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,1);

 //現在の21日線
 gennzaia = iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,0);
 //現在の90日線
 gennzaib = iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,0);


 // ポジションチェック ポジション無し
 if(CurrentPosition == -1)
 {
   //もし21日線が90日線を下から上にクロスしたら
   if( kakoa < kakob && gennzaia >= gennzaib)
   {
     //買いポジションを取る
     Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "Buy", 0, 0, Red);
   }

   //もし21日線が90日線を上から下にクロスしたら
   if( kakoa > kakob && gennzaia <= gennzaib)
   {
     //売りポジションを取る
     Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, 0, "Sell", 0, 0, Blue);
   }



 }
 // ポジション有り
 else
 {
    //ポジションの選択
   OrderSelect(Ticket,SELECT_BY_POS);

    //ポジションの確認
    if(OrderSymbol() == Symbol())
    {
    //もし買いポジションだったら
    if(OrderType()==OP_BUY)
    {
      //もし21日線が90日線を上から下にクロスしたら
      if( kakoa > kakob && gennzaia <= gennzaib)
      {
        //手仕舞い
        OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);

        //ドテンで売りポジションを取る
        Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, 0, "Sell", 0, 0, Blue);
      }
    }
    //もし売りポジションだったら
    else if(OrderType()==OP_SELL)
    {
      //もし21日線が90日線を下から上にクロスしたら
      if( kakoa < kakob && gennzaia >= gennzaib)
      {
        //手仕舞い
        OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);

        //ドテンで買いポジションを取る
        Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "Buy", 0, 0, Red);
      }
    }
   }

 }
  return(0);
}



 書けましたか?

 今回は、前回の応用みたいな感じなので、細かい説明は省きますね。

 変更点は、まず仕掛けに売りを追加しました。

 売りにする場合は、 OP_BUYを OP_SELLにして、AskをBidにして下さい。

 そして売りの手仕舞いを追加して、手仕舞いの後に、手仕舞いが売りなら買い、手仕舞いが買いなら売りのオーダーを追加しました。

 こうすることによってドテン売買をすることが出来ます。

 
 仕掛けに買いと売りの両方のオーダーが書いてあるから、いちいち手仕舞いの後に書かなくてもよいのでは?という疑問が浮かぶ人もいるかもしれませんが、手仕舞いのところに書かないとドテン売買出来ません。

 それは何故かというと、プログラムは基本的に上から下に命令を実行して行きますので、手仕舞いのところを通過すると、仕掛けのコードの方が上にありますので、仕掛けの命令は実行しません。

 仕掛けの命令を実行するのは、次の時間足になります。

 そして、次の時間足になった場合は、売買ルールの条件を満たしていませんので、オーダーは実行されません。

 例えば、買いの条件は移動平均の21日線が一つ前の足では90日線の下で、現在では90日線の上になっていることですが、次の時間足になった場合は、前回も現在も21日線のほうが上にありますので、オーダーが実行されません。

 プログラムはこういう細かいところを間違えるとシステムの内容が異なってきますので気をつけて下さい。


 これで、今回のプログラムは終了です。

 今回のシステムは移動平均の21日線と90日線のゴールデンクロスで買い、デッドクロスで売り、手仕舞いは仕掛けの逆のルールで行い、手仕舞いの後にドテン売買するというものです。

 では、コンパイルをするためにcompileのボタンを押してください。

 エラーが出てきた場合は、半角になっているか、;を付け忘れていないか、{}を付け忘れていないか、{}の数は合っているかを確認して下さい。

 どうしてもエラーが分からない場合は、サンプルプログラムを参照して下さい。

 エラーが出なかったら、MetaTrader4のバックテストでiMA3を選んで、スタートして下さい。

 終わったら、結果、Graph、レポートを見てください。



iMA3 レポート ドル円日足




iMA3 グラフ ドル円日足


 

 今回はこれで終了です。

 次回はMACD関数の説明です。


 
 

 

 宜しかったら、応援して下さい



システムトレード研究所〜FXで完全自動売買〜INDEXへ


----------------------注意----------------------
 このブログは半角のスペースが認識されない為、コードを見易くするために全角で書いている場合があります。
 実際にプログラムにコードを書くときは、コピー&ペーストせずに半角で書いて行って下さい。
| 小松 | MetaTrader4 プログラム初級編 | 21:39 | comments(2) | - |
はじめまして!
サラ・リーマンブラザーズと申します。

私は先物でシストレしてますが、為替の世界でも同じなんですね。

非常に興味深いサイトなので、また訪問させてもらいますね。

ブログランキングクリックしときました♪

| サラ・リーマンブラザーズ | 2007/04/07 10:18 PM |
 初めまして、管理人のDCです。

 今は為替だけですが、先物のシストレもいつかはやってみたいですね。

 これからも宜しくお願いします。
| DC | 2007/04/07 10:25 PM |









    123
45678910
11121314151617
18192021222324
252627282930 
<< June 2017 >>



このページの先頭へ