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

 
Valeriy Yastremskiy #:

ちょっと理屈がわからない。複数のシンボルのポジションオープン、SL修正、ポジションクローズのイベントを監視します。ポジションオープン - 与えられたシンボルのウィンドウが開いているかどうかを検索し(ウィンドウIDを探す)、開いていれば、レベルを描き、そしてSLトロールを監視します。そうでない場合は、必要なシンボルとタイムフレームでウィンドウを開き、レベルを描画するか、ウィンドウを開かないかのどちらかになります。修正のイベントは、必要なシンボルウィンドウを見つけ、レベルはすでに描かれており、レベルの色を変更したり、削除して再度レベルを描画します。

一般的に、クライアントの影響を排除するために、作業の開始時に我々は、ポジションと窓を分析し、オープンポジションとオープンウィンドウではないシンボルのために窓を開く必要があります。

この中で重要なのは、トロールのアルゴリズム、つまり取引操作そのものが正しく機能することです。

描画はバックグラウンドで行われ、情報提供であり、システムの収益性とは関係がない。

したがって、ポジションがあってもチャートが閉じていて、勝手に閉じなかった場合は、何も開く必要はなく、トロールアルゴリズムが働き、ストップが移動することになります。もっとひどいのは、チャートが明らかに閉じているのに、プログラムがチャート描画のために文字通り再び開いてしまった場合です - これはもう最悪です。

 

同僚 - 最適化キャッシュファイルをクラウドにエクスポートしましたが、それを別のコンピュータで使用して入札用のバリアントを選択するにはどうすればよいですか?


回答

必要な方がいらっしゃれば-こちら


Оптимизация стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Оптимизация стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии ( советники ) перед началом использования их в реальной торговле. При...
 
Vitaly Muzichenko #:

この中で重要なのは、適切に動作するトローリングアルゴリズム、つまりトレードそのものです。

描画はバックグラウンドで行われ、情報提供であり、システムの収益性とは関係がない。

したがって、ポジションがあってもチャートが閉じていて、勝手に閉じなかった場合は、何も開く必要はなく、トロールアルゴリズムが働き、ストップが移動することになります。もっとひどいのは、チャートを閉じたのに、プログラムが文字通りチャートを再び開いて描画しているときで、これはひどい。

そういうやり方もあるんだ。しかし、この場合、イベントに基づくオープンチャートがあれば、それを描画することができます。一般的には、混乱を避けるために、毎回レベルを再描画することができます。そのためのデータはすべて揃っています。トロールのトリガーレベル、トロールのステップ、ポジションの価格。ポジションのレベル番号とトリガーレベル数は簡単に計算できます。

 
Valeriy Yastremskiy #:

これも可能です。しかし、その後にイベントのオープンチャートがあるかどうかを抽選するのです。一般に、レベルは混乱を避けるために、毎回描き直すことができます。そのためのデータはすべて揃っています。トロールのトリガーレベル、トロールステップ、ポジション価格。ポジションのレベル番号とトリガーレベル数を簡単に計算することができます。

ポジションがあれば、トロールのきっかけとなるレベルをあらかじめ描いておくということですね。追加のポジションが現れたら、新しいレベルまで線を引き直して前進します。

パス/モディファイ後に色を変更する意味がわからない。ポジションを閉じた後、すべての行を削除することができます。

例では、どうあるべきかを示しました。

ポジションを開くオブジェクトがここに描かれているのは、単なる情報提供です。


---

追伸:今のところ、残念ながら計算することはできません。

 

OnTimerについて質問です。

プログラム実行 前にタイマーイベントが発生した場合、待機するのか(プログラムはタイマーイベントをスキップする)、それともプログラムは中断し、新しいタイマーイベントで作業を開始するのか?無限ループでぶら下がるのか、それとも1秒ごとにまたループするのか。

int OnInit()
{
 EventSetTimer(1);
      
    }
//---
  return(INIT_SUCCEEDED);
}

void OnTimer()
{
  
  int i=0;
  while(i<1) {
   
  }
}

タイマーのイベントの優先順位とプログラムのコースについては、ドキュメントには直接的な指示はなく、イベントの順番についてのみ記載されています。

それとも、私が正しく理解していないのでしょうか。アクションが開始されたタイマーイベントは、キューにカウントされるのですか?

ドック

イベントセットタイマー

各番組で起動できるタイマーイベントは1つまでとします。各mql4-programと各グラフは独自のイベントキューを持ち、そこに新しく到着したすべてのイベントが保存されます。キューに既にTimer イベントがある場合、またはこのイベントが処理中である場合、新しいTimerイベントはmql4-programのキューに入れられない。


 
Valeriy Yastremskiy プログラム実行 前にタイマーイベントが発生した場合、待機するのか(プログラムはタイマーイベントをスキップする)、それともプログラムは中断し、新しいタイマーイベントで作業を開始するのか?無限ループでぶら下がるのか、それとも1秒ごとにまたループするのか。

タイマーのイベントの優先順位とプログラムのコースについては、ドキュメントには直接的な指示はなく、イベントの順番についてのみ記載されています。

それとも、私が正しく理解していないのでしょうか。アクションが開始されたタイマーイベントは、キューにカウントされるのですか?

ドック

イベントセットタイマー

各番組で起動できるタイマーイベントは1つまでとします。各mql4-programと各グラフは独自のイベントキューを持ち、そこに新しく到着したすべてのイベントが保存されます。Timer キューに既にイベントがある場合、またはこのイベントが処理中の場合、新しいTimerイベントはmql4-programのキューに入れられない。


イベントは時間ではありません。これらはOnXXXの中で、機能を中断することなく一つ一つ処理されます。

OnInitが終了するまでは、他のOnTimerハンドラOnTickはterminalから呼ばれることはありません。(機能として自分でヤルなら別ですが)。

 
Maxim Kuznetsov #:

イベントは中断ではありません。テキスト機能を中断することなく、OnXXXで1つずつ処理されます。

OnInitが終了するまでは、他のOnTimer OnTickハンドラはターミナルから呼び出されることはありません。(機能として自分でヤルなら別ですが)。

ありがとうございました)

 
Vitaly Muzichenko #:

この中で重要なのは、適切に動作するトローリングアルゴリズム、つまりトレードそのものです。

描画はバックグラウンドで行われ、情報提供であり、システムの収益性とは関係がない。

したがって、ポジションがあってもチャートが閉じていて、勝手に閉じなかった場合は、何も開く必要はなく、トロールアルゴリズムが働き、ストップが移動することになります。もっとひどいのは、チャートを閉じたのに、プログラムが文字通りチャートを描くために再び開いてしまった場合だ--これはまずい。

なんてことだ - なぜ洗車場に行かされたんだ?zやv...など、場所や変数を間違えて書いていませんか?

 
こんにちは!誰かがあまりにも困難ではない場合、私はMT4のEAのための関数を書くか、または助けてください。私が手動でオープンポジションや成行注文を変更した場合、EAが電子メールにメッセージを送信するというものです。例えば、指値注文のストップロスを移動させた場合、EAは「その注文のストップロスが○○から○○に変更されました」というメールを出します。
 
Vitaly Muzichenko #:


うまくいきそうな気がします。テストしていない。

描画ロジック。私はレベルをコントロールせず、価格の上下を描きます。買いの場合はグレー、上の場合はブルー、売りの場合は価格水準より上の場合はグレー、下の場合はレッドで描きます。

はい、レベル解除を設定するのを忘れていました)))

ファイル: