Crear una orden de Breakeven

Espacio para compartir y debatir sobre Asesores Expertos de MetaTrader

Crear una orden de Breakeven

Notapor DistriFx » 20 Mar 2017, 13:10

Hola 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
Adjuntos
NubeIch.mq4
(7.16 KiB) 38 veces
DistriFx
 
Mensajes: 10
Registrado: 18 Dic 2016, 12:20
Karma: 0

Re: Crear una orden de Breakeven

Notapor XaviT » 20 Mar 2017, 13:48

Buenas 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.
XaviT
 
Mensajes: 196
Registrado: 05 Mar 2016, 15:57
Karma: 3

Re: Crear una orden de Breakeven

Notapor Xakalin » 20 Mar 2017, 13:54

Estoy 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.
Imagen
Avatar de Usuario
Xakalin
 
Mensajes: 291
Registrado: 05 Jul 2016, 17:57
Karma: 4

Re: Crear una orden de Breakeven

Notapor DistriFx » 20 Mar 2017, 14:40

Vaya, que rapidos jejeje. Gracias por vuestros comentarios. Intentare hacerlo como decís. Si no os pediré de nuevo ayuda. Gracias de nuevo. Un saludo
DistriFx
 
Mensajes: 10
Registrado: 18 Dic 2016, 12:20
Karma: 0

Re: Crear una orden de Breakeven

Notapor Nightmare » 21 Mar 2017, 03:01

si 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() );
}
Nightmare
 
Mensajes: 165
Registrado: 22 Feb 2017, 20:10
Karma: 1

Re: Crear una orden de Breakeven

Notapor DistriFx » 22 Mar 2017, 10:24

Gracias 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
DistriFx
 
Mensajes: 10
Registrado: 18 Dic 2016, 12:20
Karma: 0

Re: Crear una orden de Breakeven

Notapor DistriFx » 08 Abr 2017, 20:52

Hola 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 :(
DistriFx
 
Mensajes: 10
Registrado: 18 Dic 2016, 12:20
Karma: 0

Re: Crear una orden de Breakeven

Notapor cdtrader » 08 Abr 2017, 21:02

Simple, 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
:coffe: no me levante de la cama esta mañana para ser mediocre.
Ranking LA GRAN CARRERA
Avatar de Usuario
cdtrader
 
Mensajes: 1285
Registrado: 23 Ago 2014, 13:47
Karma: 15

Siguiente

Volver a Expert Advisors

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados