MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 855

 
皆さん、こんにちは。私はプログラマーとしてあまり優秀ではないので、簡単なことがわからない。私のEAでクローズした注文の中から、SLによってクローズされた最後のものを選択しなければならないのです。
 
Igor Makanu:

単純な作業を複雑にすることはできないのです...と、新しいバー 定義機能を無造作にクラスでラップしたMeが言った ))))

をポイントに。


発想は明快だが、より正しい >= どう考えても

if((timer1++)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((timer2++)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
leonerd:

アイデアは明確であり、より正しいだけである >= すべての可能性において

チェックしていない、すぐに1エラーで、その後、いずれかのバージョン、またはゼロにしないと、カウンタタイマ1とタイマ2に値= 1を割り当てるかどうかを確認する変数をアンプリント

をオプションで追加すれば、そちらもお試しいただけます。


if((++timer1)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((++timer2)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
Igor Makanu:

チェックしていない、すぐに1エラーで、その後、いずれかのバージョンまたはゼロにしないかどうかを確認し、カウンタタイマ1とタイマ2に値= 1を割り当てる変数をアンピンしない

しかし、この方法は確かに与えられた周期性を保証するものではありません。一方のタイマーのコード実行が他方のタイマーの時間を超える場合があります。

 
leonerd:

しかし、この方法は確かに与えられた周期性を保証するものではありません。あるタイマーのコード実行が他のタイマーの時間を超える場合があります。

Windowsシステムで保証されたリアルタイムタイマーはどこで手に入るのですか?- システムに負荷がかかると、遅延が発生します。

MQLでは - 複雑な計算でOnTick()をオーバーロードした場合、それが実行されるまではOnTimer()イベントは発生しません。

すなわち、複雑な計算にはMT4でも十分で、そうでなければMT5 - それは本当にC++のレベルで動作しますが、パフォーマンスの欠如は、通常、悪い計算アルゴリズムに関連しています -プロファイラを 使用して、新しいバーが表示されるまで計算するものがないすべてのティックで計算をしない、全体の歴史を計算しない、あなたが最後の1〜3バーで信号を使用する場合 - 100バーだけを計算する...千差万別

HH: グラフィカル・オブジェクトを扱うとすべてが遅くなり、文字列を扱うとパフォーマンスも低下します - 理論的には、しかし最近は気づいていません。時間変換関数を扱うように - プロファイラーで見ると、多くの時間が費やされていることがはっきりとわかります - このコード断片をあまり使わないようにしています。

Профилирование кода - Разработка программ - MetaTrader 5
Профилирование кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...
 
Igor Makanu:

とか、Windowsシステムでリアルタイムタイマーを保証してくれるところは?- システムに負荷がかかると、遅延が発生します。

MQLでも同じで、OnTick()で複雑な計算をロードした場合、それが実行されるまでOnTimer()イベントは起こりません。

つまり、複雑な計算にはMT4でも十分で、そうでない場合はMT5 - それは本当にC++のレベルで動作しますが、パフォーマンスの欠如は通常、悪い計算アルゴリズムに関連しています -プロファイラを 使用し、新しいバーが表示されるまで計算するものがないすべてのティックで計算をしない、全体の履歴を計算しない、あなたが最後の1〜3バーで信号を使用する場合 - 100バーだけを計算する...千差万別

HH: グラフィカルなオブジェクトを扱うとすべてが遅くなり、文字列を扱うとパフォーマンスが低下します。理論上はそうですが、最近はそのことに気づいていません。

同意見、標準タイマーも何も保証しない。ありがとう、試してみるよ。

 

こんにちは、親愛なる皆さん

MKL4で、あるシンボルのポジションを開く ときに、別のシンボルのポジションも開くように設定することは可能かどうか教えてください。もしかしたら、そのような質問はすでに議論されているかもしれませんので、その時はリンクを教えてください。

ありがとうございます。

 
novichok2018:

こんにちは、親愛なる皆さん

MKL4で、あるシンボルのポジションを開く ときに、別のシンボルのポジションも開くように設定することは可能かどうか教えてください。もしかしたら、そのような質問はすでに議論されているかもしれませんので、その時はリンクを教えてください。

ありがとうございます。

質問が十分に定式化されていない。
しかし、一般的には - できます。しかし、同時ではなく、どちらかのケースで順次行っています。
 
Artyom Trishkin:
質問が完全に定式化されていない。
しかし、一般的には可能です。しかし、同時にではなく、どちらかのケースで連続的に。

それは素晴らしいことです。コードにどのように記述すればよいのでしょうか?例えば、条件が揃い、9時にGBPの買いポジションを建てた場合、EURの買いポジションも(9時に)建てるのです。

 
novichok2018:

素晴らしい。コードにどのように記述すればよいのでしょうか?例えば、9:00にポンドに買いが入った場合、ユーロにも買いが入る(9:00)。

どうやって開けたの?開店の理由は何ですか?