HELP !!!! convertire un indicatore da MT4 a MT5. - pagina 3

 
10937:
Oh, vuoi vedere un delta (differenza) e usarlo per indovinare da che parte pende il prezzo più )))))
Beh, questo è il primo pensiero che viene a un uomo quando lo nomina
 

Cerco di testare MT5.

In MT4 uso l'indicatore IchimokuAlert_v3

L'ho preso da quihttps://www.forex-tsd.com/forum/debates-discussions/1175-ichimoku-alert/page2#comment_418797

Che qualcuno con una buona conoscenza lo converta per MT5.

Ho provato a convertirlo con la metodologia da qui http://metatrader5.blogspot.com/2009/10/rewrite-mql-4-to-mql-5-script.html

Compilare con 55 errori

 
Ваня:

Cerco di testare MT5.

In MT4 uso l'indicatore IchimokuAlert_v3

L'ho preso da qui https://www.forex-tsd.com/forum/debates-discussions/1175-ichimoku-alert/page2#comment_418797

Che qualcuno con una buona conoscenza lo converta per MT5.

Ho provato a convertirlo con la metodologia da qui http://metatrader5.blogspot.com/2009/10/rewrite-mql-4-to-mql-5-script.html

Ci sono 55 errori durante la compilazione.

Sarà più facile aprire Ishimoku dalla consegna MT5.

E copiate un blocco di codice dal vostro avviso in esso.

//----
   string Msg,Subj;
  
   if (AlertType == 1 || AlertType == 3)
   {
      if (Tenkan_Buffer[1]>Kijun_Buffer[1] && Tenkan_Buffer[2]<Kijun_Buffer[2] && !UptrendAlert1)
...
...
...
 
o_O:

sarà più facile per te aprire Ishimoku dalla consegna di mt5.

E copiate un blocco di codice in esso dal vostro avviso.

//----
   string Msg,Subj;
  
   if (AlertType == 1 || AlertType == 3)
   {
      if (Tenkan_Buffer[1]>Kijun_Buffer[1] && Tenkan_Buffer[2]<Kijun_Buffer[2] && !UptrendAlert1)
...
...
...

Grazie! Buon uomo.

Potete dirmi tra quali righe va inserito questo blocco di codice?

Ho messo il blocco alla fine. Ho 6 errori di compilazione.

Si sta dando la colpa a.

136 linea if (AlertType == 1 || AlertType == 3)

156 linea if (AlertType == 2 || AlertType == 3)

175 linea return(rates_total);

176 linea giurata sulla staffa }

180 linea if (MsgAlerts) Alert(msgText);

181 linea if (eMailAlerts) SendMail(eMailSub, msgText);

//+------------------------------------------------------------------+
//|                                                     Ichimoku.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property description "Ichimoku Kinko Hyo"
//--- indicator settings
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots   4
#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_type3   DRAW_FILLING
#property indicator_type4   DRAW_LINE
#property indicator_color1  Red
#property indicator_color2  Blue
#property indicator_color3  SandyBrown,Thistle
#property indicator_color4  Lime
#property indicator_label1  "Tenkan-sen"
#property indicator_label2  "Kijun-sen"
#property indicator_label3  "Senkou Span A;Senkou Span B"
#property indicator_label4  "Chikou Span"
//--- input parameters
input int InpTenkan=9;     // Tenkan-sen
input int InpKijun=26;     // Kijun-sen
input int InpSenkou=52;    // Senkou Span B
//--- indicator buffers
double    ExtTenkanBuffer[];
double    ExtKijunBuffer[];
double    ExtSpanABuffer[];
double    ExtSpanBBuffer[];
double    ExtChikouBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtTenkanBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtKijunBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,ExtSpanABuffer,INDICATOR_DATA);
   SetIndexBuffer(3,ExtSpanBBuffer,INDICATOR_DATA);
   SetIndexBuffer(4,ExtChikouBuffer,INDICATOR_DATA);
//---
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpTenkan);
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,InpKijun);
   PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,InpSenkou-1);
//--- lines shifts when drawing
   PlotIndexSetInteger(2,PLOT_SHIFT,InpKijun);
   PlotIndexSetInteger(3,PLOT_SHIFT,-InpKijun);
//--- change labels for DataWindow
   PlotIndexSetString(0,PLOT_LABEL,"Tenkan-sen("+string(InpTenkan)+")");
   PlotIndexSetString(1,PLOT_LABEL,"Kijun-sen("+string(InpKijun)+")");
   PlotIndexSetString(2,PLOT_LABEL,"Senkou Span A;Senkou Span B("+string(InpSenkou)+")");
//--- initialization done
  }
//+------------------------------------------------------------------+
//| get highest value for range                                      |
//+------------------------------------------------------------------+
double Highest(const double&array[],int range,int fromIndex)
  {
   double res=0;
//---
   res=array[fromIndex];
   for(int i=fromIndex;i>fromIndex-range && i>=0;i--)
     {
      if(res<array[i]) res=array[i];
     }
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| get lowest value for range                                       |
//+------------------------------------------------------------------+
double Lowest(const double&array[],int range,int fromIndex)
  {
   double res=0;
//---
   res=array[fromIndex];
   for(int i=fromIndex;i>fromIndex-range && i>=0;i--)
     {
      if(res>array[i]) res=array[i];
     }
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Ichimoku Kinko Hyo                                               |
//+------------------------------------------------------------------+
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 limit;
//---
   if(prev_calculated==0) limit=0;
   else                   limit=prev_calculated-1;
//---
   for(int i=limit;i<rates_total && !IsStopped();i++)
     {
      ExtChikouBuffer[i]=close[i];
      //--- tenkan sen
      double _high=Highest(high,InpTenkan,i);
      double _low=Lowest(low,InpTenkan,i);
      ExtTenkanBuffer[i]=(_high+_low)/2.0;
      //--- kijun sen
      _high=Highest(high,InpKijun,i);
      _low=Lowest(low,InpKijun,i);
      ExtKijunBuffer[i]=(_high+_low)/2.0;
      //--- senkou span a
      ExtSpanABuffer[i]=(ExtTenkanBuffer[i]+ExtKijunBuffer[i])/2.0;
      //--- senkou span b
      _high=Highest(high,InpSenkou,i);
      _low=Lowest(low,InpSenkou,i);
      ExtSpanBBuffer[i]=(_high+_low)/2.0;
     }
//--- done
   return(rates_total);
  }
//+------------------------------------------------------------------+

//----
   string Msg,Subj;
  
   if (AlertType == 1 || AlertType == 3)
   {
      if (Tenkan_Buffer[1]>Kijun_Buffer[1] && Tenkan_Buffer[2]<Kijun_Buffer[2] && !UptrendAlert1)
      {
         Subj = "Tenkan crosses Kijun: "+Symbol()+" on M"+Period();
         Msg = "BUY Signal --- : "+Subj+ " @ "+DoubleToStr(Close[1],Digits) + ", @ " + TimeToStr(TimeLocal(),TIME_SECONDS);
         UptrendAlert1 = true;
         DntrendAlert1 = false;
         DoAlerts(Msg,Subj);
      }
      if ( Tenkan_Buffer[1]<Kijun_Buffer[1] && Tenkan_Buffer[2]>Kijun_Buffer[2] && !DntrendAlert1)
      {  
         Subj = "Tenkan crosses Kijun: "+Symbol()+" on M"+Period();
         Msg = "SELL Signal --- : "+Subj+ " @ "+DoubleToStr(Close[1],Digits) + ", @ " + TimeToStr(TimeLocal(),TIME_SECONDS);
         UptrendAlert1 = false;
         DntrendAlert1 = true;
         DoAlerts(Msg,Subj);
      }
   }
  
   if (AlertType == 2 || AlertType == 3)
   {
      if (Close[1]>Close[1+Kijun] && Close[2]<Close[2+Kijun] && !UptrendAlert2)
      {
         Subj = "Kijun crossed Price: "+Symbol()+" on M"+Period();
         Msg = "BUY Signal --- : "+Subj+ " @ "+DoubleToStr(Close[1],Digits) + ", @ " + TimeToStr(TimeLocal(),TIME_SECONDS);
         DntrendAlert2 = false;
         UptrendAlert2 = true;
         DoAlerts(Msg,Subj);
      }
      if (Close[1]<Close[1+Kijun] && Close[2]>Close[2+Kijun] && !DntrendAlert2)
      {
         Subj = "Kijun crossed Price: "+Symbol()+" on M"+Period();
         Msg = "SELL Signal --- : "+Subj+ " @ "+DoubleToStr(Close[1],Digits) + ", @ " + TimeToStr(TimeLocal(),TIME_SECONDS);
         DntrendAlert2 = true;
         UptrendAlert2 = false;
         DoAlerts(Msg,Subj);
      }
   }
   return(rates_total);
}

void DoAlerts(string msgText, string eMailSub)
{
   if (MsgAlerts) Alert(msgText);
   if (eMailAlerts) SendMail(eMailSub, msgText);
}
//+------------------------------------------------------------------+
 
Ваня:

Grazie! Buon uomo.

Potete dirmi tra quali righe va inserito questo blocco di codice?

Contatta Freelance, inseriranno pezzi di codice nei posti giusti.
 
Evgeny Belyaev:
Andate da un freelance, metteranno pezzi di codice nei posti giusti.
Non so nemmeno cosa sia il "freelance".
 
Ваня:
Non so nemmeno cosa sia il "freelance".
Freelance.
 
Ваня:
Non so nemmeno cosa sia il "freelance".
Lo fai ora?
 
Evgeny Belyaev:
Ora lo sai?

Sì, ho l'impressione che sui thread in lingua russa la popolazione smetta di capire la lingua russa.

Questo thread "HELP !!!! per convertire un indicatore da MT4 a MT5.

Dove consigliate di andare?

I termini di "freelance":

II. Processo d'ordine

  1. Un ordine passa attraverso le seguenti fasi del processo:
    1. Accordo di lavoro
    2. Accordo TOR
    3. Prototipo/modello
    4. Dimostrazione
    5. Consegna del lavoro
    6. Pagamento
 
Ваня:

Sì, ho l'impressione che sui thread in lingua russa la popolazione smetta di capire la lingua russa.

Questo thread "HELP !!!! per convertire un indicatore da MT4 a MT5.

Dove consigliate di andare?

I termini di "freelance":

    1. Pagamento

Sì, immagina, quello che suggerisci vale un po' di sforzo e quindi di denaro.

Tutti capiscono la lingua russa, ma armeggiare "a pagamento" non è molto interessante.

Ma se tu avessi un'esperienza di trading di successo, in cui avresti bisogno di un indicatore, forse qualcuno accetterebbe di fare qualcosa senza soldi in cambio di un'idea di trading redditizia. Ma nel frattempo - solo per il "buon nome" - temo che non ci saranno molte persone disposte a farlo...

Motivazione: