どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 9

 
gyfto:

if((b-a)*(c-a)*(d-a)>0) と書くこともできますが、必ずしも速くなるとは限りません。論理ANDは2進数の掛け算で、同じ式を別の表記にしただけで、違うのは変数の型の大きさだけです。a>bはブール変数で4バイト、b-aは2倍なら差は2倍(8バイト)になり、この掛け算は少なくとも2倍以上の長さになります。


貴重なアドバイスです。

説明しよう。括弧内の式は0か1を取るので、if(((a>b)*(a>c)*(a>d)==1)と書き換えることができる(そして、これらはプリコンパイラのdefineでfalseとtrueとして順番に定義されている)。

ありがとうございます - この方が速く動作すると思います
 

みんな、アドバイスをお願いします。

ストラテジーテストモードでは、最適化プロパティの数値が変更できないのですが。

最低残高200

最大利益 10000

など

何が問題なのか?

 

initstartdeinitを 返すことができる値とその意味を教えてください。

フォーラム内を検索してみましたが、見つかりませんでした。ハンドブックには、この情報はありません。おそらく、機密情報でしょう。: ))(感情的な文章は削除さ れました...)

推して知るべし-「0」-すべてうまくいった...。しかし、型がIntergerであるため、どうやら2つ以上の値が存在するようです...。

 
Chiripaha:

initstartdeinitを 返すことができる値とその意味を教えてください。

フォーラムを覗いてみましたが、見つかりませんでした。ハンドブックには、この情報はありません。おそらく、機密情報でしょう。: ))(感情的な文章は削除さ れました...)

推して知るべし-「0」-すべてうまくいった...。しかし、型がIntergerなので、どうやら2つ以上の値がありそうです...。

これは、かなり最近になってから議論されたことです。参考

MQL4では、あらかじめ定義された名前を持つ3つの関数があります。

init() - モジュールの初期化中に呼び出される関数です。これがない場合、初期化中にどの関数も呼び出されない。

start() - メイン関数です。Expert Advisors では、次のティックを受信した後に呼び出されます。カスタム・インディケータでは、インディケータがチャートに取り付けられた後、クライアントターミナルが開かれた時(インディケータがチャートに取り付けられている場合)、そして次のティックが来た後の再計算の間に呼び出されます。スクリプトの場合は、チャートにアタッチして初期化した直後に実行されます。モジュール内にstart()関数がない場合、このモジュール(Expert Advisor、スクリプト、カスタムインジケータ)を起動することはできません。

deinit() - モジュールの非初期化時に呼び出される関数です。これがない場合、初期化中にどの関数も呼び出されない。

事前定義された関数は、パラメータを持つことができます。ただし、これらの関数をクライアント端末で呼び出す場合は、外部からパラメータは渡されず、デフォルト値が使用される。
start()、init()、deinit()関数は、他の関数と同様に一般的な規則に従ってモジュール内の任意の場所から呼び出すことができます。

init()関数からstart()やtradeを呼び出すことは、モジュールの初期化時点ではチャートデータや市場価格などの準備が整っていない可能性があるため、好ましくありません。init()関数とdeinit()関数は、できるだけ早く作業を終了させ、いかなる場合もstart()関数が呼ばれる前に完全な動作を開始しようとして立ち往生することがないようにする必要があります。

システムコールの場合、リターンは重要ではありません。
 

わかりました、では質問を明確にしてみます。

例えば、初期化段階でいくつかのパラメータをチェックし、その結果に応じて、開始段階に渡すかどうかを決めたいのです。

Vadimさんのコメントを正しく理解すれば、(この場合)初期化の結果は問題ではなく、関数Startが開始されるのですね?

 

の場合、最初からinitを呼び出す必要があります。

なんでこんな面倒なことをするんだ?グローバル変数が まだキャンセルされていない...。

 
Chiripaha:

わかりました、では質問を明確にしてみます。

例えば、初期化段階でいくつかのパラメータをチェックし、その結果に応じて、開始段階に渡すかどうかを決めたいのです。

Vadimさんのコメントを正しく理解すれば、初期化の結果は(この場合)問題ではなく、Start関数が開始されるのですね?

と、ラスタムは答えた。

FAQ:

の場合、自分で最初からinitを呼び出す必要があります。

なぜ、こんなにも複雑なのか。まだ誰もグローバル変数をキャンセルしていない...。

グローバル変数を宣言し、必要に応じて初期化するのです。同じモジュール内のすべての関数は、グローバル変数を 見ることができます。
 
Zhunko:

と、ラスタムは答えた。

変数をグローバルに宣言し、必要に応じて初期化するのです。1つのモジュール内のすべての関数がグローバル変数を見ることができます。

はい、プログラムへのアクセスを制限 するためのチェックなどでなければ。
 
FAQ:

の場合、最初からinitを呼び出す必要があります。

なんでこんな面倒なことをするんだ?グローバル変数がまだキャンセルされていない...。


フラグで確認する方が簡単なのでは?もちろん...
 
hoz:

フラグで確認する方が簡単なのでは?確かにグローバル...

いいえ、簡単ではありません。なぜなら、もし負のフラグ(またはグローバル変数)があったとしても、チェックは実行される必要があるからです。フラグもグローバル変数も、正の場合のみ機能します。そして、いくつかの機能は、やはりスタート時に必要です(ただし、ここは違いますが)。

いずれにせよ、"inite "をやり直すか、必要な機能をやり直すか、どちらかの方法で始めてください。