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

 

端末のフリーズにどう対処する?

コードは単純だが、非常に遅い

   for(int i=limit;i>=0;i--)
     {
      RSI_01Buffer[i]=iRSI(NULL,0,RSI_Period,RSI_Price,i);
      RSI_02Buffer[i]=iMAOnArray(RSI_01Buffer,0,MA_Period,0,MODE_SMA,i);
     }
 
Alexey Viktorov さん、Igor Makanu さん、ありがとうございました。
 
Alexey Viktorov:

OnTick()に最初の開始フラグを入れるのが簡単で安全です。

例えば週末でも、計算とレンダリングを一度に行う必要があります。

 
Igor Makanu:

何が起こるかは推測しません。まず、OnInit()でインジケータの値を取得するために一時停止していますが、その時にユーザーがTFを切り替えたらどうなるのでしょう?

SZY: また、EAを実行した後、ターミナルを閉じ、EAを実行した状態でターミナルを再度開いた場合、コードはどのように動作しますか?

これらのバリアントが考慮される

 

些細なことですが、思い出してください。私のEAはテスターで普通に注文を開いたり閉じたりしています。現在、すでに1週間ほどデモを使用していますが、すべて問題なく使用できています。しかし、2つのケースで、2つ目の注文(マーティング)を出すときに、私のEAは、残高がプラスのときに両方とも閉じず、1つだけ、テイクオーダーを閉じるまで、2つ目の注文で揉み合っています。ログを見ると、価格が「requoted」になっていました。問題ないようで、とりあえず閉じるはずなのですが、閉じませんでした。

なので、条件成立時の関数SENDING (REQUIRED) OF ORDER CLOSINGは書いてません。このつまらないことをどう書けばいいのか、教えてください。ありがとうございます。

 
Порт-моне тв:

些細なことですが、思い出してください。私のEAはテスターで普通に注文を開いたり閉じたりしています。現在、すでに1週間ほどデモを使用していますが、すべて問題なく使用できています。しかし、2つのケースで、2つ目の注文(マーティング)を出すときに、私のEAは、残高がプラスのときに両方とも閉じず、1つだけ、テイクオーダーを閉じるまで、2つ目の注文で揉み合っています。ログを見てみると......価格が「再見積もり」になっていました。問題ないようで、とりあえず閉じるはずなのですが、閉じませんでした。

なので、条件付きでSEND(REQUIRED) OF ORDER CLOSINGという関数は書いていない。このつまらないことをどう書けばいいのか、教えてください。ありがとうございます。

if(GetLastError()==138)OrderClose(...);
またはスリッページを増やす
 
MakarFX:
あるいはスリップを増やす。

ご返信ありがとうございました。なぜ138なのか?これはエラー番号なのでしょうか?また、スリッページをどのくらい増やすか(増やす意味を説明してください)。ありがとうございました。

 
Порт-моне тв:

なぜ138なのか?エラー番号でしょうか?

はい

ポートモネTV

また、スリッページをどのくらい増やすか(増やす意味を説明してください)。

それはあなた次第で、 滑りが 多いほど リクオートが 少なくなります。

 
MakarFX:

端末のフリーズにどう対処する?

コードはシンプルですが、とても忙しいんです。

おかしいな...。

OnCalculateの 代わりにint start()でやってみたところ、全くハングアップしないようになりました

なぜ?

 
Andrey Sokolov:

土日などでも、すぐに計算やレンダリングを行う必要があります。

インジケータは1つのスレッドで動作し、1つが待機すると、他の全てのインジケータも待機し、端末がハングアップするまで動作します。
MTの起動時に、インジケータ(-s)の初期化をターミナル変数の初期化より 先に行うことができる、つまり、ハングアップをキャッチするのは朝飯前です。