MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 112

 
Alexey Kozitsyn :
Kodu görebilir miyim?
...
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[]){
... //функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено)
}
Yapacağım ilk şey, #property strict eklemek, hataları/uyarıları (varsa) düzeltmek ve init() ve start() işlevlerini OnInit() ve OnTick() ile değiştirmek.
 
Alexey Kozitsyn :
Yapacağım ilk şey, #property strict eklemek, hataları/uyarıları (varsa) düzeltmek ve init() ve start() işlevlerini OnInit() ve OnTick() ile değiştirmek.
Teşekkür ederim!

5 hata ve 83 uyarı aldım)))
 
Maksym Mudrakov :
Teşekkür ederim!

5 hata ve 83 uyarı aldım)))
"Yeni" dilde yazmaya çalışın, daha az ince hata olacaktır.
 
Alexey Kozitsyn :
"Yeni" dilde yazmaya çalışın, daha az ince hata olacaktır.
MQL4 eğitiminde aşağıdaki yapıya rastladım:

//--------------------------------------------------------------------
start()                     // Специальная функция start()
   {
   while (! IsStopped ())     // До тех пор, пока пользователь..
      {                     // ..не прекратит исполнение программы
       RefreshRates ();       // Обновление данных
       //......................Здесь указывается основной код программы
       Sleep ( 5 );             // Небольшая пауза
      }
   return ;                 // Управление возвращается терминалу
   }
//--------------------------------------------------------------------
"yeni" dilde de uygulanabilir mi yoksa daha modern bir çözüm var mı?
 
Maksym Mudrakov :
MQL4 eğitiminde aşağıdaki yapıya rastladım:

//--------------------------------------------------------------------
start()                     // Специальная функция start()
   {
   while (! IsStopped ())     // До тех пор, пока пользователь..
      {                     // ..не прекратит исполнение программы
       RefreshRates ();       // Обновление данных
       //......................Здесь указывается основной код программы
       Sleep ( 5 );             // Небольшая пауза
      }
   return ;                 // Управление возвращается терминалу
   }
//--------------------------------------------------------------------
"yeni" dilde de uygulanabilir mi yoksa daha modern bir çözüm var mı?
Bir senaryoda mı yoksa bir uzmanda mı?
 
Alexey Kozitsyn :
Bir senaryoda mı yoksa bir uzmanda mı?
bir uzmanda
 
Maksym Mudrakov :
bir uzmanda
Um... o zaman ana kodda ne olduğuna bağlı olarak. Sipariş göndermek kötü bir seçenekse!
 
Alexey Kozitsyn :
Um... o zaman ana kodda ne olduğuna bağlı olarak. Sipariş göndermek kötü bir seçenekse!
evet, sipariş gönderiliyor . Ancak Expert Advisor bir ticaret enstrümanının penceresinde başlatılırsa, ancak başka bir ticaret enstrümanı için bir emir gönderirse, fiyatları zorla güncellemenin gerekli olup olmadığı benim için tam olarak açık değil. Örneğin, EURUSD fiyatları güncellenmezken GBPUSD için yeni fiyat teklifleri şu anda gelir. Ve Expert Advisor EURUSD'de başlatılırsa ve RefreshRates () yapmazsam, Expert Advisor EURUSD fiyatları güncellenene kadar GBPUSD için bir sipariş göndermeyecek mi?
 
Maksym Mudrakov :
evet, sipariş gönderiliyor. Ancak Expert Advisor bir ticaret enstrümanının penceresinde başlatılırsa, ancak başka bir ticaret enstrümanı için bir emir gönderirse, fiyatları zorla güncellemenin gerekli olup olmadığı benim için tam olarak açık değil. Örneğin, EURUSD fiyatları güncellenmezken GBPUSD için yeni fiyat teklifleri şu anda gelir. Ve Expert Advisor EURUSD'de başlatılırsa ve RefreshRates () yapmazsam, Expert Advisor EURUSD fiyatları güncellenene kadar GBPUSD için bir sipariş göndermeyecek mi?

Güncel fiyatları almanın birkaç yolu vardır:

1. Herhangi bir sembol için: garantili cari fiyatlar almak istiyorsanız, kullanmadan önce gerekli tanımlayıcılarla SymbolInfoDouble() işlevini çağırın.

2. Akım sembolü için de önceden tanımlanmış Bid ve Ask değişkenleri üzerinden cari fiyatları alabilirsiniz. Bu şekilde güncelliğini yitirebilirler, bu nedenle OnTick() işlevi uzun süre çalışıyorsa, RefreshRates() kullanılarak güncellenmeleri gerekir.