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

 
Alexey Kozitsyn:
コードを見ることはできますか?
...
extern string   SYMBOLS ="EURUSD,GBPUSD,EURGBP,EURJPY,USDJPY";
string symbolsArray[1];
...
void init(){
   StringToArray(SYMBOLS, symbolsArray);
...
}

int start(){
  Comment(symbolsArray[0]+"|"+symbolsArray[1]+"|"+symbolsArray[2]+"|"+symbolsArray[3]+"|"+symbolsArray[4]);
  //при запуске советника комментарий выводит правильную информацию, но через время один из элементов массива становится равным совсем другому значению
  ...
  return(0);
}

void StringToArray (string stringOfSymbols, string &arrayOfSymbols[]){
...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено)
}
 
Maksym Mudrakov:
...
extern string   SYMBOLS ="EURUSD,GBPUSD,EURGBP,EURJPY,USDJPY";
string symbolsArray[1];
...
void init(){
   StringToArray(SYMBOLS, symbolsArray);
...
}

int start(){
  Comment(symbolsArray[0]+"|"+symbolsArray[1]+"|"+symbolsArray[2]+"|"+symbolsArray[3]+"|"+symbolsArray[4]);
  //при запуске советника комментарий выводит правильную информацию, но через время один из элементов массива становится равным совсем другому значению
  ...
  return(0);
}

void StringToArray (string stringOfSymbols, string &arrayOfSymbols[]){
...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено)
}
まず、#property strict を追加し、エラーや警告があれば修正し、init() と start() を OnInit() と OnTick() に置き換えてください。
 
Alexey Kozitsyn:
まず、#property strict を追加し、エラーや警告があれば修正し、init() と start() を OnInit() と OnTick() に置き換えてください。
ありがとうございました。

5つのエラーと83の警告が表示されました ))))
 
Maksym Mudrakov:
ありがとうございました。

5つのエラーと83の警告が出た ))))
新しい」言語で書くようにすれば、見つけにくいミスは少なくなります。
 
Alexey Kozitsyn:
新しい」言語で書くようにすれば、見つけにくいミスは少なくなります。
MQL4のチュートリアルでそのような作りになっているのに出会いました。

//--------------------------------------------------------------------
start()                    // Специальная функция start()
   {
   while(!IsStopped())     // До тех пор, пока пользователь..
      {                    // ..не прекратит исполнение программы
      RefreshRates();      // Обновление данных
      //......................Здесь указывается основной код программы
      Sleep(5);            // Небольшая пауза
      }
   return;                 // Управление возвращается терминалу
   }
//--------------------------------------------------------------------
新しい」言語も使えるのか、それとももっと現代的な解決策があるのか?
 
Maksym Mudrakov:
MQL4のチュートリアルでそのような作りになっているのに出会いました。

//--------------------------------------------------------------------
start()                    // Специальная функция start()
   {
   while(!IsStopped())     // До тех пор, пока пользователь..
      {                    // ..не прекратит исполнение программы
      RefreshRates();      // Обновление данных
      //......................Здесь указывается основной код программы
      Sleep(5);            // Небольшая пауза
      }
   return;                 // Управление возвращается терминалу
   }
//--------------------------------------------------------------------
を "新しい "言語でも適用できるのか、それとももっと現代的な解決策があるのか?
スクリプトやExpert Advisorにあるのでしょうか?
 
Alexey Kozitsyn:
台本に書いてあるのか、専門家に書いてあるのか。
専門家では
 
Maksym Mudrakov:
試験官で
あの...となると、メインコードでそこで何が起こっているかによります。注文を送る のはまずい!という場合
 
Alexey Kozitsyn:
あの...となると、メインコードで何が起こっているかによりますね。注文を送ることが悪いことなら!
はい、注文を送信 することは可能です。エキスパートアドバイザーがある取引商品のウィンドウで動作しているときに、別の取引商品の注文を送信した場合、相場が強制的に更新されるかどうかは、私にはわかりません。例えば、EURUSDの相場が更新されず、同時にGBPUSDの新しい相場が受信された場合。また、Expert Advisor が EURUSD で実行され、RefreshRates() を実行しない場合、Expert Advisor は EURUSD の相場が更新されるまで GBPUSD の注文を送信しませんか?
 
Maksym Mudrakov:
はい、送信中です。あるシンボルのウィンドウでEAを起動し、別のシンボルに注文を出した場合、強制的に相場が更新されるのかどうかがよくわかりません。例えば、EURUSDの相場が更新されず、同時にGBPUSDの新しい相場が受信された場合。また、Expert Advisor が EURUSD で実行され、RefreshRates() を実行しない場合、Expert Advisor は EURUSD の相場が更新されるまで GBPUSD の注文を送信しませんか。

現在の価格を知るには、いくつかの方法があります。

1.任意のシンボルについて:保証された現在の価格を取得したい場合は、使用する前に正しい識別子でSymbolInfoDouble()を呼び出してください。

2.現在のシンボルについて、定義済みの変数BidとAskを通じて現在の価格を取得することもできます。これらは古くなる可能性があるので、OnTick()関数が長時間実行されている場合は、RefreshRates()を使用してリフレッシュする必要があります。