¿Cómo codificar? - página 175

 

Su sistema parece un poco loco......

extern double Lots=0.1;

extern int TP=50;

extern int SL=50;

extern int timeframe=1;

extern bool close=false;

extern int Slippage=2;

extern int Magic=46151;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

datetime LastTradeTime = 0;

int start()

{

int time=60*timeframe;

if(LocalTime()-LastTradeTime > time) {

if(close==true) {

if(OrdersTotal()!=0) {

for(int i = 0;i < OrdersTotal();i++){

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderType()==OP_SELL && OrderMagicNumber()==Magic) { OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Green ); }

if(OrderType()==OP_BUY && OrderMagicNumber()==Magic) { OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, Red ); }

} } }

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

OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Bid + SL * Point, Bid - TP * Point, NULL, Magic, 0, Red);

LastTradeTime = LocalTime(); }

return(0);

}

Si "close" es verdadero, cerrará las órdenes abiertas al final del marco de tiempo (en este caso 1 minuto). SL/TP=100 significa 10pips en un broker de 5 dígitos.

Por cierto, no estoy seguro de si abrirá ambas órdenes inmediatamente.

¿Es posible cerrar y abrir (o abrir 2 posiciones) al mismo tiempo?

Esto funciona bien en los backtests por supuesto, pero no sé si funciona en una cuenta demo/viva.

 

NUNCA he podido conseguir que eso funcione con ningún broker...

he añadido retrasos y código de confirmación para comprobar si las órdenes se cerraron y se abrieron, si no lo intentan de nuevo.

incluso entonces, sigue sin funcionar correctamente de forma consistente

 

Esto parece ser un problema para muchas estrategias. ¿Hay alguien que haya encontrado una solución para este problema?

 

problema de trailing stop

Tengo pares de yenes que cuando intento usar mi trailing stop; mueve mi precio a "cero" después de entrar en beneficios. ¿Puede alguien decirme por qué ocurre esto y cómo solucionarlo? La orden de arrastre funciona bien en divisas de 5 dígitos.

void TrailOrder(int type)

{

if(TrailingStop>0)

{

if(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

{

if(Bid-OrderOpenPrice()>Punto*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(Point*TrailingStop),OrderTakeProfit(),0,Green);

}

}

}

if(type==OP_SELL)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(Point*TrailingStop),OrderTakeProfit(),0,Red);

}

}

}

}

}

}

 
ajk:
Tengo pares de yenes que cuando trato de usar mi trailing stop; mueve mi precio a "cero" después de entrar en beneficios. ¿Puede alguien decirme por qué ocurre eso y cómo solucionarlo? La orden de arrastre funciona bien en divisas de 5 dígitos.

Creo (es sólo mi opinión) que es porque tienes una función y esta función no sabe nada de OrderOpenPrice(), OrderStopLoss() etc. Es mejor que pongas este código dentro del bucle.

 
ajk:
Tengo pares de yenes que cuando trato de usar mi trailing stop; mueven mi precio a "cero" después de entrar en beneficios. ¿Puede alguien decirme por qué ocurre esto y cómo solucionarlo? La orden de arrastre funciona bien en divisas de 5 dígitos.

Posiblemente un uso diligente de NormalizeDouble(...) haría la diferencia?

 

¿cómo codificar dos indicadores cruzados con diferentes escalas?

¿cómo codificar dos indicadores cruzados con diferentes escalas?

quiero ayuda

 

Voy a dar cualquier cosa una oportunidad. Es extraño porque codificador gurú codificado el ea y he modificado. Miré a través de toneladas 'de ea y no puedo encontrar nada.

 

alguna sugerencia sobre cómo escribir el código después de

void OrdenDeRastro(int tipo)

que llama a la función?

¡Tal vez quitar la función por completo y utilizar la e externa al final de ea...argh>!

 
ajk:
cualquier sugerencia sobre cómo escribir el código después de la

void TrailOrder(int type)

¿llamando a la función?

¡Tal vez sacar la función por completo y utilizar e externa que termina en ea...argh>!

Si quieres puedo arreglar tu EA. Envíeme en PM.

Razón de la queja: