初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 623

 
-Aleks-:
いいえ、テスターでは必要ないのですが、ターミナルが実際にチャート上で動作する場合、履歴に含まれるバーの 数が 最大値より少ない場合にのみ動作するのですが、間違っていますか?

また、リアルタイムでrates_totalとBars()は、インジケータが動作しているときにインクリメントされます。OnInit()では、パラメータが関数に渡されないので、rates_totalを取得することはできません。いずれにせよOnCalculate()で履歴を確認する必要があります。

 
皆さんこんにちは!Expert Advisorを探すのを手伝ってください。セッションタイムの設定、各方向に3つの注文に分割、トレーリングとストップロスの 機能を持ったボックス(箱)が必要です。私はすでにオープンスペースでの検索に溺れました。もう少しで崖っぷちです!もう少しで、自分で書くための言語とエディターの勉強を始めます!!!!HELP!!!
 
Alexey Kozitsyn:

また、リアルタイムでrates_totalとBars()は、インジケータが動作しているときに増加します。OnInit()では、パラメータが関数に渡されないため、rates_totalを取得することはできません。履歴の確認は、いずれにしてもOnCalculate()の中で行う必要があります。

つまり、インジケータを作り、そこでバーの本数を チェックし、問題なければチャートバッファを1本で埋め、インジケータから1本出るまでEAで待ち、その時だけ作業を続ければいいのですよね?
 
-Aleks-:
つまり、別途インジケータを作り、そこでバーの本数を チェックし、問題なければチャートバッファを1本で埋め、インジケータから1本取得するまでEAで待機し、その後のみ作業を継続する必要がありますよね?
もちろん、そんなことはないのですが...。なぜ、こんなにも複雑なのか...。もう一度、確認しましょう。目的は何ですか?全履歴を計算に利用できるようにするため?
 
Alexey Kozitsyn:
もちろん、そんなことはないのですが...。なぜそんなに複雑にするのか...。もう1度、やり直そう。目標は何ですか?計算可能なすべての履歴を取得するため?

EAが正しく動作するためには、一度履歴を計算する必要があるという状況です。そのため、このEAを搭載した端末の電源を入れると履歴があり、それに従って初期化・計算が行われるのですが、この履歴が全てではない場合があり、端末に接続すると新しい履歴が読み込まれる、ということが起こります。

端末との接続をトレースして、HLCOの最後のバーの変化を確認し、利用可能であれば待ち、x秒以内に利用不可能であれば計算を実行すればよいかと思います。

 
-Aleks-:

EAが正しく動作するためには、一度履歴を計算する必要があるという状況です。そのため、このEAを搭載した端末の電源を入れると、履歴があり、それに従って初期化や計算が行われるのですが、この履歴が全てではない場合があり、端末に接続すると新しい履歴が読み込まれる、ということが起こります。

端末との接続をトレースして、HLCOで最後のバーの変化を確認し、利用可能であれば待つが、x秒以内に利用できない場合は計算を実行すればよいと思う。

Expert Advisorはカスタムインジケータを使用していますか?

例えば、次のようなことができます。Bars()を使って履歴の大きさを確認します。次に、Bars() > prev_bars+1 (前のティックのヒストリのサイズ)であるかどうかを確認します - 次に、保存されたデータをすべてリセットして、Expert Advisorをゼロから完全に再計算します。この構文は、OnTick()の中に最初に挿入する必要があります。

端末との接続、一時停止などの煩わしさがない。最もシンプルなオプションがベストであることが多い。

 
Alexey Kozitsyn:

Expert Advisorはカスタムインジケータを使用していますか?

例えば、次のようなことができます。Bars()を使って履歴のサイズを確認します。次に、Bars() > prev_bars+1 (前のティックのヒストリのサイズ)であるかどうかを確認します - 次に、保存されたデータをすべてリセットして、Expert Advisorをゼロから完全に再計算します。この構文は、OnTick()の中に最初に挿入する必要があります。

端末との接続、一時停止などの煩わしさがない。最もシンプルなバリエーションがベストであることがほとんどです。

Expert Advisorは、インジケータを含め、多くのものを使用します。

私は、提案されたバリアントがすべてのバーで再計算されることを理解していますが、間違っていますか?

 
-Aleks-:

Expert Advisorは、インジケータを含め、多くのものを使用します。

このバリアントは、すべてのバーで再計算されると理解していますが、間違っていますか?

いいえ、なぜすべてのバーで?Expert Advisorは、履歴に1本以上のバーが追加された場合のみ、完全に再計算されます!1本追加された場合(新しいバーが形成された場合)、完全な再計算は行われません。

インジケータを使用し、それらがグローバル変数を持って いる場合、それらを最初に実行するときにゼロにする必要があります。そうでない場合、チャートにアーチファクトが表示されたり、インジケータが正しく表示されないことがあります。

 
Alexey Kozitsyn:

いいえ、なぜそれぞれで?EAの完全な再計算は、ストーリーに1本以上の小節が追加された場合にのみ行われます1本追加された場合(新しいバーが形成された場合)、完全な再計算は行われません。

インジケータを使用し、それらがグローバル変数を持って いる場合、それらを最初に実行するときにゼロにする必要があります。そうでない場合、チャートにアーチファクトが表示されたり、インジケータが正しく表示されないことがあります。

1に注目していませんでした 、ありがとうございます、悪い選択肢ではないと思います。
 
なぜこのようなことが起こるのか、教えてください。

ダブルA
int x, y;

x=100; y=3; A=x/y=33,000
理由: