Кто сможет помочь с роботом, почему не работает?

 

Всем привет! Кто сможет помочь с роботом, почему не работает?

extern double  lots       = 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, lots ,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);
}

 
Показывает ошибку    OrderSend(Symbol()
 
GIM:
Показывает ошибку    OrderSend(Symbol()

1. Код ошибки в журнале посмотрите.

2.  extern double TPforSymbol = 0;

    extern double SLforSymbol = 0;

переменные равны нулю. 

 
То что переменные равны нулю - это ограничение прибыли и убытка, я думаю это здесь значение не имеет....
 
GIM:
То что переменные равны нулю - это ограничение прибыли и убытка, я думаю это здесь значение не имеет....
Ошибка то наверное 130? Значение имеет, посмотрите, вы пытаетесь открыть ордер со значениями ТП и СЛ равным аску и биду
 
GIM:

Всем привет! Кто сможет помочь с роботом, почему не работает?

extern double  lots       = 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, lots ,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);
}

Нельзя по правилам языка проглатывать параметры со значениями по умолчанию. Если надо задавать цвет стрелочек, то пишите все параметры левее цвета. B slippage 3 мало, ели это 5-знак, будут реквоты, я написал 50. И значения СЛ и ТП надо задать не равными нулю, тут уже Aleksey Vakhrushev написал об этом.

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

верно =) 

а то ордер пытается поставить стоп и тп на том же самом месте что и сама цена -что невозможно

- либо делаешь как написано внизу если нужны  0

либо указать TPforSymbol,  SLforSymbol

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

Всем привет! Кто сможет помочь с роботом, почему не работает?


Вам функция открытия надо правильная или хотите разобраться почему ошибки ?
 
Vladimir Zubov:
Вам функция открытия надо правильная или хотите разобраться почему ошибки ?
Надо чтоб открывал сделки.
 
GIM:
Надо чтоб открывал сделки.

Разберитесь с переменными 

extern double TPforSymbol = 0;

extern double SLforSymbol = 0;

С таким значением переменных вы будете получать 130 ошибку.

И вам  Alexey Volchanskiy написал, что вы не все параметры указываете для функции OrderSend()

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

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

}


Вот так исправил, но все равно что то не то.....

Причина обращения: