![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Oh, quieres ver un delta (diferencia) y usarlo para adivinar hacia dónde se inclina el precio más )))))
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
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)
...
...
...
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?
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".
¿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
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":
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...