エラー、バグ、質問 - ページ 1520

 
Slawa:

それ以外の方法はまだないのです。

プログラムを即座に終了させる新しいexitコマンドの導入を検討したが、ここには未解決の問題がある

それは残念です。そうですね、C++のようなexit()があるといいですね。現在では、ネストした関数のレスポンスを呼び出し側の関数に引き込むことは、むしろ問題になっています。そして、ユニバーサルライブラリーは存在しない。
 
Alexey Kozitsyn:
それは残念です。そうですね、C++のようなexit()があるといいですね。現在では、ネストした関数のレスポンスを呼び出し側に引き込むことは、むしろ問題視されている。そして、ユニバーサルライブラリーは存在しない。
もう一つの方法は、プログラムのすべてのオブジェクトを個別に削除する関数を作成し、ターミナルからプログラムを削除する条件が満たされたときにそれを呼び出し、その後にExpertRemove() を実行することです、この場合、すべてが速く終了するはず ですが・・・。まさかとは思いますが)
 
coderex:
あるいは、プログラムのオブジェクトをすべて削除する関数を別途作成し、ターミナルからプログラムを削除する条件を満たしたときにその関数を呼び出し、その後にExpertRemove()を実行すれば、この場合はすべてが速く完了するはず ですが...。さだかでないけれども)

以前にも書きましたし、このサイトの記事でも提案されていましたが、深いネストした関数でエラーが発生した場合、0による除算を呼び出すか、配列を 終了させることができます。でも、いい加減なんです。

そう、そしてそれはOOPに限ったことではないのです(私が理解した限りでは、あなたはそれを意味しています)。単純に - エラーが修正できない場合、プログラムは終了します。

 
Slawa:
停止するが、すぐには停止しない
ExpertRemove() は、インジケータで使用しても良いのでしょうか、悪いのでしょうか?
 
Alexey Kozitsyn:
よくわからないのですが、ExpertRemove()をインジケータで使用するのは正しいのでしょうか?

インジケーターの機能があるのか、もう関係ないような気がします

ChartIndicatorDelete();
 
Alexey Kozitsyn:
よくわからないのですが、ExpertRemove()をインジケータで使用するのは正しいのでしょうか?

いいえ、ExpertRemove() はインジケータに重なっています。

"停止するが、すぐには停止しない "というのは、ExpertRemove全般について言われていることです。この機能は、プログラムの動作を中断させることはありません。

 
Slawa:

いいえ、ExpertRemove()はインジケータに重なっています。

"停止するが、すぐには停止しない "というのは、ExpertRemove全般について言われていることです。この機能は、プログラムの動作を中断させません。

一般的に、exit()で問題を解決する計画はありますか?それともユーザーは松葉杖で解決しているのでしょうか(笑)。
 
Slawa:
例を挙げてください。問題を説明するために、インジケーターのソースコードを渡す
リダクタで作成したデフォルトのインジケータのOnCalculateにテキストを挿入します。任意のチャートに配置します。チャートウィンドウの左上に、インジケータの動作が表示されます。インジケーターの一覧から「削除」を選択した後も、動作は停止しませんので、左上に 表示されていることを確認してください。ウィンドウを閉じた後も継続されます。新しいウィンドウを開いた後、新しいウィンドウで続きが表示されます。このウィンドウは、必ずしも最初に持っていたものと同じシンボルを持つわけではありません :)
端子を閉じたときのみ、インジケーターの動作が停止します。しかも、止まるか止まらないかわからない......ただ、タスクマネージャで手動で端末を削除して再起動させただけなのに......。

同時に、IsStopped関数のヘルプには、mql-programを終了させるコマンドがあった場合、3秒後にプログラムの動作を停止させると書かれています。

   int i=0;
   while(true){
      Comment(i++);
      Sleep(100);
   }

また、while(true)をwhile(!IsStopped())に置き換えると、チャートから削除してもインジケータは正常に完了します。

 

Internal Compiler Error(インジケータで使用している関数)のおかしな理由。

void SaveData ( uint handle_, int wrdata_, int interv_, string dpath_, int tmode_, int tmult_, long ctime_, long& ltime_ )
{
int ierr, wrtint;
// ----
if ( interv_ > 0 ) // 作業モード
{
if ( MQLInfoInteger ( MQL_TESTER ) == 0 ){ wrtint = interv_; }.// 意味はない
さもなくば{ wrtint = interv_ * tmult_; }.// どうでもいい
//
if ( ( ctime_ - ltime_ ) >= ( wrtint * 60 ) ) // この行をコメントアウトすると、エラーが消 えます。
{
// データを保存するためのいくつかのコード ...は意味がない - テスト済み
//
ltime_= ctime_; // 一般的にはどちらでも良い。
}// if ( ( ctime_ - ltime_ ) >= ( wrtint * 60 ).
}// if ( interv_ > 0 )
// ----
を返します。

}// void SaveData

( すみません、SRCボタンでは必要な部分を選択できないので、意図的に使っていません )

治療法は明らかですが、納得してください。むしろ、おかしな不具合です。:)))

 

ある証券会社では、100万円の売上で16×2ドルの手数料が設定されている。 サーバーの設定で16ドルの手数料を設定しているようだ。そして今、彼らのサーバーでのテストでは、手数料16x2がそのロットサイズに関係なく、各トランザクションから差し引かれます。

サーバーを設定する技術がないのか、それともMT5の本当の限界なのか。テスターでコミッションが正しく処理されるように、サーバー上で具体的に何をするようにアドバイスすればよいのでしょうか。