【ZigZagBreakoutEA】ソースコードの修正について

MetaTrader4

Icon_ZigZagBreakout_source2_200x200.fw

ZigzagBreakoutEAって何だ!?という方は、下記のURLをご覧ください。

当ブログ人気記事「zigzagブレイクアウト」のEA販売開始です!

ソースコードの修正について

ZigZagBreakoutEAのソースコードに一部誤りがありました。(かなり前に発見されていたのですが…特に影響無いので今まで放置していました…)

問題の箇所はトレイリングの処理です。OP_BUY(ロングポジション)の場合のトレイリングで・・・

profit = Ask – openPrice;

このように書いているのですが、OP_BUYの場合、手仕舞いは「売り」になりますから価格はBidであるべきです。

profit = Bid – openPrice;

同様に、TrailingDistanceの計算も

newStopLoss = Ask – TrailingDistance * Point;

Askを参照するのは誤りで

newStopLoss = Bid – TrailingDistance * Point;

とするべきでしょう。

OP_SELL(ショートポジション)の場合は逆にAskを参照するべきです。

実はAutoOrderModifyProではこの不具合は修正済みでして…

ZigzagBreakoutEAは、修正前のAutoOrderModifyProのロジックを流用して作ったEAで…不具合を取り込んで開発してしまった…という次第です。

この不具合の影響

この不具合による影響はありません。修正した場合、トレイリングのパラメーターを変更する必要がでてくるだけです。

バックテストでスプレッド分、TrailingStopとTrailingDistanceから引けば同じ結果になります。(確認済み)

そこで、ZigzagBreakOutEAではこのままにしておきます。(すでに、多くの設定ファイルを作ってしまったため、すべて修正して再度バックテストするのはあまりにも手間ですし、結果が変わるわけでもないので…)

気になる方は修正しても良いですが、今後、こちらから公開する設定ファイルについても、ご自身で修正する必要がありますのでご注意ください。

ソースコードのダウンロード

ご購入時のメールから再度ダウンロードすると「修正内容がコメントに記載されたソースコード」がダウンロードされます。

profit = Ask – openPrice;
//正しくはこちらです(BUYの場合、手仕舞いはBidを参照するべき
//profit = Bid – openPrice;

ソースコードをコピーして再利用する場合には、上の行を削除して正しい行(例ではBidを使用している方)を生かしてください。(先頭の//を削除してください)

影響無いのでZigzagBreakoutEAはこのままいきますが、これから流用・開発される場合には正しい記述で開発した方が良いかと思いまして…このようにさせていただきました。

以上です。

コメント

タイトルとURLをコピーしました