¿Cómo codificar? - página 276

 

Buenas tardes.

Me estoy iniciando en la escritura y comprensión del código. Hasta ahora estoy abrumado.

Me gustaría empezar a escribir un ea utilizando el histograma del MACD y cuando la línea triger cruza por encima y por debajo del histograma.

¿alguien tiene alguna sugerencia de programa sencillo para empezar a entender el código y dejarlo correr para ver cómo opera?

Gracias-

daniel

 

Importación de Trendline desde Excel/CSV=?

Hola, he escrito algunos scripts sencillos en los últimos días, especialmente ObjectCreate (OBJ_TREND con Ray=1) es realmente agradable cómo funciona pero cómo puedo dibujar objetos desde un archivo csv listo, donde tengo algunos datos de cierre del historial para mis líneas de cierre, porque quiero ser capaz de eliminar mi plantilla e importar los datos cada vez que los necesito con un script,

¿tiene alguien una idea de cómo podría funcionar?

El CSV tiene una fecha (sin hora) y un valor de cierre (no necesitaría más datos para las líneas)

y el Script debería dibujar una Línea desde esta fecha con Ray=1 y personalizar el color

tal vez el script también podría comprobar el gráfico abierto (símbolo) y tomar el archivo csv correcto, si un tiene más de uno ;-)

Por favor, ¿alguien puede ayudarme?

 

Error en OrderDelete(OrderTicket())

¡Hola a todos!

Soy nuevo en la programación de MQL4 pero por otro lado conozco C++.

Pero tengo algunos problemas con las funciones de comercio.

Este es mi problema :

Creo una orden pendiente con :

ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-5*Point,slippage,0,0,"",0,0,Green);

y en otro punto del programa quiero borrarlo :

if (OrderSelect(ticket,SELECT_BY_TICKET)) OrderDelete(OrderTicket());

¡ERROR 4108! ¿Por qué? El número de ticket es correcto, lo imprimo.

Pero si uso :

if (OrderSelect(position, SELECT_BY_POS))OrderDelete(OrderTicket());

¡está bien!

¿Por qué?

Gracias por su apoyo y por el foro.

 

Código para terminar el EA ???

Hola a todos,

Estoy buscando un código que termine un EA. He publicado una pequeña martingala que escribí. Lo tengo donde cerrará todas las órdenes pendientes y abiertas cuando alcance un porcentaje de reducción de la cuenta. También he sido capaz de hacer que se detenga el comercio cuando un objetivo de ganancia diaria se alcanza. Comienza a operar de nuevo al día siguiente. (Gracias a quien escribió SWB Grid, ya que usé su código).

Sin embargo, me gustaría que el EA terminara cuando llegue a una determinada condición. Digamos que alcanza el porcentaje máximo de reducción y cierra todas las órdenes pendientes y las posiciones abiertas. En ese momento, quiero que el EA se termine a sí mismo para que no comience a operar de nuevo hasta que quite el EA del gráfico y lo vuelva a poner.

Aquí está el EA. ¡¡Cualquier sugerencia o ayuda es muy apreciada!!

Gracias,

Joe

Archivos adjuntos:
 

Necesito ayuda sobre "'\end_of_program' - paréntesis izquierdo desequilibrado"

Hola, he estado trabajando en un EA y me sigue apareciendo un mensaje de error al compilar: "'\end_of_program' - paréntesis izquierdo desequilibrado". Normalmente este mensaje de error está relacionado con un número desigual de paréntesis izquierdo y derecho. Sin embargo, revisé mis códigos de arriba a abajo y encontré que tengo igual número de paréntesis izquierdos y derechos. Así que realmente me vuelve loco que no puedo averiguar dónde fue mal. ¿Alguien puede comprobar mis códigos y decirme cómo solucionarlo? Un millón de gracias. Mis códigos se publican a continuación:

//+------------------------------------------------------------------+

//| Breakout.mq4 ||||||||||||||||

//| Pooh |

//| |

//+------------------------------------------------------------------+

#property copyright "Pooh"

#property link ""

//--- parámetros de entrada

extern int LengthI=23;//para entrar en el mercado

extern int LengthO=7;//para salir

extern double Lots=0.1; //para el tamaño de la orden

extern int N1=14; //periodo para ATR

extern int NLots=1; //número de lote de la orden aumentado

//+------------------------------------------------------------------+

//|función de inicialización de los expertos ||.

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| función de desinicialización experta ||

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| función de inicio experto ||

//+------------------------------------------------------------------+

int inicio()

{

//----

double HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2));

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));

int cnt, cot,ticket, total;

total=Total de pedidos();

si (total<1)

{

if (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);

si (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Orden larga abierta : ",OrderOpenPrice());

}

si no

Print("Error al abrir la orden larga : ",GetLastError());

return(0);

}

if (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);

si (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Orden corta abierta:",OrderOpenPrice());

}

else Print("Error al abrir la orden SHORT:",GetLastError());

return(0);

}

return(0);

}

for(cnt=0;cnt<total;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // se abre una posición larga

{

// ¿se debe cerrar?

if(Bid<=LLong)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//cierra la posición

return(0);

}

//modificar el trailing stop

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Verde);

return(0);

}

si no

{

if(Ask>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//cerrar posición

return(0);

}

//modificar el trailing stop

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);

return(0);

}

}

}

//obtener el total de lotes de órdenes largas y cortas

double LOrderLots=0;

double SOrderLots=0;

for(cnt=0,cnt<=total,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots();

if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)

SOrderLots=LOrderLots+OrderLots();

}

//incrementar la orden abierta

for(cot=0,cot<=total,cot++)

{ //1

//añadir posición para la orden larga

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //si hay órdenes abiertas

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- si la orden abierta fue abierta por el EA pooh abd type is Long

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5

si (ticket>0)

{ //6

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Orden larga abierta : ",OrderOpenPrice());

} //6

si no

Print("Error al abrir una orden larga : ",GetLastError());

romper;

} //5

} //4

return(0);

//añadir posición para la orden corta

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9

si (ticket>0)

{ // 10

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Orden corta abierta : ",OrderOpenPrice());

} // 10

si no

Print("Error al abrir la orden corta : ",GetLastError());

romper;

} //9

} //8

return(0);

} //7

} //3

} //2

} //1

return(0)

}

 

NECESITO un codificador para codificar un indicador simple

Necesito que alguien codifique un indicador que haga lo siguiente

En un simple Fibonacci utilizando sólo las líneas 0,50,100. Cuando una barra cierra por encima del 50% o por debajo del 50% pero teniendo la opción de elegir si estoy buscando un cierre por encima o por debajo, no ambos. Así que si estoy buscando un cierre por debajo del 50% no quiero que cada vez que cierre por encima de 50 la alerta se active. Quiero que me avise con un sonido y me envíe un correo electrónico y/o un texto. ¿Es esto posible? ¡¡¡Gracias!!!

FOTO: http://tinypic.com/r/dhbu6v/5

 

Intentando codificar una lógica simple, ¡imposible!

Hola Foro,

Creo que esto es muy simple de código para usted que son lo suficientemente buenos en MQL4, pero soy principiante y tengo problemas, he leído todas las lecciones aquí, pero todavía no podía averiguar

así que quiero hacer el comercio automatizado

tamaño del lote 0.1

stoploss = 30 pips

objetivo de beneficio 50 pips

par AUDUSD

Si (highprice - lowprice) < 60 pips entre las 02:00 GMT y las 10:00 GMT entonces vendo A UDUSD a lowprice - 5pips o compro AUDUSD a highprice + 5pips, de lo contrario no opero

 
Avasys:
Hola Foro,

Creo que esto es muy sencillo de codificar para los que son lo suficientemente buenos en MQL4, pero yo soy principiante y tengo problemas, he leído todas las lecciones aquí, pero todavía no podía entenderlo

así que quiero hacer el comercio automatizado

tamaño del lote 0.1

stoploss = 30 pips

objetivo de beneficio 50 pips

par AUDUSD

Si (highprice - lowprice) < 60 pips entre las 02:00 GMT y las 10:00 GMT , entonces vende AUDUSD a lowprice - 5pips o compra AUDUSD a highprice + 5pips, de lo contrario no se opera

[lang=pl]Hola creo que eso no es problema para codificar este EA pero tengo una pregunta.

¿Cuando quieres comprar/vender? ¿Necesitas ordenes pendientes en los niveles low-5 high+5?

saludos,

Grzesiek[/lang]

 
g.pociejewski:
[lang=pl]Hola creo que eso no es problema para codificar este EA pero tengo una pregunta.

¿Cuándo quiere comprar/vender? ¿Necesita órdenes pendientes en los niveles bajos-5 altos+5?

saludos,

Grzesiek[/lang]

Hola,

gracias por la ayuda

Sí, así que más precisamente el rango de comercio AUDUSD (diferencia entre el precio alto y el precio bajo) entre 02:00 GMT y 10:00 GMT veces (esto es muy importante en el código) es menos de 60 pips por lo que esta es la señal negociable. Así que usted vende si los precios alcanzan el precio bajo (entre 02:00 y 10:00) - 5 pips y usted compra si los precios alcanzan el precio alto + 5 pips.

ejemplo

entre las 02:00 y las 10:00 GBPUSD el precio bajo era 1.6000, el alto era 1.6050, así que si los precios alcanzan 1.5995 venda automáticamente y si el precio alcanza 1.6055 compre automáticamente colocando una orden de stop loss de 30 pips automáticamente y 50 pips de take profit.

si no tienes tiempo solo dame indicaciones de como empezar, lei la leccion pero no tengo practica para hacer el trabajo

gracias

 
pooh123:
Hola, he estado trabajando en un EA y me sigue apareciendo un mensaje de error al compilar: "'\end_of_program' - paréntesis izquierdo desequilibrado". Normalmente este mensaje de error está relacionado con un número desigual de paréntesis izquierdos y derechos. Sin embargo, revisé mis códigos de arriba a abajo y encontré que tengo igual número de paréntesis izquierdos y derechos. Así que realmente me vuelve loco que no puedo averiguar dónde fue mal. ¿Alguien puede comprobar mis códigos y decirme cómo solucionarlo? Un millón de gracias. Mis códigos se publican a continuación:

//+------------------------------------------------------------------+

//| Breakout.mq4 //|

//| Pooh

//| |

//+------------------------------------------------------------------+

#property copyright "Pooh"

#property link ""

//--- parámetros de entrada

extern int LengthI=23;//para entrar en el mercado

extern int LengthO=7;//para salir

extern double Lots=0.1; //para el tamaño de la orden

extern int N1=14; //periodo para ATR

extern int NLots=1; //número de lote de la orden aumentado

//+------------------------------------------------------------------+

//|función de inicialización de los expertos ||.

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| función de desinicialización experta ||

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| función de inicio experto ||

//+------------------------------------------------------------------+

int inicio()

{

//----

double HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2));

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));

int cnt, cot,ticket, total;

total=Total de pedidos();

si (total<1)

{

if (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);

si (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Orden larga abierta : ",OrderOpenPrice());

}

si no

Print("Error al abrir la orden larga : ",GetLastError());

return(0);

}

if (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);

si (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Orden corta abierta:",OrderOpenPrice());

}

else Print("Error al abrir la orden SHORT:",GetLastError());

return(0);

}

return(0);

}

for(cnt=0;cnt<total;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // se abre una posición larga

{

// ¿se debe cerrar?

if(Bid<=LLong)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//cierra la posición

return(0);

}

//modificar el trailing stop

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Verde);

return(0);

}

si no

{

if(Ask>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//cerrar posición

return(0);

}

//modificar el trailing stop

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);

return(0);

}

}

}

//obtener el total de lotes de órdenes largas y cortas

double LOrderLots=0;

double SOrderLots=0;

for(cnt=0,cnt<=total,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots();

if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)

SOrderLots=LOrderLots+OrderLots();

}

//incrementar la orden abierta

for(cot=0,cot<=total,cot++)

{ //1

//añadir posición para la orden larga

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //si hay órdenes abiertas

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- si la orden abierta fue abierta por el EA pooh abd type is Long

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5

si (ticket>0)

{ //6

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Orden larga abierta : ",OrderOpenPrice());

} //6

si no

Print("Error al abrir una orden larga : ",GetLastError());

romper;

} //5

} //4

return(0);

//añadir posición para la orden corta

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9

si (ticket>0)

{ // 10

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Orden corta abierta : ",OrderOpenPrice());

} // 10

si no

Print("Error al abrir la orden corta : ",GetLastError());

romper;

} //9

} //8

return(0);

} //7

} //3

} //2

} //1

return(0)

}

[lang=pl]Hola, hubo un error, dos ")" desbalanceados en la función OrderMagicNumer deberías usar () al final. En el bucle for deberías usar ";" en lugar de ",".

Si necesitas encontrar paréntesis desbalanceados te recomiendo Notepad ++ [/lang]

Archivos adjuntos:
eamod.mq4  5 kb
Razón de la queja: