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
¿Puede alguien ayudar a codificar este EA?
Hola,
Actualmente estoy operando con un EA de martingala que abrirá como máximo 4 niveles de órdenes. Acabo de pensar en una estrategia de cobertura que puede reducir el riesgo de usar este EA. A continuación se describe mi estrategia:
1. El EA de cobertura controlará el drawdown de las órdenes de apertura. Si el total de las pérdidas flotantes es mayor que una cantidad predeterminada, activará el EA para abrir una orden de cobertura en oposición a las órdenes de apertura.
2. El tamaño del lote de la orden cubierta se calcula en base a un múltiplo (el usuario puede establecer el múltiplo) del tamaño del lote de la última orden de apertura (por ejemplo, si el tamaño del lote de la última orden de nivel es 1,6 y el múltiplo se establece en 2, entonces la orden cubierta se abrirá con un tamaño de lote de 3,2.
3. Cuando la orden cubierta vuelva a su nivel de apertura, la orden cubierta se cerrará automáticamente.
4. Cuando la cesta global (las órdenes de apertura + la orden cubierta) alcance una cantidad de beneficio neto predeterminada, se cerrarán todas las órdenes.
Me pregunto si algún buen programador puede codificar este EA de cobertura para mí. Creo que será muy útil para otros EA de martingala también. Muchas gracias.
Saludos cordiales,
Wallace
whoa..
Gracias chicos...
¿que tal el stop de compra y el stop de venta?
¿sólo cambiar "BUY" por allí?
sólo quiero 2 posiciones sólo para 1 pares, no más que eso ..
Lo siento, todavía novato ...
¿Cómo codificar este indis en el EA?
Hola, soy un nuevo aprendiz y estoy interesado en aprender mql, ¿puede alguien decirme cómo codificar esto en el EA?
extern int Rápido.MA.Periodo = 5;
extern int Lento.MA.Periodo = 34;
extern int Señal.periodo = 5;
//---- buffers
double Buffer1[],
Buffer2[],
b2[],
b3[];
//+------------------------------------------------------------------+
//| Función de inicialización de los indicadores personalizados ||.
//+------------------------------------------------------------------+
int init()
{
//---- indicadores
// dos buffers adicionales utilizados para el conteo
IndicatorBuffers(4);
IndicatorShortName("MA_5_34");
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(0,242); // abajo 226 234 242
SetIndexBuffer(0,b2);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(1,241); //ARRIBA 225 233 241
SetIndexBuffer(1,b3);
// Estos buffers no se trazan, sólo se usan para determinar las flechas
SetIndexBuffer (2,Buffer1);
SetIndexBuffer (3,Buffer2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Función de desinicialización del indicador Custor ||
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| Función de iteración del indicador personalizada ||
//+------------------------------------------------------------------+
int inicio()
{
int, counted_bars=IndicatorCounted();
doble MA5,MA34;
int limit=Barras_contadas;
Print(" imprimir límite = ", límite);
if(counted_bars>0) limit++; <----¿alguien puede explicarme qué significa?
// Línea principal
for(i=0; i<límite; i++) <----¿Puede alguien explicarme qué significa?
{
MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);
MA34=iMA(NULL,0,Periodo.MA.Lento,0,MODO_SMA,PRECIO_MEDIO,i);
Buffer1=MA5-MA34;
}
// Línea de señal
for(i=0; i<limit; i++) <----¿Puede alguien explicarme qué significa?
{
Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);
} <----¿alguien puede explicarme qué significa?
// Flechas
for(i=0; i<limit; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = Alto+10*Punto;
if(Buffer1 Buffer2)
b3 = Bajo-10*Punto; <----¿puede alguien explicarme qué significa?
}
//----
return(0);
}
Gracias chicos =^_^=
if(counted_bars>0) limit++; <----¿Alguien puede explicarme qué significa?
// Línea principal
for(i=0; i<limit; i++) <----¿Puede alguien explicarme qué significa?
// Línea de señalización
for(i=0; i<limit; i++) <----¿Puede alguien explicarme qué significa?
{
Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);
} <----¿alguien puede explicarme qué significa?
// Flechas
for(i=0; i<limit; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = Alto+10*Punto;
if(Buffer1 Buffer2)
b3 = Bajo-10*Punto; <----¿Puede alguien explicarme qué significa?
Gracias chicos =^_^=Es muy fácil.
Cuando inicias tu indi, Bars=1000 (por ejemplo) y counted_bars=0. Entonces limit=1000 y tu indi calcula todas las 1000 barras. Después de esto counted_bars=1000, y cada nuevo tick el indi calcula sólo la última barra (cero). Cuando llega la siguiente barra, limit=1 y el indi recalcula las dos últimas barras.
b3 = Low-10*Point; - es sólo una línea 10 puntos más baja que el mínimo de la barra.
Hola, soy un nuevo aprendiz y estoy interesado en aprender mql, ¿alguien puede decirme cómo codificar esto en el EA?
extern int Periodo.MA.rápido = 5;
extern int Periodo.MA.lento = 34;
extern int Señal.periodo = 5;
//---- buffers
double Buffer1[],
Buffer2[],
b2[],
b3[];
//+------------------------------------------------------------------+
//| Función de inicialización de los indicadores personalizados ||.
//+------------------------------------------------------------------+
int init()
{
//---- indicadores
// dos buffers adicionales utilizados para el conteo
IndicatorBuffers(4);
IndicatorShortName("MA_5_34");
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(0,242); // abajo 226 234 242
SetIndexBuffer(0,b2);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(1,241); //ARRIBA 225 233 241
SetIndexBuffer(1,b3);
// Estos buffers no se trazan, sólo se usan para determinar las flechas
SetIndexBuffer (2,Buffer1);
SetIndexBuffer (3,Buffer2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Función de desinicialización del indicador Custor ||
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| Función de iteración del indicador personalizada ||
//+------------------------------------------------------------------+
int inicio()
{
int, counted_bars=IndicatorCounted();
doble MA5,MA34;
int limit=Barras_contadas;
Print(" imprimir límite = ", límite);
if(counted_bars>0) limit++; <----¿alguien puede explicarme qué significa?
// Línea principal
for(i=0; i<límite; i++) <----¿Puede alguien explicarme qué significa?
{
MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);
MA34=iMA(NULL,0,Periodo.MA.Lento,0,MODO_SMA,PRECIO_MEDIO,i);
Buffer1=MA5-MA34;
}
// Línea de señal
for(i=0; i<limit; i++) <----¿Puede alguien explicarme qué significa?
{
Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);
} <----¿alguien puede explicarme qué significa?
// Flechas
for(i=0; i<limit; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = Alto+10*Punto;
if(Buffer1 Buffer2)
b3 = Bajo-10*Punto; <----¿puede alguien explicarme qué significa?
}
//----
return(0);
}
Gracias chicos =^_^=Si quieres usar este indicador en un ea puedes usar la función icustom() para acceder a él. realmente no necesitas entender nada del código del indicador, sólo los datos que escupe. Al menos esa es la forma fácil de hacerlo.
Si quieres usar este indicador en un EA puedes usar la función icustom() para acceder a él. realmente no necesitas entender nada del código del indicador, sólo los datos que escupe. Al menos esa es la forma más fácil de hacerlo.
Es decir, utilizar la función icustom() en el EA para recuperar los indis? ¿Cómo debe ser la codificación para ser escrito en el EA? me puede dar alguna guía?
Muchas gracias
whoa ..
Gracias chicos...
¿que tal el stop de compra y el stop de venta?
¿sólo cambiar "BUY" por allí?
sólo quiero 2 posiciones sólo para 1 pares, no más que eso ..
Lo siento, todavía novato ..
Leer esto
Tutorial MQL4
¿Esta codificación es correcta?
extern double TakeProfit=100;
extern double Lots=1;
extern double TrailingStop=35;
extern int ShortEma = 5;
extern int LongEma = 34;
//+------------------------------------------------------------------+
//| función de inicialización de expertos ||.
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta ||
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Cruzado (doble línea1 , doble línea2)
{
static int última_dirección = 0
static int dirección_actual = 0;
if(línea1>línea2)dirección_actual = 1; //arriba
if(línea1<línea2)dirección_actual = 2; //abajo
if(dirección_actual != última_dirección) //cambio
{
última_dirección = última_dirección;
return (última_dirección);
}
else
{
return (0);
}
}
//+------------------------------------------------------------------+
//| función de inicio experto ||
//+------------------------------------------------------------------+
int inicio()
{
//----
int total
double shortEma, longEma;
shortEma = iCustom(NULL,0, "Test_Demo",13,0,0);
longEma = iCustom(NULL,0, "Test_Demo",54,0,0);
Print("shortEma = " + shortEma + " : longEma = " + longEma);
int isCrossed = 0;
isCrossed = Crossed (LongEma,ShortEma);
total = OrdersTotal();
if(total < 1)
{
if(isCrossed == 1)
{
1=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "My EA",12345,0,Green);
if(1>0)
{
if(OrderSelect(1,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden de COMPRA abierta : ",OrderOpenPrice());
}
else Print("Error al abrir la orden de COMPRA : ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "My EA",12345,0,Red);
si(2>0)
{
if(OrderSelect(2,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden de venta abierta : ",OrderOpenPrice());
}
else Print("Error al abrir la orden de VENTA : ",GetLastError());
return(0);
}
return(0);
}
}
Tengo un error que dice 1 & 2 token inesperado, ¿qué significa eso? ¿puede guiarme?
Gracias
Supongo que borraste algo y lo olvidaste:
es una tontería.
extern double TakeProfit=100;
extern double Lots=1;
extern double TrailingStop=35;
Tengo un error que dice 1 & 2 unexpected token, ¿qué significa eso? ¿puede guiarme?
GraciasBorrar 1=, y 2= antes de OrderSend(....