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,  

 ) 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);