Hatalar, hatalar, sorular - sayfa 1786
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
OnCalculate'i OnTick ile değiştirirseniz hiçbir hata oluşmaz. Sorun SymbolInfoTick'te değil, göstergelerin boşluk olmaması için çarpık bir şekilde yapılandırılmış olmasıdır.
Ölçümler ne kadar sürdü? Ve göstergelerin ayarı nedir? Mevcut tikin varış zamanı 10, bir öncekinin varış zamanı 11'dir. Bu, güncel olmayan bir değer döndüren fonksiyondaki bir hatadır. Sonuçta, zamanın mevcut değerinin öncekinden daha az olamayacağına katılıyor musunuz?
SymbolInfoTick, göstergelerde Uzman Danışmanlardan farklı şekilde çalışır.
Göstergede, her zaman OnCalculate'e çağrıyı başlatan onay işaretini döndürür. Ve göstergedeki bu başlatıcı keneler atlanmamalıdır - geliştiricilerin ideolojisi. Sorun bu kenelerin sırasının oluşmasındadır.
OnTick'teki SymbolInfoTick Uzman Danışmanında, OnTick'in başlatılmasını başlatan onay işaretini döndürmez, ancak mevcut durum için tam teşekküllü bir istekte bulunur.
Si üzerinde on dakika ölçüldü.
SymbolInfoTick, göstergelerde Uzman Danışmanlardan farklı şekilde çalışır.
Göstergede, her zaman OnCalculate'e çağrıyı başlatan onay işaretini döndürür. Ve göstergedeki bu başlatıcı keneler atlanmamalıdır - geliştiricilerin ideolojisi. Sorun bu kenelerin sırasının oluşmasındadır.
OnTick'teki SymbolInfoTick Uzman Danışmanında, OnTick'in başlatılmasını başlatan onay işaretini döndürmez, ancak mevcut durum için tam teşekküllü bir istekte bulunur.
Si üzerinde on dakika ölçüldü.
Üçüncüsü, SymbolInfoTick() iyi olsa bile, yine de CopyTicks()'ten daha iyi performans gösterir çünkü genellikle daha güncel değerler döndürür.
CopyTicks, LATER adlı SymbolInfoTick'ten daha yeni veriler verdiğinde yakalanan durumlar. Bu nedenle, aynı anda iki işlevli bir istekte bulunuyorum ve bunlardan en son onay işaretini seçiyorum.
SymbolInfoTick, göstergelerde Uzman Danışmanlardan farklı şekilde çalışır.
Göstergede, her zaman OnCalculate'e çağrıyı başlatan onay işaretini döndürür. Ve göstergedeki bu başlatıcı keneler atlanmamalıdır - geliştiricilerin ideolojisi. Sorun bu kenelerin sırasının oluşmasındadır.
OnTick'teki SymbolInfoTick Uzman Danışmanında, OnTick'in başlatılmasını başlatan onay işaretini döndürmez, ancak mevcut durum için tam teşekküllü bir istekte bulunur.
O zaman eklemek mantıklı olur
buna neden olan kene, özellikle hiçbir maliyeti olmadığı için
Ve SymbolInfoTick() işlevini hem Göstergede hem de Uzman Danışmanda tam teşekküllü yapın ( OnCalculate çağrısının oluşturulduğu andaki fiyatları değil, mevcut fiyatları iade edin)
MT4 öngörülemezliği ile şaşırtmaya devam ediyor )) Ticaret işlevlerinin uygulanmasını kim yazıyor? MT4 yapı 1045
Şakacı bir göndermeyle başlayalım, Zadornov'un onu göndermesinin tam zamanı, yoksa her şey aptal Amerikalılara dönüşür.
SYMBOL_TRADE_TICK_VALUE
SYMBOL_TRADE_TICK_VALUE_PROFIT değeri
çift
SYMBOL_TRADE_TICK_VALUE_PROFIT
Desteklenmiyor
çift
SYMBOL_TRADE_TICK_VALUE_LOSS
Desteklenmiyor
çift
Bu arada SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE, tickValue) değerini verir. ANCAK!!!!! Göstergeyi grafiğe atarsanız, başlangıçta her şey yoluna girecek. Ve terminali yeniden başlatırsanız, ilk çağrılardaki bu işlev, tickValue'nin bir sonucu olarak true ve sıfıra dönecektir! Bu yüzden rahatlamayın, Bay uzmanların geliştiricileri, her şeyi kendiniz kontrol etmelisiniz.
bool Quote2Price( double diff, double &price4lot, string symbol= "EURUSD" )
{
int dig=( int ) MarketInfo (symbol, MODE_DIGITS );
if (dig == 0 )
return ( false ); // symbol is none
double tickSize = MarketInfo (symbol, MODE_TICKSIZE ); // пункт в валюте котировки (0,00001 для EURUSD на 5-знаке)
//double tickValue = MarketInfo(symbol, MODE_TICKVALUE); // пункт в валюте депозита ($1 для EURUSD на 5-знаке)
double tickValue;
if (! SymbolInfoDouble (symbol, SYMBOL_TRADE_TICK_VALUE , tickValue)) // пункт в валюте депозита ($1 для EURUSD на 5-знаке)
Print ( __FUNCTION__ , " SymbolInfoDouble(...) returns false" ); // всегда возвращается true!!
Print ( "tickSize= " , tickSize, " tickValue= " , tickValue);
if (tickValue == 0.0 ) // исключений нет, терминал врет, надо тупо везде проверять на деление на ноль...
return false ;
double price=diff/(tickSize/ tickValue ); // а то завалимся c tickValue == 0
price4lot= NormalizeDouble (price, 2 );
return ( true );
}
Çıktı:
2017.02.07 16:08:25.332 ShowImportantParams EURUSD.e,M15: tickSize= 1e-05 tickValue= 1.0
2017.02.07 16:08:25.332 ShowImportantParams EURUSD.e,M15: tickSize= 1e-05 tickValue= 1.0
2017.02.07 16:08:24.515 ShowImportantParams EURUSD.e,M15: tickSize= 1e-05 tickValue= 0.0
2017.02.07 16:08:23.037 ShowImportantParams EURUSD.e,M15: tickSize= 1e-05 tickValue= 0.0
2017.02.07 16:08:23.037 ShowImportantParams EURUSD.e,M15: başlatıldı
2017.02.07 16:08:23.002 Özel gösterge ShowImportantParams EURUSD.e,M15: başarıyla yüklendi
O zaman eklemek mantıklı olur
buna neden olan kene, özellikle hiçbir maliyeti olmadığı için
Ve SymbolInfoTick() işlevini hem Göstergede hem de Uzman Danışmanda tam teşekküllü yapın ( OnCalculate çağrısının oluşturulduğu andaki fiyatları değil, mevcut fiyatları iade edin)
Geçerli kuyruğa tik numarasını eklemek bile mantıklıdır.