Hatalar, hatalar, sorular - sayfa 1787

 
fxsaber :
Geçerli kuyruğa tik numarasını eklemek bile mantıklıdır.

Sonra doğrudan ServiceDesk#1666680'e yazarım

Lütfen işlevin ilkelerini değiştirmeyi düşünün

bool SymbolInfoTick ( string symbol, MqlTick & tick );

böylece Göstergelerde (OnCalculate gövdesi dahil) açıklamasına göre cari fiyatları döndürür

dili işlevle aynı anda tamamlamak

bool SymbolInfoTick _OnCalculate( string & symbol, MqlTick & tick ); //(*)

Bu , OnCalculate işlevinde, OnCalculate çağrısına neden olan sembolü ve belirli onay işaretini döndürür.

veya alternatif olarak (*) : Bu parametreleri OnCalculate çağrısına ekleyin

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

Soru ortaya çıktı: mql5 kullanarak çizelgelerdeki tüm çalışan programları ve adlarını bir şekilde belirlemek mümkün müdür? Özellikle, mevcut grafikteki tüm göstergelerin adlarını nasıl alacağımı merak ediyorum.

 
Alexey Kozitsyn :

Soru ortaya çıktı: mql5 kullanarak çizelgelerdeki tüm çalışan programları ve adlarını bir şekilde belirlemek mümkün müdür? Özellikle, mevcut grafikteki tüm göstergelerin adlarını nasıl alacağımı merak ediyorum.

https://www.mql5.com/en/docs/chart_operations/chartindicatorstotal

https://www.mql5.com/ru/docs/chart_operations/chartindicatorname

https://www.mql5.com/ru/docs/chart_operations/chartgetstring

https://www.mql5.com/ru/docs/constants/chartconstants/enum_chart_property#enum_chart_property_string
Документация по MQL5: Операции с графиками / ChartIndicatorName
Документация по MQL5: Операции с графиками / ChartIndicatorName
  • www.mql5.com
Операции с графиками / ChartIndicatorName - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Söyleyin lütfen, MT4 Expert Advisor'da, birden fazla grafik arabelleğine sahip özel bir gösterge sırayla çağrılırsa, her çağrıda yeniden hesaplama gerçekleşir veya tüm arabellekler bir kerede hesaplanır ve göstergeye birçok kez başvurabilirsiniz. kodlayın ve kaynak israfı olmasını beklemeyin. Bu soru da ilginç, eğer kod çalışmayı bitirmezse (bir onay işaretinden daha uzun süre çalışacak), ancak göstergenin değeri değişirse ne olacak.

 
A100 :

Sonra doğrudan ServiceDesk#1666680'e yazarım

Lütfen işlevin ilkelerini değiştirmeyi düşünün

bool SymbolInfoTick ( string symbol, MqlTick & tick );

böylece Göstergelerde (OnCalculate gövdesi dahil) açıklamasına göre cari fiyatları döndürür

dili işlevle aynı anda tamamlamak

bool SymbolInfoTick _OnCalculate( string & symbol, MqlTick & tick ); //(*)

Bu , OnCalculate işlevinde, OnCalculate çağrısına neden olan sembolü ve belirli onay işaretini döndürür.

veya alternatif olarak (*) : Bu parametreleri OnCalculate çağrısına ekleyin

OnCalculate ( ..., const string & symbol, const MqlTick & tick );
Bu bariz küstahlığa katılıyorum! ))
 
Alexey Kozitsyn :
Çok az. Birkaç saat dondurun. birden fazla enstrüman üzerinde.
ayy
Test_SymbolInfoTcick (Si- 3.17 ,M1)       OnCalculate : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
Test_SymbolInfoTcick (Si- 3.17 ,M1)       OnCalculate : Текущее время мс = 1486493406313 ( 2017.02 . 07 18 : 50 : 06 ), предыдущее = 1486493406315
Test_SymbolInfoTcick (Si- 3.17 ,M1)       OnTick : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
Test_SymbolInfoTcick (Si- 3.17 ,M1)       OnTick : Текущее время мс = 1486493406313 ( 2017.02 . 07 18 : 50 : 06 ), предыдущее = 1486493406315
Test_SymbolInfoTcick (Si- 3.17 ,M1)       OnCalculate : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
Test_SymbolInfoTcick (Si- 3.17 ,M1)       OnCalculate : Текущее время мс = 1486495281212 ( 2017.02 . 07 19 : 21 : 21 ), предыдущее = 1486495281213
Test_SymbolInfoTcick (Si- 3.17 ,M1)       OnTick : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
Test_SymbolInfoTcick (Si- 3.17 ,M1)       OnTick : Текущее время мс = 1486495281212 ( 2017.02 . 07 19 : 21 : 21 ), предыдущее = 1486495281213
OnTick'te de sorunlar var. OnCalculate'deki birkaç saatlik günlüğe göre, sorunların OnTick'tekinden üç kat daha olasıdır . Bu durumda, OnTick-problemi her zaman OnCalculate'de tekrarlanır, ancak bunun tersi olmaz.
 
fxsaber :
ayy
OnTick'te de sorunlar var. OnCalculate'deki birkaç saatlik günlüğe göre, sorunların OnTick'tekinden üç kat daha olasıdır . Bu durumda, OnTick-problemi her zaman OnCalculate'de tekrarlanır, ancak bunun tersi olmaz.
Görünüşe göre SymbolInfoTick() eşzamansız...
 
-Aleks- :

Söyleyin lütfen, MT4 Expert Advisor'da, birden fazla grafik arabelleğine sahip özel bir gösterge sırayla çağrılırsa, her çağrıda yeniden hesaplama gerçekleşir veya tüm arabellekler bir kerede hesaplanır ve göstergeye birçok kez başvurabilirsiniz. kodlayın ve kaynak israfı olmasını beklemeyin. Bu soru da ilginç, eğer kod çalışmayı bitirmezse (bir onay işaretinden daha uzun süre çalışacak), ancak göstergenin değeri değişirse ne olacak.

Tüm tamponlar bir kerede hesaplanır. Sessizce gösterge değerlerini isteyin - yeniden hesaplama olmayacak

MT4'te, bir EA'dan çağrılan bir gösterge, EA'nın akışında ve EA'nın geçmiş verilerinin bir kopyası üzerinde çalışır. Bir Uzman Danışmanı döngüye sokabilirsiniz, ancak aynı zamanda OnTick çağrısı sırasında hesaplanan gösterge verilerini alabilirsiniz. RefreshRates'i arayana kadar. RefreshRates, uzmanın geçmiş verilerini günceller, bundan sonra gösterge ilk kez çağrıldığında tüm verileri yeniden hesaplanacaktır.
 
Slawa :
Tüm tamponlar bir kerede hesaplanır. Sessizce gösterge değerlerini isteyin - yeniden hesaplama olmayacak

MT4'te, bir EA'dan çağrılan bir gösterge, EA'nın akışında ve EA'nın geçmiş verilerinin bir kopyası üzerinde çalışır. Bir Uzman Danışmanı döngüye sokabilirsiniz, ancak aynı zamanda OnTick çağrısı sırasında hesaplanan gösterge verilerini alabilirsiniz. RefreshRates'i arayana kadar. RefreshRates, uzmanın geçmiş verilerini günceller, bundan sonra gösterge ilk kez çağrıldığında tüm verileri yeniden hesaplanacaktır.

Cevap için teşekkürler!

Daha önce, MT5'te ZigZag göstergesinin yanıp sönmesi konusuyla da ilgileniyordum (MT4'te böyle bir etki yok) - çok sinir bozucu - bunun nedeni nedir?