ちょっとしたミスを発見する手助けが必要です。 - ページ 3

 

長い && と || の条件、私は多くの連鎖した if 文に部分を分解しました。また、OrderClosePrice() の代わりに MarketInfo(OrderSymbol() , MODE_ASK/BID) を使ってみました。

この部分はまだ時々動作し、すべての時間ではありません、私はまた、あなたが私に与えたそれらの提案を試してみましたが、それはまだ同じに終わった。

私はそれが問題であるこの原因であるか、またはそれは何か他のものであるかどうかわからない。しかし、これらの試行錯誤のうち、これは私が気づいたことです。

このような条件(長い && と || 条件と、多くの連鎖した if 文、私は両方を試しました)が満たされても、開いた注文の一番下の部分は、ストップロスを動かそうとしなかったようです。

EAの設定。

アカウント1変更前


アカウント1後

この口座1では、1番目と2番目の注文は if 条件/if + && と || 条件を満たしていないため、ストップロスは移動しません(これは正しい)。

しかし、3回目の注文はすでに条件を満たしており、10回目までトレールするはずですが、ストップロスは1回しか移動していません。( 間違えた)

本来ならもっと動くはずです(私の計算では5.0pipsではなく50.0pipsになるはずです)。

アカウント2前

アカウント2 変更後

この口座2では、1番目の注文だけが条件を満たさなかったので、ストップロスは移動されません(これは正しい)。2番目と3番目の注文は条件を満たしており、ここが奇妙なところです。

2番目の注文は10回目まで正確にトレールし、ストップロスは正確に10回動かされました。ストップロスはその注文のオープン価格から50.0ピップスに移動しました(これは正しいです)。

しかし、3番目の注文も条件を満たしており、3番目の注文までトレールするはずですが、やはりストップロスは1回しか動かされていません。 ( また間違っている :())

トレーリングがうまくいかない口座は、どちらも最終注文のところだということにお気づきでしょうか?

USDJPYが動けば、他のペアにも適用できるはずです。私はそれで何をすべきかわからない。

私は、私はRaptorUKは良いはずですが教えた場所を読んだループのためのカウントバックを使用しています。逆方向のカウントも問題ないはずです。

エキスパートタブでもエラーは出ませんでした.

って感じです。

 
1回目のトレールの後、価格がリトレースしてストップアウトしなかったのは確かですか?
 
申し訳ありませんが、私はあなたが何を意味するのか本当に理解していない...どの価格を指しているのでしょうか?1stトレールの後に停止させる?
 
なるほど、最初は取引結果を正しく読んでいなかったんですね。
 
SDC:
なるほど、最初は取引結果を正しく読んでいなかったんですね。
何が間違っているのか、まだ全然わからないんです。どこが間違っていたのか、何か心当たりはありますか?
 
      if ( ( OrderStopLoss() == 0 ) || (OrderStopLoss() != 0 && OrderStopLoss() <= OrderOpenPrice() ) || ( OrderStopLoss() < ( OrderOpenPrice() + ( TrailingStop * Figure ) ) ) )
                              {
 

試してみましたが、やはり同じでした...。

何度も試してみましたが、やはり最後の注文が正しく修正されませんでした.カウントダウンのループがこの問題を引き起こすのでしょうか? 私はそうは思わないのですが、なぜ正しく動作しないのかがわかりません.

 

juniorlcq:

カウントダウンのループが原因?


カウントアップ、カウントダウンは関係ありません(トレイリングストップロス)

トレードを削除または決済する場合は、カウントダウンを行う必要があります。

 

私はあまりにも上にカウントしようとしましたが、同じ問題はまだ。

これは、 2番目のループは、すでに注文を変更し、私は再び選択していたのですか?

最初に私は、順序を選択し、2番目のループのための条件は、その順序を変更した。私は再び再選択する必要がありますか?

 

オーダーセレクト

OrderSelect()関数は、注文データをプログラム環境にコピーし、それ以降のOrderClosePrice(),OrderCloseTime(),OrderComment(),OrderCommission(),OrderExpiration(),OrderLots(),OrderMagicNumber() のすべてのコールを実行します。OrderOpenPrice(),OrderOpenTime(),OrderPrint(),OrderProfit(),OrderStopLoss(),OrderSwap(),OrderSymbol(),OrderTakeProfit(),OrderTicket(),OrderType() 関数は以前にコピーしたデータを返送します。つまり、場合によっては、注文の詳細(オープンプライス、SL/TPレベル、有効期限)が変更され、データが非現実的になる可能性があります。注文データを要求する前に、OrderSelect()関数を呼び出すことを強くお勧めします。

理由: