[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 174

 

Esta es la zona donde se activa la orden de mercado si no se puede establecer el límite. ¿Quizás sea aquí donde radica el problema? Funcionó en el probador :(

ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,timecl,blue);
if(ticket<1){//tratamiento de errores
err=GetLastError();
if(err==147){// tiempo de espera
Err147=true;
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket>0){
WriteOrder(ticket,timecl);
}sin embargo{
err=GetLastError();
si(err==130){
if(Set_order_from_market){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Error al establecer la orden del mercado # ",err,
"Tipo de pedido = COMPRA",
"Precio de apertura =",Ask,
"Precio = ",Ask,
"Stop Loss = ",sll,
" TakeProfit = ",tpp);
}
}sin embargo{
}
}
}
}
si(err==130){
if(Establecer_pedido_del_mercado){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Error al establecer la orden del mercado # ",err,
"Tipo de pedido = COMPRA",
"Precio de apertura =",Ask,
"Precio = ",Ask,
"Stop Loss = ",sll,
" TakeProfit = ",tpp);
}
}sin embargo{
}
}
Print("4 Error en la configuración del pedido # ",err);
}
}
}
}
 

poner al principio de la función
sll = NormalizeDouble (sll, MarketInfo( Symbol (), MODE_DIGITS)); tpp = NormalizeDouble (tpp, MarketInfo( Symbol (), MODE_DIGITS))

 
alsu:

poner
sll = NormalizeDouble (sll, MarketInfo( Symbol (), MODE_DIGITS)); tpp = NormalizeDouble (tpp, MarketInfo( Symbol (), MODE_DIGITS));



Los soportes son así. Por desgracia, no estoy muy versado en el código...

if(typ>0){
if(CountOpOrd(4,magic)<1){
if(buy!=0){
if(OpPrise(buy){RefreshRates();
if(buy-Ask<stlw*Point){NormalizeDouble(Ask+stlw*Point,Digits);}
if(sl<0){sll=NormalizeDouble(buy-((buy-sell)*(sl/(-100))),Digits);}
if(sl>0){sll=NormalizeDouble(buy-sl*Point*mno,Digits);}
if(tp>){tpp=NormalizeDouble(buy+tp*Point*mno,Digits);}
if(tp<0){tpp=NormalizeDouble(buy+((buy-sell)*(-tp/100)),Digits);}
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,timecl,Blue);
if(ticket<1){//tratamiento de errores
err=GetLastError();
if(err==147){// no permitir el tiempo de caducidad
Err147=true;
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket>0){
WriteOrder(ticket,timecl);
}sin embargo{
err=GetLastError();
si(err==130){
if(Set_order_from_market){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Error al establecer la orden del mercado # ",err,
"Tipo de pedido = COMPRA",
"Precio de apertura =",Ask,
"Precio = ",Ask,
"Stop Loss = ",sll,
" TakeProfit = ",tpp);
}
}sin embargo{
}
}
}
}
si(err==130){
if(Establecer_pedido_del_mercado){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Error al establecer la orden del mercado # ",err,
"Tipo de pedido = COMPRA",
"Precio de apertura =",Ask,
"Precio = ",Ask,
"Stop Loss = ",sll,
" TakeProfit = ",tpp);
}
}sin embargo{
}
}
Print("4 Error en la configuración del pedido # ",err);
}
}
}
}
 

La lógica es confusa, no se puede entender.

Esta línea no hace nada en absoluto:

if(buy-Ask<stlw*Point){NormalizeDouble(Ask+stlw*Point,Digits);

Los que lo escribieron tienen que resolverlo primero :))

En general, pon mis líneas justo antes de abrir las órdenes. De todos modos, eso no lo empeorará, pero si el error persiste, será obvio que fue causado por una violación del nivel de parada, porque 130 es la única forma de cometer un error.

 
alsu:

La lógica es confusa, no se puede entender.

Esta línea no hace nada en absoluto:

Los que lo escribieron tienen que resolverlo primero :))

En general, ponga mis líneas justo antes de abrir las órdenes. De todos modos, eso no lo empeorará, pero si el error persiste, será obvio que fue causado por una violación del nivel de parada, porque 130 es la única forma de cometer un error.

https://www.mql5.com/ru/code/10111 - aquí. Tal vez haya una respuesta aquí...
 

El informante está un poco torcido...

Es mejor que le preguntes al autor, muéstrame mi línea, que no hace nada. xrust es un hombre con experiencia, se dará cuenta de cómo corregirlo.

 
alsu:

Un poco torcido EA...

Es mejor que le preguntes al autor, muéstrame mi línea, que no hace nada. xrust es un hombre experimentado, ya se le ocurrirá cómo ajustarlo.


Al menos lo hace :)

Hay errores, pero no son fatales...

xrust no se pone en contacto :(

Yo mismo estoy esperando una versión sin bugs. Tal vez lo saque...

 
¿cómo se llama la señal de ALERTA? porque se oye un pitido y un burbujeo cuando se da la señal y no la encuentro ((...)
 
Rossi:
¿como se llama la tabla de ALERTAS? porque suena un pitido y un gorgoteo cuando se da la señal y no la encuentro ((...
Alerta()
 
¿Pueden decirme cómo seleccionar una orden cerrada? La cuestión es que quiero cerrar una posición(abierta manualmente y la posición siempre será una - es el máximo), por lo que la música sonará si la orden estaba en el plus, si es negativa, entonces el otro, si en el nulo, entonces el tercero. Puedes introducir las condiciones a través de OrderProfit, pero no sé cómo eliminar la última orden cerrada del historial.