Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Хочешь написать технический индикатор? Загляни в Справочник MQL5!
GIM
167
GIM 2016.02.08 10:50 

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

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

GIM
167
GIM 2016.02.08 10:54  
Показывает ошибку    OrderSend(Symbol()
Vitalii Ananev
8158
Vitalii Ananev 2016.02.08 11:12  
GIM:
Показывает ошибку    OrderSend(Symbol()

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

2.  extern double TPforSymbol = 0;

    extern double SLforSymbol = 0;

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

GIM
167
GIM 2016.02.08 12:26  
То что переменные равны нулю - это ограничение прибыли и убытка, я думаю это здесь значение не имеет....
Aleksey Vakhrushev
559
Aleksey Vakhrushev 2016.02.08 12:53  
GIM:
То что переменные равны нулю - это ограничение прибыли и убытка, я думаю это здесь значение не имеет....
Ошибка то наверное 130? Значение имеет, посмотрите, вы пытаетесь открыть ордер со значениями ТП и СЛ равным аску и биду
Alexey Volchanskiy
16678
Alexey Volchanskiy 2016.02.08 12:57  
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);
Yurij Izyumov
16789
Yurij Izyumov 2016.02.08 13:08  

верно =) 

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

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

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

OrderSend(Symbol(), OP_BUY, lots ,Ask, 50,0, 0,  "", 1, 0, clrBlue);
Vladimir Zubov
4323
Vladimir Zubov 2016.02.08 13:12  
GIM:

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


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

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

extern double TPforSymbol = 0;

extern double SLforSymbol = 0;

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

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

GIM
167
GIM 2016.02.08 13:47  
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);

}


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

1234567
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий