前提・実現したいこと
mql4でEAを制作中です。二本の移動平均線が現在進行形でゴールデンクロス/デッドクロスが発生した際に、その現在進行形のクロスから一つ前のデッドクロス/ゴールデンクロス間の最低値/最高値の書き方を教えてください。
下記のソースコードは今書いている状態のもので、現在進行形でデッドクロスが発生、一つ前のゴールデンクロスまでの最高値の算出を記述しています。コンパイルには成功しますが、バックテストで全く機能しないので書き方自体に問題があるのではないかと考えています。
ご教授よろしくお願いいたします。
該当のソースコード
double FastSMA1=iMA(NULL,0,FastSMA_Period,0,MODE_SMA,PRICE_CLOSE,1); double FastSMA2=iMA(NULL,0,FastSMA_Period,0,MODE_SMA,PRICE_CLOSE,2); double SlowSMA1=iMA(NULL,0,SlowSMA_Period,0,MODE_SMA,PRICE_CLOSE,1); double SlowSMA2=iMA(NULL,0,SlowSMA_Period,0,MODE_SMA,PRICE_CLOSE,2); if(FastSMA2<SlowSMA2 && FastSMA1>SlowSMA1)//一つ前のゴールデンクロス { datetime K1=TimeLocal(); int BarK1=iBarShift(NULL,0,K1,false);//クロス時のバー位置の取得 if(FastSMA2>SlowSMA2 && FastSMA1<SlowSMA1)//現在進行形のデッドクロス { datetime K2=TimeLocal(); int BarK2=iBarShift(NULL,0,K2,false);//クロス時のバーの取得 int PeriodBar=BarK2-BarK1;//二つのクロス間のバー本数取得 double UPLine=High[iHighest(NULL,0,MODE_HIGH,PeriodBar,BarK2)];//最高値の算出 } }
試したこと
逆に現在進行形のクロスが発生した際に、そのクロスの一つ前までを算出してみようと挑みましたが、私の腕では太刀打ちできませんでした(笑)
補足情報
上記のソースコードは二つのクロス間のバーの本数が毎回変動してしまうので、iHighestのバーの本数が求められず、各クロス時のバーの値を取得した上でその差を求めれば解決できるのではないかと試したものです。
初めての質問でして色々と読みづらいとは思いますがよろしくお願いします。
あなたの回答
tips
プレビュー