Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 777

 
Aleksey Vyazmikin:

Können Sie einen Kernel für OpenCL schreiben? Ich kenne hier nur eine Person, die behauptet, OpenCL zur Optimierung im laufenden Betrieb zu verwenden - während der EA läuft. Andere Beispiele sind mir nicht bekannt.

Ich würde sie mir gerne selbst ansehen. Er bat sogar darum, einen Artikel zu diesem Thema zu veröffentlichen, aber die Verwaltung weiß nicht, wie sie ihn auf den realen Handel anwenden soll.

Es ist erstaunlich, opencl wird bereits seit 5 Jahren unterstützt, aber es gibt keine konkreten Arbeitsbeispiele für den Handel und keine Artikel... Nun, da die Entwickler selbst nicht wissen, wie man es anwendet, sollten wir uns auf die Cloud-Optimierung konzentrieren
 
ax237b:
es ist einfach erstaunlich, Unterstützung für opencl gibt es seit 5 Jahren und keine konkreten Arbeitsbeispiele für den Handel oder Artikel ... gut, wenn die Entwickler selbst nicht wissen, wie man es anwenden, dann lassen Sie uns auf Cloud-Optimierung konzentrieren
Was ist daran so überraschend? Das Terminal arbeitet mit ausreichender Geschwindigkeit, die Verzögerung bei der Antwort des Maklers. opencl ruht also erst einmal. Wie es weitergeht - wir werden sehen
 

Bitte um Hilfe!

Ich bin Remaking der Indikator, hier ist der Code für die Zeichnung

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   3
//--- plot Label1
#property  indicator_label1  "High";
#property  indicator_type1   DRAW_LINE;
#property  indicator_color1  clrRed;
#property  indicator_style1  STYLE_DOT;
#property  indicator_width1  1;
//--- plot Label2
#property  indicator_label2  "Low";
#property  indicator_type2   DRAW_LINE;
#property  indicator_color2  clrRed;
#property  indicator_style2  STYLE_DOT;
#property  indicator_width2  1;
//--- plot Label3
#property  indicator_label3  "Close";
#property  indicator_type3   DRAW_LINE;
#property  indicator_color3  clrAquamarine;
#property  indicator_style3  STYLE_SOLID;
#property  indicator_width3  1;


//--- input parameters
input int InpChannelPeriod=48; // Period
//--- indicator buffers
double ExtHighBuffer[];
double ExtLowBuffer[];
double ExtCloseBuffer[];
//---
int i,limit,start;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtHighBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtLowBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,ExtCloseBuffer,INDICATOR_DATA);   
//--- set accuracy
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//--- set first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpChannelPeriod);
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,InpChannelPeriod);
   PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,InpChannelPeriod);   
//---
   return(0);
  }

//+------------------------------------------------------------------+ //| 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 for rates if(rates_total<InpChannelPeriod) return(0); //--- preliminary calculations if(prev_calculated==0) limit=InpChannelPeriod; else limit=prev_calculated; //--- the main loop of calculations for(i=limit;i<rates_total && !IsStopped();i++) { ExtHighBuffer[i]=100.0; ExtLowBuffer[i]=0.0; ExtCloseBuffer[i]=50.0; } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+

Stil#propertyindicator_style2STYLE_DOT; - zeichnet überhaupt nicht auf dem Diagramm

Stil#propertyindicator_style2STYLE_SOLID; - zeichnet auf dem Diagramm inSTYLE_DOT

Was ist das für eine Anomalie, oder sind meine Hände falsch?

 

Wie berechnet man am besten den gleitenden Durchschnitt aus dem grafischen Feld - hier oder im Indikator?

Gibt es vorgefertigte Funktionen oder Bibliotheken, die von Entwicklern empfohlen werden?

 
Aleksey Vyazmikin:

Wie berechnet man am besten den gleitenden Durchschnitt aus dem grafischen Feld - hier oder im Indikator?

Vielleicht gibt es einige fertige Funktionen oder Bibliotheken, die von Entwicklern empfohlen werden?


Oder sogar eine einfache Variante - MA im Keller von iMA zu zeichnen - ich bekomme nichts :(

Ich rufe über die Funktion

double MA_TF(int index)
  {
   double MA[1];
   ResetLastError();
   if(CopyBuffer(handle_MA_TF,0,index,1,MA)<0)
     {
      PrintFormat("Failed to copy data from the handle_MA_TF indicator, error code %d",GetLastError());
      return(0.0);
     }
   return NormalizeDouble(MA[0],Digits());
  }

Aber es ist nicht richtig - von innen nach außen...

 

Mit dem Assistenten habe ich einen Aufruf von innen nach außen zu MA_TF(rates_total-i) - es schien zu helfen, aber ich schaue auf die Geschichte und manchmal gibt es eine Diskrepanz mit dem integrierten Indikator (auch mit Normalisierung entfernt), kann dies der Fall sein?

Und wie kann man den Indikator dazu bringen, Dezimalwerte auszugeben?

 
Aleksey Vyazmikin:

Wie berechnet man am besten den gleitenden Durchschnitt aus dem grafischen Feld - hier oder im Indikator?

Gibt es vorgefertigte Funktionen oder Bibliotheken, die von Entwicklern empfohlen werden?

Im Ordner "Include" befindet sich die Datei "MovingAverages.mqh"...
 
Alexey Viktorov:
Im Ordner "Include" befindet sich die Datei "MovingAverages.mqh"...

Danke, das wusste ich nicht, aber kann ich ein Beispiel sehen, wo man damit arbeiten kann?

 
Aleksey Vyazmikin:

Danke, das wusste ich nicht, aber kann ich ein Beispiel sehen, wo man damit arbeiten kann?

Alexey, funktioniert die Suche nicht mehr?

Oben rechts befindet sich eine Dateisuche. Sie passen den Suchbereich an, indem Sie auf das Zahnrad klicken.


Und hier ist das Ergebnis.


 
Alexey Viktorov:

Alexej, funktioniert die Suche nicht mehr?

Oben rechts befindet sich eine Dateisuche. Sie passen den Suchbereich an, indem Sie auf das Zahnrad klicken.


und hier ist das Ergebnis.



In der Tat, warum nicht selbst suchen - danke!