Hatalar, hatalar, sorular - sayfa 1786

 
fxsaber :
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ü? Peki ya göstergeleri ayarlamaya ne dersiniz? 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?
 
Alexey Kozitsyn :
Ö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ü.

 
fxsaber :

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.

Yani kene kuyruğu çarpık. Her durumda, çalışmayı göstergelerde anlamanız gerekir. Görünüşe göre asıl vurgu, Uzman Danışmanlarla çalışmak için işlevlerin test edilmesidir. Bu ilk. İkincisi - SymbolInfoTick() 'in eşzamanlı bir işlev olduğundan emin misiniz? Üçü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. Kısacası dediğim gibi kenelerde çok fazla hata var. Ve geliştiriciler sessiz ...
 
fxsaber :

Si üzerinde on dakika ölçüldü.

Çok az. Birkaç saat dondurun. birden fazla enstrüman üzerinde.
 
Alexey Kozitsyn :
Üçü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'in LATER adlı SymbolInfoTick'ten daha yeni veriler verdiği durumları yakaladım. Bu nedenle, aynı anda iki işlevli bir istekte bulunuyorum ve bunlardan en son onay işaretini seçiyorum.
 
fxsaber :
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.
Testi önce SymbolInfoTick() 'i çağırarak gerçekleştirdi , ancak o zaman - CopyTicks(). Her durumda, bu davranışın doğru olduğunu ve hiçbir şeyin değiştirilmesine gerek olmadığını düşünüyor musunuz?
 
fxsaber :

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

OnCalculate ( ..., const MqlTick & tick );

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.

//переводит котировку в цену/1_лот в валюте депозита, например 0.00015 для EURUSD будет равно $15/лот
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


 
A100 :

O zaman eklemek mantıklı olur

OnCalculate ( ..., const MqlTick & tick );

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.
 
fxsaber :
Geçerli kuyruğa tik numarasını eklemek bile mantıklıdır.
Neden bir onay numarasına ihtiyacınız var? Sadece doğru şekilde verilen ve doğru bir şekilde alınabilen doğru bir akışa ihtiyacınız var.