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

 
Rustam Bikbulatov:
Zweitens. Der Befehl zum Öffnen eines Auftrags

Das ergibt keinen Sinn. Was hat das mit einem Börsenauftrag zu tun? Vielleicht ist es der Indikatorruf? Ändern Sie dann den Indikator und rufen Sie ihn mit iCustom anstelle von iMACD auf.

Vielleicht ist es gar nicht nötig, irgendetwas zu ändern, denn die kodobase ist voll von Leckereien.

 
Vitalie Postolache:

Das ergibt keinen Sinn. Was hat das mit einem Börsenauftrag zu tun? Vielleicht ist es der Indikatorruf? Ändern Sie dann den Indikator und rufen Sie ihn mit iCustom anstelle von iMACD auf.

Vielleicht brauche ich gar nichts zu ändern, Kodobase ist voll von guten Dingen.


Ich habe es über iCustom versucht, aber es funktioniert nur langsam. Ich habe es überiMAOnArray versucht, hatte aber ein Problem mit Arrays. Ich habe ein paar Tage gebraucht, um alle Arrays miteinander zu verbinden. Es ist einfacher, iMACDzu machen, aber das ist die Frage

 
Rustam Bikbulatov:

Ich habe iCustom ausprobiert, aber es arbeitet langsam. VersuchtiMAOnArray, aber es gibt ein Problem mit Arrays. Ich konnte ein paar Tage lang nicht alles unter einen Hut bringen. Es ist einfacher,iMACD zu machen, aber das ist die Frage.


Das geht nicht, denn iMACD berechnet die Signallinie standardmäßig mit der SMA-Formel, nur benutzerdefinierte Werte sind hilfreich.

 
Vitalie Postolache:

Auf keinen Fall, der Standard-iMACD berechnet die Signallinie mit der SMA-Formel, nur benutzerdefinierte wird helfen.


Ok, ich habe herausgefunden, dass es unmöglich ist, das zu tun. vielen Dank für die Info

 
Rustam Bikbulatov:

Ich habe erkannt, dass das unmöglich ist. Vielen Dank für die Information.


Nichts ist unmöglich, wir müssen nur den Blickwinkel ein wenig erweitern ))))

 
Rustam Bikbulatov:

Das war's, ich habe gemerkt, dass es nicht möglich ist. Vielen Dank für die Info.

Hier ist der Code des Standard-MACD

//+------------------------------------------------------------------+
//|                                                  Custom MACD.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "Moving Averages Convergence/Divergence"
#property strict

#include <MovingAverages.mqh>

//--- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 2
#property   indicator_color1  Silver
#property   indicator_color2  Red
#property   indicator_width1  2
//--- indicator parameters
input int InpFastEMA=12;   // Fast EMA Period
input int InpSlowEMA=26;   // Slow EMA Period
input int InpSignalSMA=9;  // Signal SMA Period
//--- indicator buffers
double    ExtMacdBuffer[];
double    ExtSignalBuffer[];
//--- right input parameters flag
bool      ExtParameters=false;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
   IndicatorDigits(Digits+1);
//--- drawing settings
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,InpSignalSMA);
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtMacdBuffer);
   SetIndexBuffer(1,ExtSignalBuffer);
//--- name for DataWindow and indicator subwindow label
   IndicatorShortName("MACD("+IntegerToString(InpFastEMA)+","+IntegerToString(InpSlowEMA)+","+IntegerToString(InpSignalSMA)+")");
   SetIndexLabel(0,"MACD");
   SetIndexLabel(1,"Signal");
//--- check for input parameters
   if(InpFastEMA<=1 || InpSlowEMA<=1 || InpSignalSMA<=1 || InpFastEMA>=InpSlowEMA)
     {
      Print("Wrong input parameters");
      ExtParameters=false;
      return(INIT_FAILED);
     }
   else
      ExtParameters=true;
//--- initialization done
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
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,limit;
//---
   if(rates_total<=InpSignalSMA || !ExtParameters)
      return(0);
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)
      limit++;
//--- macd counted in the 1-st buffer
   for(i=0; i<limit; i++)
      ExtMacdBuffer[i]=iMA(NULL,0,InpFastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
                    iMA(NULL,0,InpSlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//--- signal line counted in the 2-nd buffer
   SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);
   //ExponentialMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);
//--- done
   return(rates_total);
  }
//+------------------------------------------------------------------+

Die rosa markierte Zeile habe ich hinzugefügt.

Wenn ich die rosa markierte Zeile auskommentiere und die grün markierte Zeile auskommentiere, sollte der MACD mit allen exponentiellen MACDs berechnet werden.

 
Artyom Trishkin:

Hier ist der Code für den Standard-MACD

Die rosa markierte Zeile habe ich hinzugefügt.

Wenn ich die rosa markierte Zeile auskommentiere und die grün markierte Zeile auskommentiere, sollte der MACD mit allen exponentiellen MACDs berechnet werden.


Die Frage war nur, wie man das im EA machen kann. Der EA berechnetautomatisch anhand der SMA-Formel

 
Rustam Bikbulatov:

Die Frage war nur, wie dies im EA geschehen sollte. Der EA berechnet denSMA automatisch anhand der Formel

Ich habe Ihnen gezeigt, wie Sie einen eigenen MACD erstellen können.

Das sollten Sie in Ihrem Expert Advisor über iCustom() verwenden.

 
Artyom Trishkin:

Ich habe Ihnen gezeigt, wie Sie einen eigenen MACD erstellen können.

Das sollten Sie in Ihrem Expert Advisor über iCustom() verwenden.


Ich habe eine Menge Daten und der Busch wird langsamer. Ich habe es bereits ausprobiert. Beeinflusst die Ergebnisse. Trotzdem vielen Dank.

 
Rustam Bikbulatov:

Ich habe eine Menge Daten und der Busch wird langsamer. Ich habe es bereits ausprobiert. Das wirkt sich auf die Ergebnisse aus. Trotzdem vielen Dank.

Überprüfen Sie Ihre Einstellungen, vielleicht haben Sie zu viele Balken angezeigt, daher die Verzögerungen.
Grund der Beschwerde: