Ich werde den Indikator kostenlos schreiben - Seite 19

 
Tango_X:

Ich habe es mit OnTimer() implementiert und es kam nichts dabei heraus. Leider berechnet das onTimer()-Ereignis den Indikator nicht und die Verzögerung wird gespeichert, vielleicht eine laute Aussage und ich habe etwas falsch gemacht, bitte korrigieren. Danke!

Was Sie getan haben, ist keine Implementierung durch OnTimer(). Sie erhalten dort einfach Werte (die gesamte Geschichte, und zwar jede Sekunde, ohne Überprüfung). Wie auch immer, ich glaube nicht, dass Sie es selbst umsetzen können. Warten Sie auf die Antwort des Branchenautors:)
 
Alexey Kozitsyn:
Was Sie getan haben, ist keine Implementierung durch OnTimer(). Sie erhalten dort nur Werte (die gesamte Geschichte und jede Sekunde, ohne jegliche Kontrolle). Im Allgemeinen ist es unwahrscheinlich, dass Sie es selbst umsetzen können. Warten Sie auf die Antwort des Autors der Branche:)
Ja, danke! Ich habe bereits mit dem Autor des Zweigs Kontakt aufgenommen, und er hat versprochen, mir zu helfen! Ich warte auf eine Antwort))
 
Tango_X:

Ich habe es mit OnTimer() implementiert und es kam nichts dabei heraus. Leider berechnet das onTimer()-Ereignis den Indikator nicht und die Verzögerung wird gespeichert, vielleicht eine laute Aussage und ich habe etwas falsch gemacht, bitte korrigieren. Danke!

//+------------------------------------------------------------------+
//|                                              TestCopyBuffer3.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//---- plot MA
#property indicator_label1  "MA"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
bool               AsSeries=true;
int                period=15;
input ENUM_TIMEFRAMES    TimeFrame=PERIOD_CURRENT; //Период графика
ENUM_MA_METHOD     smootMode=MODE_EMA;
ENUM_APPLIED_PRICE price=PRICE_CLOSE;
int                shift=0;
//--- indicator buffers
double                   MABuffer[];
int                      ma_handle;
int to_copy;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
   Print("Параметр AsSeries = ",AsSeries);
   Print("Индикаторный буфер после SetIndexBuffer() является таймсерией = ",
         ArrayGetAsSeries(MABuffer));
//--- set short indicator name
   IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//--- set AsSeries (depends on input parameter)
   ArraySetAsSeries(MABuffer,AsSeries);
   Print("Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = ",
         ArrayGetAsSeries(MABuffer));
//---
   ma_handle=iMA(Symbol(),TimeFrame,period,shift,smootMode,price);
   EventSetTimer(1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--- check if all data calculated
   if(BarsCalculated(ma_handle)<rates_total) return(0);
//--- we can copy not all data
   //int to_copy;
   if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total;
   else
     {
      to_copy=rates_total-prev_calculated;
      //--- last value is always copied
      to_copy++;
     }
//--- try to copy
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   CopyBuffer(ma_handle,0,0,to_copy,MABuffer);
   Print("Таймер");
  }
//+------------------------------------------------------------------+
Ich denke, was ich meine, ist, alles inOnCalculate zuOnTimer zuverschieben
 
Yurij Izyumov:
Ich nehme an, das bedeutet, alles inOnCalculate nachOnTimer zuverschieben
Wenn es funktioniert, warum nicht!
 
Eine Lösung wurde hier vorgeschlagen, aber da ich ein unerfahrener Programmierer bin, ist dies für mich ziemlich schwierig zu implementieren, weshalb ich in diesem Thread um Hilfe gebeten habe
 
Yurij Izyumov:

Um sie umzuschreiben, müssen alle Indikatoren, die einbezogen werden sollen, auch unter mql5 sein

Was ist mit der Neufassung? Ist der Code zu kompliziert???
 
Guten Tag. Ich bin auf der Delta_RSI-Indikator, es hält Zeichnung (siehe Screenshot) histo in beide Richtungen zur gleichen Zeit (siehe Fehler). Außerdem ist es möglich, das Nullsignal bei Über-/Unterschreitung des Nullpunkts unterschiedlich einzufärben. Werden Sie in der Lage sein zu sehen (richtig)? Ich danke Ihnen.
 
Igor371:
Nachmittags. Ich bin auf der Delta_RSI-Indikator, ich habe es ständig Zeichnung (siehe Screenshot) histo beide Wege zur gleichen Zeit (suchen Sie nach Fehler). Und es ist möglich, die Farbe des Nicht-Signals für über/unter Null zu färben. Werden Sie in der Lage sein zu sehen (richtig)? Ich danke Ihnen.

beschreiben Sie, was Sie tun, um es zu brechen ))))

Diagramm, TF, Sequenz, etc.

 
Yurij Izyumov:

beschreiben Sie, was Sie tun, um es zu brechen ))))

Diagramm, TF, Sequenz, etc.

Sie tun nicht wirklich etwas. Ich habe zum Beispiel große Zeiträume von 1000/250 auf M1. An einem bestimmten Punkt werden beide Seiten der Null gleichzeitig zu einem Geschäft. Ich weiß nicht genau, zu welchem Zeitpunkt, aber ich werde es mir genauer ansehen. Ich habe keine Probleme damit im Code, nichts zu beheben?
 
Guten Tag. Ich kann nicht erkennen, wann der Indikator bricht. Er steht da und alles ist in Ordnung, aber dann geht er kaputt. Ich habe nicht begegnet Makler, um alle Manipulationen zu tun, weil ich oft die gleiche Sache mit Pfeilen, (aber ich setze es auf Zeichnung Indizes, und hier RSI) Ich werde eine Eule zu setzen, um mit Screenshots aufpassen.
Dateien:
GBPUSD.mM1.png  32 kb