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
Un poco de pintura en los niveles de Murray
Buenas tardes. Los chicos inteligentes realmente necesitan traducir el indicador de correlación en MT5
#propiedad ventana_del_gráfica_del_indicador
#property indicator_buffers 2
#property indicator_plots 2
#property indicator_color1 clrDeepSkyBlue
#property indicator_color2 clrDeepSkyBlue
#propiedad ventana_del_gráfica_del_indicador
doble UpBuffer[];
doble DnBuffer[];
int OnInit()
{
SetIndexBuffer(0,UpBuffer);
SetIndexBuffer(1,DnBuffer);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE); PlotIndexSetInteger(0,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3); PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE); PlotIndexSetInteger(1,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3);PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
return(0);
}
//+------------------------------------------------------------------+
//| Función de iteración de indicadores personalizada |
//+------------------------------------------------------------------+
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;
for(i=1000;i>0;i--)
{ UpBuffer[i]=1.428; DnBuffer[i]=1.41;
}
return(0);
}
¿Por qué no se trazan las líneas?
Debería ser algo así, lo creas o no, está funcionando.
Descargado este indicador. Al compilar dio un error en la línea 228, no pude hacer una foto, así que por favor, creedme. Quiero usar el indicador que uso en MT5, por eso estoy aquí, no pude hacerlo yo mismo. Tal vez puedas reescribirlo para mí. Gracias.
Por favor, ayuda.
Intenté reescribir WATL, casi lo logré. Las líneas no se dibujan correctamente, es debido a un cálculo torcido de la LWMA. Y lo que es más importante, a veces el gráfico tiene esas sorpresas:
A veces, una línea de puntos es idéntica a los puntos sobre los que se calcula la WATL.
O, a veces, giro el gráfico y todos los puntos se superponen en la barra adyacente.
Gracias de antemano por cualquier ayuda =)
¿Quien ha visto este indicador en las transformaciones de MQL5? http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=67
Hola,
No podía hacer lo que quería.
El par que tengo en la cabeza es diferente al que tenía en la cabeza.
[código]
#property indicador_separar_ventana
#property indicator_buffers 6
#property indicator_plots 2
#property indicator_type1 DRAW_COLOR_LINE
#property indicator_type2 DRAW_COLOR_LINE
#property indicator_color1 clrAzul
#property indicator_color2 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_style2 STYLE_SOLID
input int periodo_1 = 20;
input int periodo_2 = 100;
input ENUM_MA_METHOD ma_method = MODE_SMA;
input ENUM_APPLIED_PRICE applied_price = PRICE_CLOSE;
doble ExtMapBuffer1[];
doble ExtMapBuffer2[];
int EMHandle1=0;
int EMHandle2=0;
int EMHandle11=0;
int EMHandle22=0;
MqlParam params[]; // Estructura para guardar los parámetros del indicador
double ma1[],ma2[],ma3[],ma4[];//búferes temporales
int OnInit()
{
//--- mapeo de buffers indicadores
SetIndexBuffer(0, ExtMapBuffer1, INDICATOR_DATA);
SetIndexBuffer(1, ExtMapBuffer2, INDICATOR_DATA);
SetIndexBuffer(2, ma1, INDICATOR_DATA);
SetIndexBuffer(3, ma2, INDICATOR_DATA);
SetIndexBuffer(4, ma3, INDICATOR_DATA);
SetIndexBuffer(5, ma4, INDICATOR_DATA);
PlotIndexSetInteger(0, PLOT_SHIFT, 0);
PlotIndexSetInteger(1, PLOT_SHIFT, 0);
PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_SOLID);
//---
PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrBlue);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,clrRed);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
IndicatorSetString(INDICATOR_SHORTNAME, "2_2_MA");
//--- establecer la precisión
IndicadorSetInteger(INDICATOR_DIGITS,4);
//---
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=período_1;
// Desplazamiento
params[1].type =TYPE_INT;
params[1].integer_value=0;
// Método de cálculo: media simple
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
// tipo de precios para el cálculo: precios de cierre
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle1 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=periodo_2;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle2 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=período_1;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle11 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=periodo_2;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle22 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params;)
return(0);
}
int OnCalculate (const int rates_total,// tamaño del array price[];
const int prev_calculado,// número de barras disponibles ;en la llamada anterior;
const int begin,// qué índice de la matriz price[] iniciará los datos válidos;
const double &price[]) // matriz, sobre la que se calculará el indicador;
{
int i;
ArraySetAsSeries(ma1, true);
ArraySetAsSeries(ma2, true);
ArraySetAsSeries(ma3, true);
ArraySetAsSeries(ma4, true);
if(CopyBuffer(EMHandle1, 0, 0, 1, ma1) < 0){Print("CopyBuffer ma1 error =", GetLastError());}
if(CopyBuffer(EMHandle2, 0, 0, 1, ma2) < 0){Print("CopyBuffer ma2 error =", GetLastError());}
if(CopyBuffer(EMHandle11, 0, 0, 1, ma3) < 0){Print("CopyBuffer ma3 error =", GetLastError());}
if(CopyBuffer(EMHandle22, 0, 0, 0, 1, ma4) < 0){Print("CopyBuffer ma4 error =", GetLastError());}
int límite;
//if(prev_calculated<1)
//limit=periodo_1;
limit=prev_calculado-1;
for( i=0; i<limit; i++)
ExtMapBuffer1[0]=calculado;
ExtMapBuffer2[0]=calcular;
Comentario(
"\n=====================",
"\n ma1[0] : ",DoubleToString(ma1[0],5),
"\n ma2[0] : ",DoubleToString(ma2[0],5),
"\n ma3[0] : ",DoubleToString(ma3[0],5),
"\n ma4[0] : ",DoubleToString(ma4[0],5),
"\N - ExtMapBuffer1[0] : ",DoubleToString(ExtMapBuffer1[0],4),
"\n ExtMapBuffer2[0] : ",DoubleToString(ExtMapBuffer2[0],4)
);
return(rates_total);
}
void OnDeinit(const int reason)
{
Comentario(");
}
[/código]
Cuando 0 en lugar de i (para una barra) veo el resultado, cuando la barra (corriente = i) muestra que no puedo encontrar datos para el segundo par.
El gráfico del par está abierto, en la Ventana de Mercado no sé dónde confundo las cosas.
Dos pares diferentes en un indicador: ¿dónde está mi error?
Intento poner 0 y ver el resultado como un comentario, pero no tengo una línea.
Para aclarar: puse ma1 y ma2 en un par y ma3 y ma4 en el otro par.
Gracias.