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 ;                 // Управление возвращается терминалу
   }
//--------------------------------------------------------------------
"새로운" 언어로도 적용될 수 있습니까? 아니면 이미 더 현대적인 솔루션이 있습니까?
대본에 있습니까 아니면 전문가입니까?
 
Alexey Kozitsyn :
대본에 있습니까 아니면 전문가입니까?
전문가에서
 
Maksym Mudrakov :
전문가에서
음... 그러면 메인 코드에서 일어나는 일에 따라 다릅니다. 주문을 보내는 것이 나쁜 선택이라면!
 
Alexey Kozitsyn :
음... 그러면 메인 코드에서 일어나는 일에 따라 다릅니다. 주문을 보내는 것이 나쁜 선택이라면!
예, 주문이 발송되고 있습니다. 그러나 Expert Advisor가 한 거래 상품의 창에서 시작되었지만 다른 거래 상품에 대한 주문을 보내는 경우 견적을 강제로 업데이트해야 하는지 여부는 완전히 명확하지 않습니다. 예를 들어 EURUSD에 대한 시세는 업데이트되지 않은 반면 GBPUSD에 대한 새 시세는 이 시점에 도착합니다. 그리고 Expert Advisor가 EURUSD에서 시작되고 내가 RefreshRates ()를 수행하지 않으면 EURUSD 견적이 업데이트될 때까지 Expert Advisor가 GBPUSD에 대한 주문을 보내지 않습니까?
 
Maksym Mudrakov :
예, 주문이 발송되고 있습니다. 그러나 Expert Advisor가 한 거래 상품의 창에서 시작되었지만 다른 거래 상품에 대한 주문을 보내는 경우 견적을 강제로 업데이트해야 하는지 여부는 완전히 명확하지 않습니다. 예를 들어 EURUSD에 대한 시세는 업데이트되지 않은 반면 GBPUSD에 대한 새 시세는 이 시점에 도착합니다. 그리고 Expert Advisor가 EURUSD에서 시작되고 내가 RefreshRates ()를 수행하지 않으면 EURUSD 견적이 업데이트될 때까지 Expert Advisor가 GBPUSD에 대한 주문을 보내지 않습니까?

현재 가격을 얻는 방법에는 여러 가지가 있습니다.

1. 모든 기호의 경우: 보장된 현재 가격을 얻으려면 사용하기 전에 필요한 식별자와 함께 SymbolInfoDouble() 함수를 호출하십시오 .

2. 현재 기호의 경우 미리 정의된 Bid 및 Ask 변수를 통해 현재 가격을 얻을 수도 있습니다. 그것이 그들이 구식이 될 수있는 방법이므로 OnTick() 함수가 오랫동안 실행되면 RefreshRates()를 사용하여 업데이트해야합니다.