Kayan bir sayma algoritmasıyla, tüm ara belleğin INF olması için ilk başta yalnızca iki DBL_MAX fiyatı yeterlidir.
DBL_MAX + DBL_MAX = INF
ve sonra INF hesaplamaları bırakmayacak
Bu seçenek oldukça olasıdır, çünkü. Mashka periyodunun altındaki değerler sadece DBL_MAX ile tıkanır. Daha sonra hata, tekrarlayan ortalama algoritmasında bulunur - MODE_SMA.
Ve orada! Değişiklikler yapıldı ve işe yaradı
// Вычисляем Машку от Машки через хэндл самого себя#property indicator_separate_window#property indicator_buffers1#property indicator_plots1#property indicator_type1 DRAW_LINE#property indicator_color1 clrRed#property indicator_style1 STYLE_SOLID#property indicator_width1 1inputbool CustomData = false ; // true - кастомный режим для iCustominputint MAPeriod = 1 e1; // Период МАшкиstring GetMyName( void )
{
constint Length = StringLen ( TerminalInfoString ( TERMINAL_DATA_PATH ) + "\\MQL5\\Indicators\\" );
conststring Path = MQLInfoString ( MQL_PROGRAM_PATH );
return ( StringSubstr (Path, Length, StringLen (Path) - Length - 4 ));
}
double Buffer[];
constbool Init = SetIndexBuffer ( 0 , Buffer, INDICATOR_DATA );
constint handleMA = CustomData ? iMA ( NULL , PERIOD_CURRENT , 100 , 0 , MODE_SMA , PRICE_OPEN ) // от этой МАшки будет брать другую Машку, но не напрямую, а кастомно
: iMA ( NULL , PERIOD_CURRENT , MAPeriod, 0 , MODE_SMA , iCustom ( _Symbol , PERIOD_CURRENT , GetMyName(), true ));
int Replace( double &Array[], constdouble NewValue = 1 e3, constdouble PrevValue = EMPTY_VALUE )
{
for ( int i = ArraySize (Array) - 1 ; i >= 0 ; i--)
if (Array[i] == PrevValue)
Array[i] = NewValue;
return ( 0 );
}intOnCalculate ( constint rates_total, // размер входных таймсерий constint prev_calculated, // обработано баров на предыдущем вызовеconstdatetime & time[], // Time constdouble & open[], // Open constdouble & high[], // High constdouble & low[], // Low constdouble & close[], // Close constlong & tick_volume[], // Tick Volume constlong & volume[], // Real Volume constint & spread[] ) // Spread
{
return (prev_calculated + CopyBuffer (handleMA, 0 , prev_calculated, rates_total - prev_calculated, Buffer) + Replace(Buffer) );
}
Tekrarlayan iMA algoritmasının girdi olarak DBL_MAX sağlandığında durumu hesaba katmadığı kesin olarak söylenebilir. Böcek.
Bu tür yapılardan kaçınılmalıdır. C++'da işlenen yürütme sırası düzenlenmemiştir, bu nedenle her şey belirli bir derleyicinin takdirindedir. Bunun istisnası, işlenenlerin her zaman soldan sağa doğru değerlendirildiği && ve || operatörleridir.
Bu tür yapılardan kaçınılmalıdır. C++'da işlenen yürütme sırası düzenlenmemiştir, bu nedenle her şey belirli bir derleyicinin takdirindedir. Bunun istisnası, işlenenlerin her zaman soldan sağa doğru değerlendirildiği && ve || operatörleridir.
Merhaba. Grafikte görüntülenen göstergelerin ve parametrelerinin bir listesini almak için hangi işlevlerin kullanılabileceğini söyler misiniz? Sadece bir fonksiyon buldum. bu, grafikteki göstergelerin sayısını döndürür
У каждого графика можно посмотреть списки наложенных объектов: индикаторов, аналитических объектов и советников. Там же можно можно редактировать их свойства и удалять их с графика. Список индикаторов Индикаторы сгруппированы на наложенные на основное окно графика и на те, что открыты в отдельных окнах. Выберите индикатор и нажмите "Свойства...
Merhaba. Grafikte görüntülenen göstergelerin ve parametrelerinin bir listesini almak için hangi işlevlerin kullanılabileceğini söyler misiniz? Sadece bir fonksiyon buldum. bu, grafikteki göstergelerin sayısını döndürür
Ancak, bir şekilde çirkin. MyCopyBuffer yazmak mantıklıdır, ancak kısa bir kodda hatayı atlamak için bunun gerekli olduğunu açıkça göstermek yine çirkindir. Bu nedenle, belgelenmemiş işlenen yürütme önceliğinin kullanılması, bunun geçici bir çözüm olduğunu göstermenin en iyi yoludur.
CopyBuffer INF'nin tamamı var.
Kayan bir sayma algoritmasıyla, tüm tamponun INF olması için ilk başta sadece iki DBL_MAX fiyatı yeterlidir.
DBL_MAX + DBL_MAX = INF
ve sonra INF hesaplamaları bırakmayacak
EMPTY_VALUE'u hesaba katmamak için tüm göstergelerin kodunu değiştirmeniz gerekiyorKayan bir sayma algoritmasıyla, tüm ara belleğin INF olması için ilk başta yalnızca iki DBL_MAX fiyatı yeterlidir.
DBL_MAX + DBL_MAX = INF
ve sonra INF hesaplamaları bırakmayacak
Bu seçenek oldukça olasıdır, çünkü. Mashka periyodunun altındaki değerler sadece DBL_MAX ile tıkanır. Daha sonra hata, tekrarlayan ortalama algoritmasında bulunur - MODE_SMA.
Ve orada! Değişiklikler yapıldı ve işe yaradı
Tekrarlayan iMA algoritmasının girdi olarak DBL_MAX sağlandığında durumu hesaba katmadığı kesin olarak söylenebilir. Böcek.
@A100 Teşekkürler!
Ekli dosyayı derlemeye çalışırken MetaEditor kilitleniyor
Hemen donmazsa biraz beklemeniz veya son satıra gidip derleme zamanını görmeniz gerekiyor.
Fare ile üzerine gelindiğinde açılan pencerede sipariş/fırsat numarasını neden göstermiyorsunuz? Bunu bin yıl önce sormuştum, bu çok eksik!
Bu tür yapılardan kaçınılmalıdır. C++'da işlenen yürütme sırası düzenlenmemiştir, bu nedenle her şey belirli bir derleyicinin takdirindedir. Bunun istisnası, işlenenlerin her zaman soldan sağa doğru değerlendirildiği && ve || operatörleridir.
Bu tür yapılardan kaçınılmalıdır. C++'da işlenen yürütme sırası düzenlenmemiştir, bu nedenle her şey belirli bir derleyicinin takdirindedir. Bunun istisnası, işlenenlerin her zaman soldan sağa doğru değerlendirildiği && ve || operatörleridir.
Eh, biz MQL'deyiz!
Eh, biz MQL'deyiz!
Belgeler belirli bir sipariş hakkında hiçbir şey söylemiyor. Bu nedenle, istedikleri zaman kendi takdirlerine bağlı olarak değiştirebilirler.
Bu sorunu açıklığa kavuşturmak için hizmet masasıyla zaten bir kez iletişime geçtim.
Merhaba. Grafikte görüntülenen göstergelerin ve parametrelerinin bir listesini almak için hangi işlevlerin kullanılabileceğini söyler misiniz? Sadece bir fonksiyon buldum. bu, grafikteki göstergelerin sayısını döndürür
Merhaba. Grafikte görüntülenen göstergelerin ve parametrelerinin bir listesini almak için hangi işlevlerin kullanılabileceğini söyler misiniz? Sadece bir fonksiyon buldum. bu, grafikteki göstergelerin sayısını döndürür
GöstergeParametreleri (+ Gösterge Yayını)
Belgeler belirli bir sipariş hakkında hiçbir şey söylemiyor . Bu nedenle, istedikleri zaman kendi takdirlerine bağlı olarak değiştirebilirler.
Bunun için uğraşmıyorum. Orada pek çok şey anlatılmıyor.
Navskidu
Bir emsal vardı - rol almayı reddetmek, ama bir sebep vardı.
Bu nedenle, bir şeyi açıklanmadığı için kullanmamak şüpheli bir karardır.
Böyle bir kodun programcılar arasında şüphe yaratmayacağını düşünüyorum.
Ancak, bir şekilde çirkin. MyCopyBuffer yazmak mantıklıdır, ancak kısa bir kodda hatayı atlamak için bunun gerekli olduğunu açıkça göstermek yine çirkindir. Bu nedenle, belgelenmemiş işlenen yürütme önceliğinin kullanılması, bunun geçici bir çözüm olduğunu göstermenin en iyi yoludur.