Hem ana grafik penceresinde hem de ayrı bir pencerede göstergelerin (çizgiler, oklar, histogramlar) titremesine ne sebep olabilir? Gösterge yeniden çiziliyor gibi görünüyor ve şu anda veri penceresinde etiketler ve arabellek değerleri bir saniye listeden kayboluyor ve ardından listede yeniden görünüyor. Kodda yanlış bir şey mi var?
Ayrıca, bu sadece MT5 terminalinde gözlenir, bu MT4'te gözlenmez.
Falcılık sunuyor musunuz? iletişime geç ;)
Hayır, sadece bir arama soruma cevap vermedi.
Belki de neden titremenin sadece MT5 değişim terminalinde gözlemlendiğini biliyorsunuzdur, MT5 forex terminalinde titreme yok mu?
Hayır, sadece bir arama soruma cevap vermedi.
Belki de neden titremenin sadece MT5 değişim terminalinde gözlemlendiğini biliyorsunuzdur, MT5 forex terminalinde titreme yok mu?
Neden tüm göstergeler titriyor? MT5 aynıdır, yalnızca hesap türü farklılık gösterebilir - exchange veya forex.
Forex ve döviz terminali MT5 hakkında kısalık için konuşurken demek istediğim buydu. Daha tam olarak sorun şuna benziyor. Bir forex komisyoncusuna bağlandığında, MT5 terminalindeki göstergeler titremez ve bir borsa komisyoncusuna bağlandığında titreme görülür, ayrıca veri penceresinde gösterge arabelleklerinin etiketleri ve değerleri kaybolur bir veya iki saniye için.
Tüm göstergelerin bu şekilde davranıp davranmadığı sorusuna gelince, söyleyemem. Asılsız kalmamak için şimdi bir tane yayınlayayım.
//+-----------------------------------------------------------------------------------------------------+ //| AOM = Awesome Oscillator Modernized (индикатор AO Модернизированный) //+-----------------------------------------------------------------------------------------------------+ #property copyright "Copyright© 2014, Scriptolog® [ myzrov@mail.ru ]" #property link "mailto:myzrov@mail.ru" #property version "2.0" // текущая версия #property description "«AOM» - индикатор «AO» модернизированный.\n" #property description "Предупреждение о рисках. Торговля на рынке Forex с использованием" #property description "кредитного плеча несёт в себе значительные финансовые риски." //#property icon "\\Images\\Constructor.ico" // путь к файлу заставки #property strict #property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 2 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #property indicator_label1 "AOM UP" #property indicator_color1 clrGreen #property indicator_width1 3 #property indicator_style1 STYLE_SOLID #property indicator_type1 DRAW_HISTOGRAM #property indicator_label2 "AOM DN" #property indicator_color2 clrRed #property indicator_width2 3 #property indicator_style2 STYLE_SOLID #property indicator_type2 DRAW_HISTOGRAM #property indicator_level1 0.0000 // Горизонтальный уровень в отдельном окне индикатора input int AOM_PERIOD_FACTOR = 1 ; // AOM. Коэф-т повышения периода усреднения input int AOM_PERIOD_FAST = 5 ; // AOM. Период усреднения MA быстрой input int AOM_PERIOD_SLOW = 34 ; // AOM. Период усреднения MA медленной input int AOM_SHIFT = 0 ; // AOM. Сдвиг по горизонтали input ENUM_MA_METHOD AOM_METHOD = MODE_SMA ; // AOM. Метод усреднения input ENUM_APPLIED_PRICE AOM_PRICE = PRICE_MEDIAN ; // AOM. Цена усреднения //+------------------------------------------------------------------+ //| Глобальные переменные //+------------------------------------------------------------------+ double aUP[], aDN[]; // INDICATOR_DATA double aom, last_aom; // текущее и предыдущее значения индикатора AO int ma_fast_handle; // =iMA(_Symbol, PERIOD_CURRENT, AOM_PERIOD_FAST, AOM_SHIFT, AOM_METHOD, AOM_PRICE); int ma_slow_handle; // =iMA(_Symbol, PERIOD_CURRENT, AOM_PERIOD_SLOW, AOM_SHIFT, AOM_METHOD, AOM_PRICE); int MAX_PERIOD; // периоды усреднения быстрой и медленной MA (в барах) int AOM1_PERIOD_FAST; // =AOM_PERIOD_FAST*AOM_PERIOD_FACTOR; int AOM1_PERIOD_SLOW; // =AOM_PERIOD_SLOW*AOM_PERIOD_FACTOR; //+------------------------------------------------------------------+ //| Custom indicator initialization function //+------------------------------------------------------------------+ int OnInit () { // Подготовить периоды усреднения быстрой и медленной MA (в барах) AOM1_PERIOD_FAST=AOM_PERIOD_FAST*AOM_PERIOD_FACTOR; AOM1_PERIOD_SLOW=AOM_PERIOD_SLOW*AOM_PERIOD_FACTOR; MAX_PERIOD=( int ) MathMax (AOM1_PERIOD_FAST, AOM1_PERIOD_SLOW)+ 1 ; // Распределяет память под буферы, используемые для вычислений пользовательского индикатора ArraySetAsSeries (aUP, true ); SetIndexBuffer ( 0 , aUP, INDICATOR_DATA ); ArraySetAsSeries (aDN, true ); SetIndexBuffer ( 1 , aDN, INDICATOR_DATA ); // Номер позиции начала отрисовки линии индикатора // sets drawing line empty value PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN , MAX_PERIOD); PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE ); PlotIndexSetInteger ( 1 , PLOT_DRAW_BEGIN , MAX_PERIOD); PlotIndexSetDouble ( 1 , PLOT_EMPTY_VALUE , EMPTY_VALUE ); // set accuracy IndicatorSetInteger ( INDICATOR_DIGITS , _Digits + 1 ); string short_name; StringConcatenate (short_name, "AOM [" , AOM_PERIOD_FACTOR, "] (" , AOM_PERIOD_FAST, "," , AOM_PERIOD_SLOW, ")" ); IndicatorSetString ( INDICATOR_SHORTNAME , short_name); ResetLastError (); // Инициализация 2-х индикаторов MA ma_fast_handle= iMA ( _Symbol , PERIOD_CURRENT , AOM1_PERIOD_FAST, AOM_SHIFT, AOM_METHOD, AOM_PRICE); ma_slow_handle= iMA ( _Symbol , PERIOD_CURRENT , AOM1_PERIOD_SLOW, AOM_SHIFT, AOM_METHOD, AOM_PRICE); return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Функция деинициализации является обработчиком события Deinit //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { // Удалить хэндлы индикаторов и освобождить расчетную часть индикатора if (ma_slow_handle!= INVALID_HANDLE ) IndicatorRelease (ma_slow_handle); if (ma_fast_handle!= INVALID_HANDLE ) IndicatorRelease (ma_fast_handle); return ; } //+------------------------------------------------------------------+ //| Custom indicator iteration function //+------------------------------------------------------------------+ int OnCalculate ( const int rates_total, // размер входных таймсерий const int prev_calculated, // обработано баров на предыдущем вызове const datetime & time[], // Time const double & open[], // Open const double & high[], // High const double & low [], // Low const double & close[], // Close const long & tick_volume[], // Tick Volume const long & real_volume[], // Real Volume const int & spread[]) // Spread { int N=rates_total-prev_calculated; if (N>MAX_PERIOD) N-=MAX_PERIOD; for ( int i=N; i> 0 && ! IsStopped (); i--) { double ma_fast=getMA(ma_fast_handle, i); double ma_slow=getMA(ma_slow_handle, i);; aom=ma_fast-ma_slow; if (aom>last_aom) {aUP[i]=aom; aDN[i]= EMPTY_VALUE ;} else {aDN[i]=aom; aUP[i]= EMPTY_VALUE ;} last_aom=aom; } aUP[ 0 ]= EMPTY_VALUE ; aDN[ 0 ]= EMPTY_VALUE ; return (rates_total); } //+-------------------------------------------------------+ //| Возвращает значение индикатора «MA» //+-------------------------------------------------------+ double getMA( int handle, int i) // откуда начнем копирование { double aMA[ 1 ]; // массив для получения значениz индикатора double nMA= 0 ; int k= CopyBuffer (handle, 0 , i, 1 , aMA); nMA=aMA[ 0 ]; if (k< 1 ) { int err= GetLastError (); Print ( "*** MA=" , handle, " CopyBuffer error #" , err);} return (nMA); }
Birçok nesne olduğunda bu davranışı gözlemliyorum. Hiçbir nesne olmadığında, her şey az çok normaldir. Gösterge arabellekleri bazen bir onay işareti geldiğinde (güncelleme nesnelerinin varlığında) yanıp sönebilir.
Bunun MT5'in bir özelliği olduğuna inanıyorum, çünkü göstergeler artık her sembol / zaman dilimi için ayrı iş parçacıklarında ve GUI iş parçacığındaki resmi güncellemek için senkronizasyon gerekiyor ve bu, tek iş parçacıklı ile karşılaştırıldığında frenler ekliyor MT4 modeli. Nesnelerle çalışmak en yoğun kaynak gerektiren işlemdir, çünkü bu şekilde ortaya çıkar. Sorun nesneler olmadan gözlemleniyorsa, muhtemelen gösterge kodunda başka bir yükleme var. Yerelleştirmeye ve dışlamaya çalışırsanız, daha iyi olması gerekir.
Gösterge nesnelerle çalışmaz, bu nedenle bu neden göz ardı edilebilir. Bunun m.b olduğunu kabul ediyorum. program koduyla ilgili ama kodu biraz daha yüksek verdim, çok basit ve sadece başarısız olabileceği bir yer göremiyorum. Şimdiye kadarki ana sorular cevapsız kaldı - kim suçlu ve ne yapmalı? Bununla bir şekilde başa çıkılabilir mi yoksa prensipte düzeltilemez mi? M.b. geliştiriciler ağır sözlerini burada mı söyleyecekler ?!
Bu arada sabah oldu, borsa henüz açılmadı, yani tüm göstergeler rayında, "Veri Penceresi"ndeki arabellekler yeniden çizilmedi, çizgiler titremiyor.
Eh, borsa açıldı ve yine her şey aynı zamanda bir film. Yine de, her işaretin gelişiyle gösterge verilerinin yeniden hesaplandığını anlayabiliyorum, ancak neden tüm gösterge arabelleklerini veri penceresi tablosundan silelim? Sadece değerlerini yerinde güncellemek yeterli değil mi? Örneğin, Kapanış fiyatı ile yapılma şekli. Ne de olsa, yeni bir işaretin ortaya çıkmasıyla, Kapat'ın kapanış fiyatı, güncellenmiş bir değerle yeniden görünecek şekilde veri penceresinden kaybolmuyor mu? O halde gösterge arabellekleri neden bir süreliğine kayboluyor? Ek olarak, bazı göstergeler mevcut sıfır çubuğunda yeniden hesaplanmaz, ancak bir nedenden dolayı "Veri Penceresinde" de yeniden çizilirler mi?
Hala bilgili kişilerden bir cevap veya en azından bir bağlantı bekliyorum.
Bir şeyler yanlış gibi görünüyor. Ya sorum alakalı olmaktan çıktı ve çözüm uzun zamandır bulundu ya da yanlış başlıkta sordum. Belki forumda bilgili insanlar vardır veya geliştiriciler forumun bu bölümünü izlemiyor mu?
Gösterge arabellekleri neden "Veri Penceresinde" bir süreliğine kayboluyor? Temelde tedavi edilmiyor mu yoksa düzeltilebilir mi? Yukarıdaki kodda yanlış olan nedir? Ayrıca gösterge, mevcut çubuktaki değerini yeniden hesaplamaz.

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hem ana grafik penceresinde hem de ayrı bir pencerede göstergelerin (çizgiler, oklar, histogramlar) titremesine ne sebep olabilir? Gösterge yeniden çiziliyor gibi görünüyor ve şu anda veri penceresinde etiketler ve arabellek değerleri bir saniye listeden kayboluyor ve ardından listede yeniden görünüyor. Kodda yanlış bir şey mi var?
Ayrıca, bu sadece MT5 değişim terminalinde gözlenir, bu MT4'te gözlenmez.