Página 20 de 39

Publicado: 11 Mar 2008 14:56
por pitufogranjero
si, eso está puesto, ya te digo que he copiado codigo de los ejemplos...

oye, que muchas gracias por las respuestas.

Publicado: 11 Mar 2008 15:13
por pitufogranjero
me pone unint reason 6

Publicado: 11 Mar 2008 17:17
por pitufogranjero
ahora me salta la confirmacion manual de la orden, pero me pone SL y TP no validos, he revisado los valores y creo que están bien...

Publicado: 11 Mar 2008 17:41
por Fer137
Hay cosas que dependen de cada broker de metatrader. El whc es un caso especial y parece que no deja poner los stoploss y takeprofit en la misma orden a mercado,pero deja modificar la orden para incluirlos despues.
Puedes probar a quitar los stops, y si quieres que los tenga pues que los ponga una linea despues con OrderModify( ).

La confirmacion manual se quita en 'herramientas' y en la pantalla de iniciacion.

Lo de 'uninit reason 6' significa que el sistema se ha reinicializado o parado (depende de la opcion que tengas en herramientas) al cambiar de cuenta.

Publicado: 11 Mar 2008 17:58
por pitufogranjero
gracias, era eso, y como recojo el ticket de la orden para meterlo en la modificacion?

tampoco consigo quitar lo de la confirmacion manual, en herramientas opciones está desactivado!!

Publicado: 11 Mar 2008 18:13
por Fer137
Por ejemplo algo así:

int tk;
....
tk=OrderSend( .... ...);
OrderModify( tk, ... .... );
....
Probablemente en el codigo que tengas ya estará recogido con alguna variable, puedes ponerle la misma.

Lo de la confirmacion manual mira tambien en la pantalla que sale al iniciar el sistema, en 'comun'.

Publicado: 11 Mar 2008 18:22
por pitufogranjero
un millon de gracias, pero ya solo me queda lo de quitar la confirmacion manual

Publicado: 11 Mar 2008 18:23
por Fer137
edité el mensaje y lo incluí mientras tu contestabas:)

Publicado: 11 Mar 2008 18:26
por pitufogranjero
perdona, no lo había visto, pero no entiendo donde dices que lo mire...

Publicado: 11 Mar 2008 18:30
por pitufogranjero
consigo pasar la modificación (gracias a ti, :D ) pero lo que no consigo que pase bien es el valor del SL y TP, mira, te resumo el codigo:

SL = 0.0010;
TP = 0.0010;

StopLoss = Ask-SL;
TakeProfit = Ask+TP;

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA,0,Green);
OrderModify(res,OrderOpenPrice(),StopLoss,TakeProfit,0,Blue);

Publicado: 11 Mar 2008 19:10
por Fer137
Si quieres utilizar el OrderOpenPrice() debes seleccionar previamente la orden. Intercalando OrderSelect:

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA,0,Green);
OrderSelect(res,SELECT_BY_TICKET);
OrderModify(res,OrderOpenPrice(),StopLoss,TakeProfit,0,Blue);

Publicado: 11 Mar 2008 19:41
por pitufogranjero
sigue sin pasar el valor del SL y TP correctamente...

y del tema que no me envie los emails, sabes por que puede ser?

Publicado: 11 Mar 2008 21:57
por Fer137
Puede ser cualquier cosa. Los precios en ordersend y ordermodify deben estar con los decimales correctos, ponle NormalizeDouble(stoploss,Digits), lo mismo para el takeprofit. Amplía los stops unos pipos (algunos brokers no dejan menos de 10 de distancia).

Lo de los emails tienes que configurarlo en herramientas, no lo he llegado a usar.

Publicado: 12 Mar 2008 10:35
por pitufogranjero
no hay manera, ahora he hecho esto:

StopLoss = Ask-SL;

(también he probado con StopLoss = OrderOpenPrice()-SL;)

NormalizeDouble(StopLoss,4);
Print(StopLoss); (y no me imprime nada, ni pasa el valor)

Publicado: 12 Mar 2008 14:05
por Fer137
El NormalizeDouble es una funcion, no la puedes poner suelta. (Seguramente ni te lo compilaba). Y asegurate de que todas las variables estén definidas con su tipo. El Print imprime en el log 'expert'.

int res,MAGICMA;
double SL=0.0010,TP=0.0010,StopLoss,TakeProfit,Lots=0.1;

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA,0,Green);
OrderSelect(res,SELECT_BY_TICKET);
OrderModify(res,OrderOpenPrice(),NormalizeDouble(StopLoss,Digits),NormalizeDouble(TakeProfit,Digits),0,Blue);