¿Quién puede ayudar con el robot, por qué no funciona?

 

Hola a todos, ¿quién puede ayudar con el robot, por qué no funciona?

extern double lotes = 0.01;
extern double TPforSymbol = 0;
extern double SLforSymbol = 0;

int last_bar= 0;

int start(){
if (last_bar == Bars) return(0);
last_bar = Bars;
if(OrdersTotal() == 0){
OrderSend(Symbol(), OP_BUY, lotes ,Ask, 3, Bid - SLforSymbol * Point, Ask + TPforSymbol * Point, 0, Blue);
OrderSend(Symbol(), OP_SELL, lots ,Bid, 3, Ask+ SLforSymbol * Point, Bid - TPforSymbol * Point, 0, Red);
}
return(0);
}

 
Indica un error de OrderSend(Symbol()
 
GIM:
Muestra el error OrderSend(Symbol()

1. Busca el código de error en el cuaderno de bitácora.

2. extern double TPforSymbol = 0;

extern double SLforSymbol = 0;

variables son iguales a cero.

 
El hecho de que las variables sean cero es una restricción de pérdidas y ganancias, no creo que importe aquí....
 
GIM:
El hecho de que las variables sean cero es una restricción de pérdidas y ganancias, no creo que importe aquí....
El error debe ser de 130? Sí importa, mira, estás intentando abrir una orden con valores TP y SL iguales a Ask y Bid
 
GIM:

Hola a todos, ¿quién puede ayudar con el robot, por qué no funciona?

lotes dobles externos = 0,01;
extern double TPforSymbol = 0;
extern double SLforSymbol = 0;

int última_barra = 0;

int inicio(){
if (last_bar == Bars) return(0);
última_barra = Bares;
if (OrdersTotal() == 0){
OrderSend(Symbol(), OP_BUY, lotes ,Ask, 3, Bid - SLforSymbol * Point, Ask + TPforSymbol * Point, 0, Blue);
OrderSend(Symbol(), OP_SELL, lots ,Bid, 3, Ask + SLforSymbol * Point, Bid - TPforSymbol * Point, 0, Red);
}
return(0);
}

Por las reglas del lenguaje no se pueden tragar parámetros con valores por defecto. Si tiene que establecer el color de las flechas, entonces escriba todos los parámetros a la izquierda del color. B deslizamiento 3 no es suficiente, si es de 5 dígitos, habrá requotes, escribí 50. Y el SL y el TP deben fijarse en valores distintos de cero.Aleksey Vakhrushev ya ha escrito sobre ello.

OrderSend(Symbol(), OP_BUY, lots ,Ask, 50, Bid - SLforSymbol * Point, Ask + TPforSymbol * Point,  "", 1, 0, clr Blue);
 

derecho =)

una orden intenta colocar un stop y un tope en el mismo lugar que el precio, lo cual es imposible

- o bien hacer como abajo si quieres 0

o especificarTPforSymbol, SLforSymbol

OrderSend(Symbol(), OP_BUY, lots ,Ask, 50,0, 0,  "", 1, 0, clrBlue);
 
GIM:

Hola a todos, ¿quién puede ayudar con el robot, por qué no funciona?


¿Necesita que la función de apertura sea correcta o quiere averiguar el motivo de los errores?
 
Vladimir Zubov:
¿Quiere que la función de apertura sea correcta o quiere entender por qué hay errores?
Quieres que abra las operaciones.
 
GIM:
Debería abrir acuerdos.

Tratar las variables

extern double TPforSymbol = 0;

extern double SLforSymbol = 0;

Con este valor de variables obtendrá un error.

Alexey Volchanskiy escribió que no se especifican todos los parámetros de la función OrderSend().

 
extern double lotes = 0.01;
extern double TPforSymbol = 100;
extern double SLforSymbol = 1000;
extern int stop_loss = 76;
extern int take_profit = 750;

intlast_bar = 0;

int start(){
if (last_bar == Bars) return(0);
last_bar = Bars;
if(OrdersTotal() == 0){
OrderSend(Symbol(), OP_BUY, lots ,Ask, 50, Bid - stop_loss * Point, Ask + take_profit * Point, "", 1, 0, clrBlue);
OrderSend(Symbol(), OP_SELL, lots ,Bid, 50, Ask+ stop_loss * Point, Bid - take_profit * Point, "", 1, 0, clrRed);
}
return(0);

}


Lo he arreglado así, pero sigue siendo erróneo.....

Razón de la queja: