AYUDA !!!! convertir un indicador de MT4 a MT5. - página 3

 
10937:
Oh, quieres ver un delta (diferencia) y usarlo para adivinar hacia dónde se inclina el precio más )))))
Bueno, eso es lo primero que se le ocurre a un hombre cuando lo menciona
 

Tratando de probar MT5.

En MT4 utilizo el indicador IchimokuAlert_v3

Lo tomé de aquíhttps://www.forex-tsd.com/forum/debates-discussions/1175-ichimoku-alert/page2#comment_418797

Que alguien con buenos conocimientos lo convierta para MT5.

He intentado convertirlo con la metodología de aquí http://metatrader5.blogspot.com/2009/10/rewrite-mql-4-to-mql-5-script.html

Compilación con 55 errores

Archivos adjuntos:
 
Ваня:

Tratando de probar MT5.

En MT4 utilizo el indicador IchimokuAlert_v3

Lo tomé de aquí https://www.forex-tsd.com/forum/debates-discussions/1175-ichimoku-alert/page2#comment_418797

Que alguien con buenos conocimientos lo convierta para MT5.

He intentado convertirlo con la metodología de aquí http://metatrader5.blogspot.com/2009/10/rewrite-mql-4-to-mql-5-script.html

Hay 55 errores al compilar.

Será más fácil abrir Ishimoku desde la entrega de MT5.

Y copia un bloque de código de tu alerta en él.

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

será más fácil para usted para abrir Ishimoku de la entrega mt5.

Y copia un bloque de código en él desde tu alerta .

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

Gracias. Buen hombre.

¿Puede decirme entre qué líneas debe insertarse este bloque de código?

Puse el bloque al final. Tengo 6 errores de compilación.

La culpa es de.

136 línea if (AlertType == 1 | AlertType == 3)

156 línea if (AlertType == 2 | AlertType == 3)

175 línea return(rates_total);

176 línea jurar en el corchete }

180 línea if (MsgAlerts) Alert(msgText);

181 línea 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);
}
//+------------------------------------------------------------------+
 
Ваня:

Gracias. Buen hombre.

¿Puede decirme entre qué líneas debe insertarse este bloque de código?

Ponte en contacto con Freelance, ellos insertarán piezas de código en los lugares adecuados.
 
Evgeny Belyaev:
Acude a un autónomo, ellos pondrán trozos de código en los lugares adecuados.
Ni siquiera sé lo que es "trabajar por cuenta propia".
 
Ваня:
Ni siquiera sé lo que es "trabajar por cuenta propia".
Por cuenta propia.
 
Ваня:
Ni siquiera sé lo que es "trabajar por cuenta propia".
¿Ahora sí?
 
Evgeny Belyaev:
¿Ahora lo sabes?

Sí, tengo la impresión de que en los hilos en ruso la población deja de entender el idioma ruso.

Este hilo "AYUDA !!!! para convertir un indicador de MT4 a MT5.

¿Dónde aconseja ir?

Los términos del "freelance":

II. Proceso de pedido

  1. Una orden pasa por los siguientes pasos en el proceso:
    1. Acuerdo de trabajo
    2. Acuerdo sobre los TdR
    3. Prototipo/Modelo
    4. Demostración
    5. Entrega del trabajo
    6. Pago
 
Ваня:

Sí, tengo la impresión de que en los hilos en ruso la población deja de entender el idioma ruso.

Este hilo "AYUDA !!!! para convertir un indicador de MT4 a MT5.

¿Dónde aconseja ir?

Los términos de "freelance":

    1. Pago

Sí, imagínate, lo que propones merece un esfuerzo y, por tanto, dinero.

Todo el mundo entiende la lengua rusa, pero tocar el timón "por una cuota" no es muy interesante.

Pero si tuviera una experiencia comercial exitosa, en la que necesitara un indicador, tal vez alguien aceptaría hacer algo sin dinero a cambio de una idea comercial rentable. Pero mientras tanto -por pura "buena fama"- me temo que no habrá mucha gente dispuesta a hacerlo...