MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 112
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
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[]){
... //функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено)
}
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.
5 hata ve 83 uyarı aldım)))
Teşekkür ederim!
5 hata ve 83 uyarı aldım)))
"Yeni" dilde yazmaya çalışın, daha az ince hata olacaktır.
start() // Специальная функция start()
{
while (! IsStopped ()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы
RefreshRates (); // Обновление данных
//......................Здесь указывается основной код программы
Sleep ( 5 ); // Небольшая пауза
}
return ; // Управление возвращается терминалу
}
//--------------------------------------------------------------------
MQL4 eğitiminde aşağıdaki yapıya rastladım:
start() // Специальная функция start()
{
while (! IsStopped ()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы
RefreshRates (); // Обновление данных
//......................Здесь указывается основной код программы
Sleep ( 5 ); // Небольшая пауза
}
return ; // Управление возвращается терминалу
}
//--------------------------------------------------------------------
Bir senaryoda mı yoksa bir uzmanda mı?
bir uzmanda
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?
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.