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

 
trader781:
名称を修正しても、呼び方が違う だけで、注文の種類に 関係なく線は赤いままなのですが、どうしてでしょうか?(その後、10小節にカットする方法を考えなければならない)、正確に必要なのは
今すぐ試す
ファイル:
 
Sergey Gritsay:
今すぐお試しください。

ソースブックがぶら下がっているのはいいことだ)

コンパイルボタンを押すとターミナルとともにボットが死に、EXを開いても開かず、このファイルも空っぽです。

こんな感じです。

また、青、緑、金、白を入れると、これらの色は変化しますが、ダークグレーとアズールは入れず、白になります。

ファイル:
 
trader781:

ソースブックがぶら下がっているのはいいことだ)

コンパイルボタンを押すとターミナルとともにボットが死に、EXを開いても開かず、このファイルも空っぽです。

こんな感じです。

また、青、緑、金、白を入れると、これらの色は変化しますが、ダークグレーとアズールは入れず、白になりました。

問題なくコンパイルできています。
 
Sergey Gritsay:
string  StringSubstr(
   string  string_value,     // строка
   int     start_pos,        // с какой позиции начать
   int     length=0          // длина извлекаемой строки
   );
...

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

また、文字列に含まれる文字数を知りたいのですが、どうすればよいのでしょうか?

 
こんにちは。
ファイルから読み込んだ文字列を分割するために、StringSplitを 使用しています。しかし、配列の出力では、最初の文字列を除いて、文字列が失われています。出力では、配列のサイズは正しいのに、最初の文字列以外が空になっています。

また、文字列の配列では理解しがたい挙動に遭遇することがあります。文字列を配列に保存するために2次元の配列を作らなければならない。

この動作に遭遇された方はいらっしゃいますか?

while( idx < size ) {
    if( StringFind( fileBuffer[idx][0], "[Main]" ) >= 0 ) {
        idx++;
        Print( "Buffer(main) = " + fileBuffer[idx][0] ); // debug
        if( StringFind( fileBuffer[idx][0], "Kit_Names=" ) >= 0 ) {
            Print( "check1 - " + fileBuffer[idx][0] ); // debug
            string tmp = StringSubstr( fileBuffer[idx][0], 10 );
            Print( tmp );                              // debug
            StringReplace( tmp, "\"", "" );
            Print( tmp );                              // debug
            Print( StringSplit( tmp, sep, list ) );
            Print( "check22 - " + tmp );               // debug
            for(int i = 0; i < ArrayRange(list,0); i++) Print(list[i][0]);  // debug
        }
    }
    idx++;
}
 
-Aleks-:

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

また、文字列に含まれる文字数を調べる必要がありますが、どのようにすればよいのでしょうか?

文字列中の文字数を返します。

int  StringLen(
   string  string_value      // строка
   );

 
terentjew23:

文字列中の文字数を返します。

int  StringLen(
   string  string_value      // строка
   );

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

 
ひとことお願いします。

グローバルEAレベルで配列を宣言しています。そして、特別な関数init()で、文字列定数で 配列を埋めるユーザー関数を呼び出します。

そして、特殊な関数start()では、データを読み込むためだけに配列を使っています。

しばらくして、他のデータがアレイを埋めていきます。つまり、EAを実行すると、EAが動作している間、配列は変化しないことを期待しますが、データは何らかの方法で配列に入り、ある程度の時間(10分以上)後にのみ、配列に入るのです。Expert Advisor を再起動すると、配列は正常に満たされますが、しばらくして、私が理解できない理由で、配列に再び間違った値が含まれるようになります。

唯一の解決策は、start()の中で常に配列を再読み込みすることですが、実際には初期化中にのみ配列が満たされるはずなので、私はそれがあまり好きではありません。

何が問題なのでしょうか?アレイを改ざんから守るには?
 
Maksym Mudrakov:
ヒントをお願いします。
...
それは何でしょう?配列が変更されないようにするには?
コードをしっかり確認する
 
Maksym Mudrakov:
ひとことお願いします。

グローバルEAレベルで配列を宣言しています。そして、特別な関数init()で、文字列定数で 配列を埋めるユーザー関数を呼び出します。

そして、特殊な関数start()で、データを読み込むためだけに配列を使っています。

しばらくして、他のデータがアレイを埋めていきます。つまり、EAを実行すると、EAが動作している間、配列は変化しないことを期待しますが、データは何らかの方法で配列に入り、ある程度の時間(10分以上)後にのみ、配列に入るのです。Expert Advisor を再起動すると、配列は正常に満たされますが、しばらくして、私が理解できない理由で、配列に再び間違った値が含まれるようになります。

唯一の解決策は、start()の中で常に配列を再読み込みすることですが、実際には初期化中にのみ配列が満たされるはずなので、私はそれがあまり好きではありません。

何が問題なのでしょうか?アレイを改ざんから守るには?
コードを見ることはできますか?