Womit kann das Flackern der Indikatoren (Linien, Pfeile, Histogramme) zusammenhängen, sowohl im Hauptfenster des Charts als auch in einem separaten Fenster? Es entsteht der Eindruck, dass der Indikator neu gezeichnet wird und gleichzeitig im Datenfenster die Beschriftungen und Pufferwerte für eine Sekunde aus der Liste verschwinden, um dann wieder in der Liste zu erscheinen. Ist etwas mit dem Programmiercode nicht in Ordnung?
Und dies wird nur im MT5-Terminal beobachtet, nicht aber im MT4.
Wollen Sie damit sagen, dass wir versuchen sollen, zu raten? Sie können mich gerne kontaktieren ; )
Nein, es ist nur so, dass die Suche die Frage, die mich interessiert, nicht beantwortet hat.
Wissen Sie vielleicht, warum das Flimmern nur im MT5-Börsenterminal zu beobachten ist, im MT5-Forex-Terminal tritt das Flimmern nicht auf?
Nein, die Suche hat nur nicht die Frage beantwortet, die mich interessiert hat.
Wissen Sie vielleicht, warum das Flimmern nur im MT5-Börsenterminal auftritt , im MT5-Forex-Terminal jedoch nicht?
Flackern alle Anzeigen? Der MT5 ist derselbe, nur der Kontotyp kann unterschiedlich sein - Börse oder Forex.
Das habe ich gemeint, als ich das Devisen- und Börsenterminal MT5 kurz erwähnt habe. Ein umfassenderes Problem klingt wie folgt. Wenn ich mich mit einem Forex-Broker verbinde, flackern die Indikatoren im MT5-Terminal nicht, aber wenn ich mich mit einem Börsenmakler verbinde, sehe ich ein Flackern und auch die Puffermarkierungen der Indikatoren und die Werte verschwinden für ein oder zwei Sekunden im Datenfenster.
Die Frage, ob sich alle Indikatoren so verhalten, kann ich nicht beantworten. Ich werde jetzt einen Beitrag schreiben, damit er nicht unsubstantiiert ist.
//+-----------------------------------------------------------------------------------------------------+ //| 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); }
Ich beobachte dieses Verhalten, wenn es viele Objekte gibt. Wenn es keine Objekte gibt, ist alles mehr oder weniger normal. Indikatorpuffer können auch manchmal blinken, wenn ein Tick kommt (wenn es Objekte gibt, die aktualisiert werden).
Ich denke, dies ist eine Funktion von MT5, es ist mit der Tatsache verbunden, dass jetzt Indikatoren in separaten Threads für jedes Symbol/Zeitstempel und für die Aktualisierung des Bildes in GUI-Thread es braucht Synchronisation, die Langsamkeit im Vergleich zu den einzelnen Thread-Modell von MT4 fügt. Die Arbeit mit Objekten ist der ressourcenintensivste Vorgang, weshalb er dieses Problem verursacht. Wenn das Problem auch ohne Objekte auftritt, liegt vielleicht eine andere Belastung im Code des Indikators vor. Wenn Sie versuchen, es zu lokalisieren und auszuschließen, sollte es besser werden.
Der Indikator funktioniert nicht mit Objekten, das kann also ausgeschlossen werden. Ich gebe zu, dass es mit dem Softwarecode zusammenhängen könnte, aber der Code, den ich oben zitiert habe, ist sehr einfach, und ich kann einfach nicht sehen, wo er versagt. Die wichtigsten Fragen sind noch immer unbeantwortet: Wer ist schuld und was ist zu tun? Gibt es irgendeine Möglichkeit, damit umzugehen, oder ist es prinzipiell unverbesserlich? Vielleicht werden die Entwickler hier ein Wörtchen mitreden!
Übrigens, es ist Morgen, die Börse hat noch nicht geöffnet, also stehen alle Indikatoren wie Stöcke, die Puffer im "Datenfenster" werden nicht neu gezeichnet, die Linien blinken nicht.
Nun, die Börse öffnete, und wieder alle den gleichen Film. Ich kann verstehen, dass die Indikatordaten bei jedem Tick neu berechnet werden, aber warum sollte ich alle Indikatorpuffer aus der Tabelle im Datenfenster entfernen? Reicht es nicht aus, ihre Werte vor Ort zu aktualisieren? Zum Beispiel die Art und Weise, wie es mit dem Schlusskurs gemacht wird. Denn bei einem neuen Tick verschwindet der Schlusskurs nicht aus dem Datenfenster, um mit dem aktualisierten Wert wieder zu erscheinen? Warum verschwinden dann die Indikatorpuffer für eine gewisse Zeit? Außerdem werden einige Indikatoren nicht auf dem aktuellen Nullbalken neu berechnet, aber warum werden sie auch im "Datenfenster" neu gezeichnet?
Ich hoffe immer noch auf eine Antwort von sachkundigen Personen oder zumindest auf einen Link.
Da scheint etwas nicht zu stimmen. Entweder ist meine Frage nicht mehr relevant und es wurde längst eine Lösung gefunden, oder ich habe sie im falschen Thread gestellt. Vielleicht gibt es keine sachkundigeren Leute im Forum, oder die Entwickler überwachen diesen Bereich des Forums nicht?
Warum verschwinden im "Datenfenster" die Indikatorpuffer für eine gewisse Zeit? Ist dieses Problem nicht grundsätzlich gelöst, oder ist es lösbar? Was ist an dem obigen Code falsch? Und der Indikator berechnet seinen Wert nicht für den aktuellen Balken neu.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Worauf kann sich das Blinken der Indikatoren (Linien, Pfeile, Histogramme) beziehen, sowohl im Hauptfenster des Charts als auch in einem separaten Fenster? Es entsteht der Eindruck, dass der Indikator neu gezeichnet wird und gleichzeitig die Markierungen und die Pufferwerte für eine Sekunde aus der Liste verschwinden, um dann wieder in der Liste zu erscheinen. Ist etwas mit dem Programmcode nicht in Ordnung?
Dies ist nur auf dem MT5-Terminal zu beobachten, nicht aber auf dem MT4.