¿Cómo codificar? - página 180

 

problema con la posición de cierre

......

double cena=0;

static int isCrossed = 0;

isCrossed = Crossed (k,d);

if(OrderSelect(ticket, SELECT_BY_POS))

{

c=Precio de apertura del pedido();

return(0);

}

si (isCrossed>0)

{

cena=((c-Ask)*10000);

return(0);

}

total = OrdersTotal();

if(total < 1)

{

if(isCrossed == 1)

{

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 1000, cena,

cena , "EMA_CROSS", 12345, 0, Green);

}

....

if(isCrossed == 2)

{

ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 1000, cena,

cena, "EMA_CROSS", 12345, 0, Red);

......

en general el EA cierra la posición cuando la EMA se cruza y al mismo tiempo abre otra posición

las posiciones se abren pero no se quieren cerrar ;/

por favor ayuda

 

¿Es posible cerrar una posición y abrir una nueva en el mismo tick?

(...)

if(OrdersTotal()!=0) {

(...)

OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Green ); }

if(OrdersTotal()==0) {

OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Ask - SL * Point, Ask + TP * Point, NULL, Magic, 0, Green); }

(...)

En este ejemplo de código, la posición corta se cerrará en el primer tick, pero la posición larga no se abrirá al instante. Se necesita otro tick para abrir la posición larga.

Gracias de antemano :-)

 

Sí, es posible. Basta con poner la función RefreshRates() entre los operadores.

 
 
pietra`:
...... por favor ayuda

Eso parece: Soy Pietra. ¿Cuál es mi segundo nombre?

Es imposible ayudarte sin el código completo. Lo siento.

 

Necesito ayuda para la codificación

¿Alguien puede ayudarme sobre la codificación de MT4 para conocer los precios máximos y mínimos de apertura de un EA? Hay algunas aperturas por un EA.

Encontré un código como este, pero es para saber la primera/última apertura de la transacción.

double GetLastBuyPrice(int Magic)

{

int total=Total de Pedidos()-1;

for (int cnt = total ; cnt >=0 ; cnt--)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

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

{

return(OrderOpenPrice());

}

}

return(10000);

}

¿Cómo codificar para conocer la apertura de la transacción más alta/más baja?

 

Código

lumanauw:
¿Alguien me puede ayudar sobre la codificación de MT4 para saber los precios máximos y mínimos de apertura de un EA? Hay algunas aperturas por un EA.

He encontrado un código como este, pero es para saber la primera/última apertura de la transacción.

Double opens[1000] = {0};

double maxopen = 0 ;

double minopen = 1000000 ;

// double GetLastBuyPrice(int Magic)

{

int total=Total de pedidos()-1;

for (int cnt = total ; cnt >=0 ; cnt--)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

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

{

opens[cnt] = OrderOpenPrice() ;

}

}

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

{

if ( opens[cnt] > maxopen ) maxopen = opens[cnt] ;

if ( opens[cnt] < minopen ) minopen = opens[cnt] ;

}

}

¿Cómo codificar para conocer la apertura de la transacción más alta/más baja?

hi,

cambiar el código como el anterior,

no es un procedimiento para llamar desde otro ...,

ponlo donde quieras en el código de tu EA .

OTR

 

Necesito ayuda para hacer un código para abrir más de un pedido

No he tenido éxito en la adición de código para abrir una segunda orden.

Estoy tratando de abrir 2 órdenes basadas en la misma señal con diferentes niveles de TP.

Abajo está mi código para abrir la primera orden:

cualquier ayuda es apreciada.

if(SlowSell<0 && FastSell<0 && PrevFastSell==0)

{

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,Bid-TakeProfit*Point, "MA_Angle_Trader",MagicNumber,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden SellStop abierta : ",OrderOpenPrice());

}

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

return(0);

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,0, "MA_Angle_Trader",MagicNumber,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden SellStop abierta : ",OrderOpenPrice());

}

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

return(0);

}

 

Hola

Necesito un poco de ayuda de codificación simple,

1) Cubrir una operación con cierto número de pips

2) Luego desactiva/suspende cualquier otra operación..........

Asegurarse de que no cubre de nuevo como voy a cerrar manualmente el comercio cubierto.

 
williamcope:
No he conseguido añadir código para abrir una segunda orden.

Estoy tratando de abrir 2 órdenes basadas en la misma señal con diferentes niveles de TP.

Abajo está mi código para abrir la primera orden:

cualquier ayuda es apreciada.

if(SlowSell<0 && FastSell<0 && PrevFastSell==0)

{

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,Bid-TakeProfit*Point, "MA_Angle_Trader",MagicNumber,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden SellStop abierta : ",OrderOpenPrice());

}

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

return(0);

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,0, "MA_Angle_Trader",MagicNumber,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden SellStop abierta : ",OrderOpenPrice());

}

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

return(0);

}

Reemplazar la primera

return(0);

a

RefreshRates();

Razón de la queja: