A cosa può essere collegato lo sfarfallio degli indicatori (linee, frecce, istogrammi), sia nella finestra principale del grafico che in una finestra separata? L'impressione è che l'indicatore venga ridisegnato, e allo stesso tempo nella finestra dei dati le etichette e i valori del buffer spariscono dalla lista per un secondo, e poi appaiono di nuovo nella lista. Qualcosa di sbagliato nel codice del programma?
E questo si osserva solo nel terminale MT5, non si osserva in MT4.
Sta suggerendo di provare a indovinare? Sentitevi liberi di contattarmi ; )
No, è solo che la ricerca non ha risposto alla domanda che mi interessa.
Forse sapete perché il flicker si osserva solo nel terminale di scambio MT5, nel terminale forex MT5 il flicker non si verifica?
No, la ricerca non ha risposto alla domanda che mi interessava.
Forse sapete perché il flicker si osserva solo nel terminale di scambio MT5, nel terminale forex MT5 non c'è flicker?
Tutti gli indicatori lampeggiano? La MT5 è la stessa, solo il tipo di conto può essere diverso - scambio o forex.
Questo è quello che intendevo quando ho menzionato il terminale MT5 per il forex e la borsa in breve. Un problema più completo suona così. Quando mi connetto al broker forex gli indicatori nel terminale MT5 non sfarfallano, ma quando mi connetto al broker azionario vedo lo sfarfallio e anche i segni del buffer degli indicatori e i valori scompaiono nella finestra dei dati per un secondo o due.
Per quanto riguarda la domanda se tutti gli indicatori si comportano così, non posso dirlo. Permettetemi di postarne uno ora, per non essere infondato.
//+-----------------------------------------------------------------------------------------------------+ //| 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); }
Osservo questo comportamento quando ci sono molti oggetti. Quando non ci sono oggetti, tutto è più o meno normale. I buffer degli indicatori possono anche lampeggiare a volte quando arriva un tick (quando ci sono oggetti in aggiornamento).
Penso che questa sia una caratteristica di MT5, è collegata al fatto che ora gli indicatori sono in thread separati per ogni simbolo/timestamp e per aggiornare l'immagine nel thread della GUI è necessaria la sincronizzazione, che aggiunge lentezza rispetto al modello a thread singolo di MT4. Lavorare con gli oggetti è l'operazione che richiede più risorse, ecco perché causa questo problema. Se il problema si osserva senza oggetti, forse c'è qualche altro caricamento nel codice dell'indicatore. Se provate a localizzarlo ed escluderlo, dovrebbe migliorare.
L'indicatore non funziona con gli oggetti, quindi questo può essere escluso. Ammetto che potrebbe essere legato al codice del software, ma il codice che ho citato sopra è molto semplice e non riesco proprio a vedere dove sta fallendo. Le domande principali rimangono ancora senza risposta - di chi è la colpa e cosa fare? C'è un modo per affrontarlo o è incorreggibile in linea di principio? Forse gli sviluppatori potranno dire la loro qui!
A proposito, è mattina, la borsa non ha ancora aperto, quindi tutti gli indicatori sono fermi come bastoni, i buffer nella "Finestra dati" non vengono ridisegnati, le linee non lampeggiano.
Bene, lo scambio si è aperto, e di nuovo tutto lo stesso film. Posso capire che i dati degli indicatori siano ricalcolati ad ogni tick, ma perché dovrei rimuovere tutti i buffer degli indicatori dalla tabella della finestra dei dati? Non è sufficiente aggiornare i loro valori sul posto? Per esempio, il modo in cui si fa con il prezzo di chiusura. Dopo tutto, con un nuovo tick il prezzo di chiusura non scompare dalla finestra dei dati per apparire di nuovo con il valore aggiornato? Perché allora i buffer degli indicatori spariscono per qualche tempo? Inoltre, alcuni indicatori non vengono ricalcolati sulla barra zero corrente, ma perché vengono ridisegnati anche nella "Finestra dati"?
Spero ancora in una risposta da persone competenti, o almeno in un link.
Sembra che ci sia qualcosa che non va. O la mia domanda non è più rilevante e una soluzione è stata trovata da tempo, o l'ho posta nel thread sbagliato. Forse non ci sono persone più esperte sul forum, o gli sviluppatori non controllano questa sezione del forum?
Perché nella "Finestra dei dati" i buffer degli indicatori scompaiono per qualche tempo? Non è fissato in linea di principio o è risolvibile? Cosa c'è di sbagliato nel codice di cui sopra? E l'indicatore non ricalcola il suo valore sulla barra corrente.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
A cosa può essere collegato il lampeggiare degli indicatori (linee, frecce, istogrammi), sia nella finestra principale del grafico che in una finestra separata? L'impressione è che l'indicatore venga ridisegnato e che allo stesso tempo i segni e i valori del buffer scompaiano dalla lista per un secondo, per poi ricomparire nella lista. C'è qualcosa di sbagliato nel codice del programma?
Questo si osserva solo nel terminale MT5, non si osserva in MT4.