Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 669

 
psyman:

Ich habe Ihre Korrespondenz zu meinem Thema gelesen, das ist alles sehr amüsant :-), aber was ist mit der Frage, die diese ganze Aufregung verursacht hat?

Die Deklaration eines Arrays überSetIndexBuffer(1, tmp1) bringt nichts. Natürlich kann ich die Array-Größe in der gleichen Schleife erhöhen, aber ich möchte einen einfacheren und effizienteren Weg kennen.

Zeigen Sie mir den vollständigen Code - was Sie dort gemacht haben, was Sie wollten und was Sie bekommen haben.

 

Ich möchte auf die Volatilität achten. Zumindest für den Anfang wird die Mittelwertbildung über einen Zeitraum mit Hilfe von SMAs durchgeführt.


//+------------------------------------------------------------------+
//|                                                        _null.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot OC
#property indicator_label1  "O-C"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrSteelBlue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         ip1Buf[];

input int ip1=100;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
  
string s_name1;

s_name1="O-C (" + IntegerToString(ip1) + ")";

IndicatorShortName(s_name1);
SetIndexLabel(0, s_name1);


//--- indicator buffers mapping
   SetIndexBuffer(0,ip1Buf);
   
//---
   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[])
  {


int i;
double tmp1[];

SetIndexBuffer(1, tmp1);


      Print("rates_total = ",rates_total);
      for(i=1; i<rates_total-1; i++)
      {
      tmp1[i]=close[i];      
      ip1Buf[i]=iMA(NULL,0,100,0,0,tmp1[i],0);
      
      }
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
psyman:

Ich möchte auf die Volatilität achten. Zumindest für den Anfang wird mit SMA eine Mittelwertbildung über einen Zeitraum vorgenommen.


SetIndexBuffer(1, tmp1) warum nicht in OnInit() ?

Warum keine IndicatorBuffers(2) ?

Warum berechnen Sie das nicht optimal? Bei jedem Tick gibt es eine vollständige Schleife.

Warum iMA() und nicht iMAOnArray()?

 

=Warumkeine IndicatorBuffers(2) ?


#property strict beschwert sich nicht darüber, deshalb habe ich es wahrscheinlich nicht reingeschrieben.


=WarumiMA() und nicht iMAOnArray() ?


Ich habe nicht genug Wissen, und im Lehrbuch steht nichts darüber.

Mangelnde Systemkenntnisse sind eine ernsthafte Einschränkung.


=Vollständige Schleifebei jedem Tick.


Ich verstehe nichts davon, bitte erklären Sie es mir oder geben Sie mir einen Link, wo es gemacht wird.

Ich habe mindestens eine Stunde TF.

 
=На  istjeder Tick ein voller Zyklus.


Ich verstehe das alles nicht, bitte erklären Sie es mir oder geben Sie mir einen Link, wo das gemacht wird.

Ich habe eine Mindest-TF von einer Stunde.

Bei jedem Aufruf von OnCalculate haben Sie die for-Schleife, um die Daten von 1 bis rates_total durchzugehen, d. h. dieselbe Aufgabe zu erfüllen. Das ist natürlich eine schlechte Sache.

 
psyman:

=Warumkeine IndicatorBuffers(2) ?


#property strict beschwert sich nicht darüber, deshalb habe ich es wahrscheinlich nicht reingeschrieben.


=WarumiMA() und nicht iMAOnArray() ?


Ich habe nicht genug Wissen, und im Lehrbuch steht nichts darüber.

Mangelnde Systemkenntnisse sind eine ernsthafte Einschränkung.


=Vollständige Schleifebei jedem Tick.


Ich verstehe nichts davon, bitte erklären Sie mir, warum, oder geben Sie mir einen Link, wo das gemacht wird.

Ich habe mindestens eine Stunde TF.

Wissen Sie, ich habe eine Indikatorvorlage an diesen Thread angehängt - irgendwo in der Mitte des Threads - Sie können sie finden und daraus machen, was Sie wollen. Schlagen Sie es nach. Ich habe auch geschrieben, dass die Leute oft daran interessiert sind, was vor sich geht, also habe ich beschlossen, eine Indikatorvorlage zu erstellen und sie in diesen Thread zu stellen.

 

Forum für Handel, automatisierte Handelssysteme und Strategietests

Alle Fragen von Neulingen zu MQL4, Hilfe und Diskussion über Algorithmen und Codes

Andrei Novichkov, 2018.10.17 22:06

Bei jedem Aufruf von OnCalculate haben Sie eine for-Schleife zum Durchsuchen der Daten von 1 bis rates_total, d. h. Sie führen dieselbe Aufgabe aus. Das ist sicherlich eine schlechte Sache.


Wenn Sie sagen, dass es schlecht ist, sagen Sie mir, wie man es gut macht. Sollte ich Berechnungen in OnInit verschieben?

 

Forum für Handel, automatisierte Handelssysteme und Strategietests

Alle Fragen für Neulinge auf MQL4, Hilfe und Diskussion über Algorithmen und Codes

Artyom Trishkin, 2018.10.17 22:10

Wissen Sie, ich habe direkt in diesem Zweig - irgendwo in der Mitte - eine Indikatorvorlage angehängt - Sie können sie finden, und direkt daraus tun, was Sie wollen. Schlagen Sie es nach. Ich habe geschrieben, dass viele Leute daran interessiert sind, wie es funktioniert, und ich habe beschlossen, eine Indikatorvorlage zu erstellen und sie in diesen Thread zu stellen.


Die Suche nach den Worten "Indikatorvorlage" und Ihrem Namen findet nichts, und schrieb hier bereits über den Band Krieg und Frieden.

Jede beliebige Kombination von Wörtern aus dem Beitrag kommt mir in den Sinn.

 
Wie erstellt man ein Array von Klasseninstanzen?
Erzeugt ClassName* className[], dann ArrayResize darauf, gibt aber keinen ungültigen Zeigerzugriff auf Methoden
 
Roman Sharanov:
Wie erstellt man ein Array von Klasseninstanzen?
Erzeugt ClassName* className[], dann ArrayResize darauf, gibt aber keinen ungültigen Zeigerzugriff auf Methoden

Es gibt ein Beispiel inCArrayObj

Grund der Beschwerde: