MT4のEAで15分足の終値が20本前の高値を抜いてきたら買い、安値を抜いてきたら売り…

というシグナルを作成中なのですが、売りのみ安値を抜いていないのに売りエントリーしてしまいます。

見る限りおかしいところはなさそうなのですが。
わかるかた教えてください。
よろしくお願いします。

//15分足の終値が20本前の高値を抜いてきたら買い
iHighest(Symbol(), PERIOD_M15, MODE_HIGH, 20, 1) < iClose(Symbol(),PERIOD_M15,1)

//15分足の終値が20本前の安値を抜いてきたら売り
iLowest(Symbol(), PERIOD_M15, MODE_LOW, 20, 1) > iClose(Symbol(),PERIOD_M15,1)

回答1

iHighestとiLowestは価格情報を返しません。

返してくるのは足番号です。

ですので、取得した足番号を使用してiHigh() と iLow() を使って価格を取得する必要があります。

iHighest
http://yukifx.web.fc2.com/sub/reference/14_timeseries/cone/timeind_…

iLowest
http://yukifx.web.fc2.com/sub/reference/14_timeseries/cone/timeind_…

回答2

見る限りおかしいところはなさそうですが、それ以前にロジックがおかしいかな?
iHighest(Symbol(), PERIOD_M15, MODE_HIGH, 20, 1)
は1本前から20本前までの高値の最高値を求めます。
iClose(Symbol(),PERIOD_M15,1)
は1本前の終値ですから、
iHighest(Symbol(), PERIOD_M15, MODE_HIGH, 20, 1) < iClose(Symbol(),PERIOD_M15,1)
が成立すれば、1本前の終値>1本前から20本前までの高値となり、1本前の終値>1本前から20本前までの高値≧1本前の高値となるので、
iHighest(Symbol(), PERIOD_M15, MODE_HIGH, 20, 1) < iClose(Symbol(),PERIOD_M15,1)
は絶対に成立しない条件式になります。

Lowest(Symbol(), PERIOD_M15, MODE_LOW, 20, 1) > iClose(Symbol(),PERIOD_M15,1)についても同様です。

これで発注してしまうのは、if文の構造とかほかに問題があると思います。


回答3

考えられるのは、スプレッドの絡みではないでしょうか?


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA