新型MQL4で台無しになった小額紙幣管理-Indicator - ページ 3

 
mar:

angevoyageurさん、私からのこの投稿はご覧になっていないようですね。

mar 2014.04.02 08:16#

おっしゃる通りです...。避けることはできませんね :-)

"私が言いたかったのは、アップデートが完了するまで待ってからSL-calculationに進むことは可能でしょうか?問題は、SLにランダムな値を与えることができないことです、そうするとインジケータ全体が無駄になってしまいます。そこで、エラー4066が発生しないかどうか確認し、発生した場合は何とか待って再度確認してから先に進みたいのです。"

そこで、私がアドバイスに従えないことを記述し、その解決策にたどり着いたので、qjolさんがアドバイスしたことを間違いなくチェックしたこともわかります。

いや、そうじゃないでしょう、qjolさんが書いている:

というわけで、ゼロ除算を避けるために、変数の1つが0になるかどうかをチェックする必要があります。

そして、その後にゼロ除算の エラーを報告するのですね。しかし、それはあなたが望むとおりです。

 
mar:

もう一つの例。

MetaTraderを開くと、結果はゼロになります!そしてそれは、タイムフレームやペアを変更するまでゼロのままです。これはまさにゼロによる除算エラーの問題だと思います。皆さんもそう思いませんか?

週末、ティックの入力がないときに試されましたか?コメントが更新されない理由はそれしか思いつきません。
 
GumRai:

週末、受信ティックがないときに試されましたか?コメントが更新されない理由はそれしか思いつきません。

こちらも同じです。ティックなし更新なし。
 

いや、今日やってみたんですよ。ティックがたくさん入ってきて、AccountBalanceが更新されない。1分近く待っても、AccountBalanceはゼロのままでした。


この問題は、過去数年間は一度も発生しませんでした。新しいMetaTraderがロールアウトされて以来、この問題は存在します。だから、私はそれがコードとは何の関係もないと思っています。プラットフォーム自体に内部的な変更があり、それがこのコードを失敗させる原因になっているのでしょう。そして、このインジケータはたった1つのコメントラインであり、それは失敗します。だから、それはプラットフォーム/データの問題である必要があります。

 
mar:

いや、今日やってみたんですよ。ティックがたくさん入ってきて、AccountBalanceが更新されない。1分近く待ちましたが、AccountBalanceはゼロのままでした。


この問題は、過去数年間は一度も発生しませんでした。新しいMetaTraderがロールアウトされて以来、この問題は存在します。だから、私はそれがコードとは何の関係もないと思っています。プラットフォーム自体に内部的な変更があり、それがこのコードを失敗させる原因になっているのでしょう。そして、このインジケータはたった1つのコメントラインであり、それは失敗します。だから、それはプラットフォーム/データの問題である必要があります。


インジケータは投稿されたコードと全く同じものですか?

initに1行のコードがあり、startにないインジケータをチェックして いるように思えます。

 

私はすでにあなたの質問(この問題に関する今後の質問も含む)にすべて答えましたが、たぶんあなたはそれを注意深く読んでいないようなので、もう一度答えましょう。


qjol:

明らかに更新を避けることはできませんが、"ゼロ除算 "の状況は避けなければなりません。

そのため、変数のいずれかが0に等しいかどうかをチェックする必要があります...ゼロ除算を避けるために場合

そして、インジケータを止めることはできないので、何かを考えなければなりません。


mar:


更新が完了するまで待ってからSL計算を行うことはできますか?

ノーユーキャント(上に書いたとおり)

qjol:
そして、インジケータを止める ことができないので、何かを考えなければなりません。


mar:


問題は、SLにランダムな値を与えることができないことです。


私はすでにあなたに解決策を与えた

SL = MathFloor((iATR(NULL, PERIOD_D1, 7, 0)*MathPow(10,Digits-exp)+1)*0.1);
if (SL == 0) // because error 4066 (for example)
   {
   SL = Someting;
   }
lots=MoneyRisk/SL/(MarketInfo(Symbol(), MODE_TICKVALUE)*multi);


更新が終わるまで(2-3秒以内)ランダムです(IMHOでは、エラーメッセージが表示され、インジケータが全く動作しなくなるよりはましだと考えています)。

もし、他の解決策があれば、自由に使ってください。私の許可は必要ありません;-)


mar:


D1以外の好きなタイムフレームに切り替えてください。そして、インジケータをチャートにドラッグしてください。その結果、上記のようなエラーになります。DAILY DATAが欠落しているため、日足チャートのATR(5)が正しく表示されないようです。D1タイムフレームで「フレッシュ」なチャートを開くと、全く問題がありません。そして、他のタイムフレームに切り替えたときも、ATR(5)が正しいので問題ありません。D1チャートにいる限り、どのペアに切り替えてもいいことに気づきました。しかし、D1 以外のタイムフレームで他のペアに切り替えると、MetaTrader が日足データを受け取っていない限り、問題が発生します。 そこで質問ですが、D1 以外のタイムフレームで新しいチャートを開くときに、ATR 計算が正しいという日足データをどのようにして取得できますか?


あなたはiATRを使用しているため... PERIOD_D1と再び...あなたは、更新を完了するために毎日のペアを待つ必要があります(あなたがダイヤルアップ接続を使用していない限り、2〜3秒)。

 

qjolさん、いろいろと誤解を与えてしまい申し訳ありません。ゼロによる除算が なくなるからという理由だけで、インジケータにランダムなデータを与えろと言われたことが理解できました。また、データ更新後にインジケータが正しい値を使用することについては考えていませんでした。バカでごめんなさい... :D

しかし、それでも疑問は残ります:なぜ以前はうまくいっていたのか?新しいMetaTraderに何か問題があるのでしょうか?

 
mar:


しかし、それにもかかわらず、疑問はまだ残っています:なぜ以前はうまくいっていたのか?新しいMetaTraderのどこが問題なのでしょうか?


新旧のMT4に関係なく、指標の動作と実行方法に関係することです。
指標は「待つことができない」ので、すぐに実行されました。
しかし、この時点では、iATRのデータがありません....PERIOD_D1 だから、0に等しい。
だから、ゼロ除算に なる
 
それは、私にとって絶対的に明確なことです。でも、このインジケータはかなり長い間使っていて、データの欠落とかそういうデータ的な問題は一度もなかったんです。なのに、なぜMT4のbuild-625版を初めて使ったときにこうなったのか不思議です。
 
mar:

いや、今日やってみたんですよ。ティックがたくさん入ってきて、AccountBalanceが更新されない。1分近く待っても、AccountBalanceはゼロのままでした。


この問題は、過去数年間は一度も発生しませんでした。新しいMetaTraderがロールアウトされて以来、この問題は存在します。だから、私はそれがコードとは何の関係もないと思います。プラットフォーム自体に内部的な変更があり、それがこのコードを失敗させる原因になっているのでしょう。そして、このインジケータはたった1つのコメントラインであり、それは失敗します。だから、それはプラットフォーム/データの問題である必要があります。

インジケータは投稿されたコードと全く同じものですか?

initに1行のコードがあり、startにないインジケータをチェックして いるように思えます。