Crear una orden de BreakevenHola a todos, estoy haciendo un expert basado en el indicador ichimoku. Quisiera añadirle un breakeven para que llegado el precio a unos pips a nuestro favor que se mueva el stop a BE o con algunos pips de beneficio. El caso es que estoy dandole vueltas al tema desde hace mucho tiempo y no logro conseguirlo. A ver si alguien puede orientarme. Os adjunto el archivo para que lo veais.
Gracias de antemano
Re: Crear una orden de BreakevenBuenas Distri.
Te doy la idea de como lo hice yo, ya que veo que programas y podras hacerla por ti mismo, sino me comentas y ya mirariamos codigo. (igual hay otra forma de hacerlo pero bueno es la que yo vi) La idea es que te montes una funcion que sea llamada a cada tick (en el ontick). En esa funcion lo que tienes que hacer es mirar por cada operacion en marcha que recorrido de pips lleva, y le pones una condicion, si supera el nivel que le pongas por otra variable que lance un OrderModify donde le has de modificar el StopLoss al precio que apertura (en caso de breakeven) o los pips de beneficio que quieras... Ejemplo: Orden BUY de DAX en 12.000 (nivel para lanzar breakeven en +40). A cada tick llamas a la funcion y comprueba si esa orden tiene un precio superior a 12.040, si es asi lanzas una modificacion y pones el SL a 12.000 o 12.010 si quieres beneficios... No se si se capta bien la idea. Saludos.
Re: Crear una orden de BreakevenEstoy con xavit, viendo tu forma de haberlo hecho, te comento. en el ordersend yo nunca pongo el sl y tp (por si da error, lo pongo en un modify)
Despues de abrir las operaciones es cuando controlo todo eso y si no quieres tp que haces? hazte un control de si es 0 no pongas SL si pones BE usaría dos parametros uno con el recorrido, y otro donde quieres el TP if((OrderOpenPrice()+BE*MyPoint) < Bid) OrderModify(OrderTicket(),OrderOpenPrice(),Bid-BEStop*MyPoint,OrderTakeProfit(),0,Green); aparte siempre pone antes de ello (if BE > 0) para que solo entre si es mayor a 0, si no se te acabará volviendo loco.
Re: Crear una orden de BreakevenVaya, que rapidos jejeje. Gracias por vuestros comentarios. Intentare hacerlo como decís. Si no os pediré de nuevo ayuda. Gracias de nuevo. Un saludo
Re: Crear una orden de Breakevensi vas ganando (argStep1Pips+argDeltaPips)
entonces mueve stop a argStep1Pips del precio de entrada en tu caso argStep1Pips =0 haría que se mueve a B.E. void MoverStop(int argStep1Pips, int argDeltaPips) { // mueve el Stop Loss la primera vez if ( OrderType()==OP_BUY ) if( OrderOpenPrice() > OrderStopLoss() && Bid > OrderOpenPrice() + (argStep1Pips + argDeltaPips)*UsePoint ) if( !OrderModify( OrderTicket(), OrderOpenPrice(), NormalizeDouble( OrderOpenPrice() + argStep1Pips*UsePoint, Digits), OrderTakeProfit(), 0, Blue ) ) Print("No pude modificar orden", OrderTicket() ); if ( OrderType()==OP_SELL ) if( OrderOpenPrice() < OrderStopLoss() && Ask < OrderOpenPrice() - (argStep1Pips + argDeltaPips)*UsePoint ) if ( !OrderModify( OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - argStep1Pips*UsePoint, Digits), OrderTakeProfit(), 0, Red ) ) Print("No pude modificar orden", OrderTicket() ); }
Re: Crear una orden de BreakevenGracias a todos chicos. Espero que esto me sirva. XaviT programo muy poco. Casi nada. Me he iniciado hace un mes escaso y ademas no tengo mucho tiempo para dedicarle, asi que estoy en pañales. Si hago alguna pregunta tonta y que se supone que es algo obvio, disculpadme.
Y lo dicho, muchas gracias a todos. Lo pondre en practica
Re: Crear una orden de BreakevenHola de nuevo chicos. Despues de varios dias ocupado me he puesto a probar todas las cosas que me dijisteis con tanta amabilidad. No se si es el mejor codigo posible, pero realiza perfectamente lo que me propongo (en una primera fase). Que no es otra cosa que cuando el precio este a nuestro favor x pips, se coloque el stoploss un pips por encima de la entrada garantizando una ligera ganancia en el peor de los casos. Os coloco el codigo para que lo veais (y por si veis algun fallo jejeje).
void Beven() { int total=OrdersTotal(); for(int pos=0;pos<total;pos++) { if(OrderSelect(pos,SELECT_BY_POS)) if(OrderType()==OP_BUY) { if(Ask>(OrderOpenPrice()+BreakEven)) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BE,OrderTakeProfit(),0); } } } } Ahora bien, puse en una primera fase proque una vez que el precio llegue a otra distancia quisiera que el stop subiera otros pocos pips. Pero es muy frustrante ya que lo mas que he llegado a conseguir es que se suba al segundo nivel cuando el precio alcanza el nivel requerido, pero se vuelve a bajar el stoploss al nivel del primer salto si el precio baja de este segundo nivel. Y no consigo solucionarlo. Esa parte del codigo la borre del cabreo, asi que no puedo ponerlo. Pero si necesitais que lo ponga para ver el posible fallo, intentare reescribirlo de nuevo. Muchas gracias y disculpad mi torpeza
Re: Crear una orden de BreakevenSimple, cuando hagas el control de haber llegado al primer nivel, controla también que el stop loss este menor a OrderOpenPrice()+BE ( porque si es mayor o igual ya lo modificas te antes)
Enviado desde mi Moto G (4) mediante Tapatalk
15 mensajes
• Página 1 de 2 • 1, 2
|
|
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado