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

このサイトでは、FXで完全自動売買を行うために必要な情報を書いていこうと思っています。システムを自分で作りたい方、システムトレードをやってみたい方は御覧になっていって下さい。
<< パラメーターを変更する方法 | main | 複利システムの作り方 >>
ブレイクアウトシステムの作り方
 今週の土曜日に小学校時代の同窓会があったので、行ってきました。

 今まで色んな人に会って、色んな友人が出来ましたけど、昔からお互いを知っている友人というのはやはり良いものですね。

 まあ、昔のことを知られているのは、あまり思い出したくないことも知られているということでもありますが(苦笑)

 そんなことを笑い話にしながら、色々と昔話に華を咲かせながら楽しい時間を過ごしました。



 さて、本文です。

 今回はブレイクアウトシステムの作り方です。

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

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

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

 http://jidoubaibai.com/burogu11.html



 ブレイクアウトというのは、過去n時間足の高値を更新すると買い、過去n時間足の安値を更新すると売りという手法です。

 手仕舞いは、仕掛けの時のnの数を減らして、逆のルールで決済します。

 買いなら、過去n時間足の安値を更新すると手仕舞いです。

 例を出すと、過去40日間の高値を更新すると買い、過去20日間の安値を更新すると買いポジションを決済、過去40日間の安値を更新すると売り、過去20日間の高値を更新すると売りポジションを決済するという風になります。


 プログラムにすると次のようになります。


/*-------------------------------------------------------------------
変数名  TBreak
引数  count 何本文の時間足を調べるか?

概要
過去n本文の時間足の最高値、もしくは最安値が更新したら条件成立。

戻り値 1なら買いの条件 2なら売りの条件 0は条件不成立
-------------------------------------------------------------------*/
int TBreak(int count)
{
   int i;
   double max,min;
   
   //変数maxに一つ前の時間足の高値のデータ入れる
   max = High[1];
   //変数minに一つ前の時間足の底値のデータ入れる
   min = Low[1];
   
   
   //引数に入れた数だけループする
   for(i=1 ; i < count ; i++ )
   {
     //もし変数maxに入っているレートより、i本分前の時間足の高値のほうが高かったら
     if(max < High[i])
     {
         //変数maxにi本分前の時間足の高値のレートを入れる
         max = High[i]; 
     }
   
     //もし変数minに入っているレートより、i本分前の時間足の底値のほうが低かったら
     if(min > Low[i] )
     {
         //変数minにi本分前の時間足の底値のレートを入れる
         min = Low[i];
     }
   }

   //もし過去n本分の時間足の高値より、現在の終値の方が高かったら
   if(max < Close[0]) return( 1 );
   
   //もし過去n本分の時間足の底値より、現在の終値の方が低かったら
   if(min > Close[0]) return( 2 );

   return( 0 );
}


 このコードはサンプルプログラムの中で使っているブレイクアウトを判定するオリジナル関数の中身です。

 まず、変数maxに一つ前の時間足の高値、もう一つの変数minに一つ前の時間足の安値を入れます。

 次に、For文でn回分ループさせます。

 この時、iの値がループする度に変わりますので、ループが終了するまでi時間前の時間足の高値と変数maxのレートを比べて、i時間前の時間足のほうが高かったら、変数maxにi時間前の時間足の高値を入れます。

 変数minも逆のルールで同じことをします。

 ループが終わると、変数maxに過去n本文の時間足の中で(ただし、現在の足は含めない)一番高いレートが入っています。

 変数minには、過去n本文の時間足の中で(ただし、現在の足は含めない)一番低いレートが入っています。

 そして最後に、変数maxと現在の終値の足を比べて、現在の終値の方が高ければ買い条件が成立しますので、return(1)を戻り値として返します。

 変数minと現在の終値の足を比べて、現在の終値の方が低ければ売り条件が成立しますので、return(2)を戻り値として返します。

 両方成立しなければ、条件不成立ですので、return(0)を戻り値として返します。



 これで、ブレイクアウトシステムの判定は完成です。

 後はいつも通り判定を使って仕掛けと手仕舞いを作るだけです。


 ブレイクアウトのシステムの説明はおそらく少し分かり辛かったと思います。

 簡単にこのシステムを説明すると、数日間の高値を調べて現在の終値の方が高ければ買い、数日間の安値を調べて現在の終値の方が安ければ売りというシステムです。


 今回はこれで終了です。


 まだ、ブログの内容のリクエストは受け付けていますので、何か希望する内容があるかたは下のアドレスの感想フォームに書いてください。

 http://jidoubaibai.com/kannsou.html

 お待ちしています。


 

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



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


----------------------注意----------------------
 このブログは半角のスペースが認識されない為、コードを見易くするために全角で書いている場合があります。
 実際にプログラムにコードを書くときは、コピー&ペーストせずに半角で書いて行って下さい。

 また、内容には注意を払っていますが、保障は出来ません。
 実際に運用する場合は、自己責任でお願いします。 
| 小松 | MetaTrader4 プログラム中級編 | 18:30 | comments(0) | - |









      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< September 2018 >>



このページの先頭へ