Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 232

 
Rustam Bikbulatov:
Secondo. Il comando per aprire un ordine

Non ha alcun senso. Cosa ha a che fare con un ordine di mercato? Forse è la chiamata dell'indicatore? Poi modificate l'indicatore e chiamatelo usando iCustom invece di iMACD.

Forse, non c'è bisogno di modificare assolutamente nulla, il kodobase è pieno di chicche.

 
Vitalie Postolache:

Non ha alcun senso. Cosa ha a che fare con un ordine di mercato? Forse è la chiamata dell'indicatore? Poi modificate l'indicatore e chiamatelo usando iCustom invece di iMACD.

Forse non ho bisogno di modificare nulla, il kodobase è pieno di chicche.


Ho provato tramite iCustom ma funziona lentamente. Ho provato tramiteiMAOnArray ma ho avuto un problema con gli array. Non sono riuscito a legarli tutti in uno. È più facile fare iMACD ma questa è la domanda

 
Rustam Bikbulatov:

Ho provato iCustom, ma funziona lentamente. Ho provatoiMAOnArray, ma c'è un problema con gli array. Non ha potuto legare tutto insieme per un paio di giorni. È più facile fareiMACD, ma questa è la domanda.


Non puoi, iMACD standard calcola la linea di segnale usando la formula SMA, solo la personalizzazione ti aiuterà.

 
Vitalie Postolache:

Assolutamente no, l'iMACD standard calcola la linea di segnale usando la formula SMA, solo la personalizzazione aiuterà.


Ok, ho capito che è impossibile farlo. grazie mille per le informazioni

 
Rustam Bikbulatov:

Ho capito che è impossibile, grazie mille per le informazioni.


Niente è impossibile, dobbiamo solo allargare un po' il campo d'azione ))))

 
Rustam Bikbulatov:

Ecco, ho capito che non è possibile. grazie mille per le informazioni

Ecco il codice del MACD standard

//+------------------------------------------------------------------+
//|                                                  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);
  }
//+------------------------------------------------------------------+

La linea segnata in rosa l'ho aggiunta io.

Se decommento la linea segnata in rosa e commento la linea segnata in verde, il MACD dovrebbe essere calcolato utilizzando tutti i MACD esponenziali.

 
Artyom Trishkin:

Ecco il codice per il MACD standard

La linea segnata in rosa l'ho aggiunta io.

Se decommento la linea segnata in rosa e commento la linea segnata in verde, il MACD dovrebbe essere calcolato utilizzando tutti i MACD esponenziali.


La questione era come farlo nell'EA. L'EA calcolaautomaticamente utilizzando la formula SMA

 
Rustam Bikbulatov:

La questione era come farlo nell'EA. L'EA calcolaautomaticamente laSMA usando la formula

Ti ho mostrato come fare un MACD personalizzato.

Questo è quello che dovreste usare nel vostro Expert Advisor attraverso iCustom()

 
Artyom Trishkin:

Ti ho mostrato come fare un MACD personalizzato.

Questo è quello che dovreste usare nel vostro Expert Advisor tramite iCustom()


Ho un sacco di dati e il cespuglio sta rallentando. L'ho già provato. Sta influenzando i risultati. Grazie comunque.

 
Rustam Bikbulatov:

Ho un sacco di dati e il cespuglio sta rallentando. L'ho già provato. Sta influenzando i risultati. Grazie lo stesso.

Controlla le tue impostazioni, forse hai troppe barre da visualizzare, da cui i ritardi.