Return value of ordersend should be checked как исправить

Блог им. andresh

    • 10 июня 2014, 16:55
    • |
    • Андрэ
  • Еще

попробовал запустить советник в МТ4 на MQL4:

 
extern int H = 14;
extern int M = 25;
int start()
{
if(OrdersTotal()==0 && Hour( )==H && Minute( ) ==M)
   OrderSend(«USDJPY», OP_SELL,0.1,Bid,0,Ask+200*Point,Ask-200*Point,»»,123,0,Red);
}

 
и никак не могу разобраться, чего не хватает. ошибок нет, но есть 2 предупреждения: 

return value of ‘OrderSend’ should be checked
not all control paths return a value 

не могу понять, что ещё нужно… Пожскажите пожалуйста, а?

  • Ключевые слова:
  • MQL4,
  • советники
  • хорошо

  • 0

25 комментариев

avatar

  • 10 июня 2014, 17:08
  • Ответить

    Еще

Язык недавно сильно переработали, возможно поэтому.

avatar

  • 10 июня 2014, 17:11
  • Ответить

    Еще

The0bald, пасип. да туповат я, видимо. не могу там найти. ща ещё раз попробую.)

avatar

  • 10 июня 2014, 17:13
  • Ответить

    Еще

5й параметр — проскальзывание может добавить, чтобы больше нуля.
а если это весь код то должен быть последним оператор return(0);

avatar

  • 10 июня 2014, 17:12
  • Ответить

    Еще

Бартоломей Цигенбальг, Ура, второе замечание исчезло!!! Осталось только: return value of ‘OrderSend’ should be checked

avatar

  • 10 июня 2014, 17:14
  • Ответить

    Еще

Андрэ, это про return. про 5-й параметр соображаю…

avatar

  • 10 июня 2014, 17:15
  • Ответить

    Еще

Бартоломей Цигенбальг, это про return. про 5-й параметр соображаю… не поясните?

avatar

  • 10 июня 2014, 17:16
  • Ответить

    Еще


так красивее и все всех устраивает )))
проскальзывание дает шанс открыться по рынку при худшей цене на заданное отклонение именно этим параметром.

avatar

  • 10 июня 2014, 17:17
  • Ответить

    Еще

Бартоломей Цигенбальг, ух ты!!! ошибок нет! Спасибо большое! )))) буду ковыряться дальше! )

avatar

  • 10 июня 2014, 17:24
  • Ответить

    Еще

Андрэ, не совсем правильно в коде, потому что он за минуту пока удовлетворяет условиям может кучу ордеров наоткрывать )))

avatar

  • 10 июня 2014, 17:26
  • Ответить

    Еще

не не норм. там есть проверка на количество открытых ордеров

avatar

  • 10 июня 2014, 17:35
  • Ответить

    Еще

Бартоломей Цигенбальг, тоже присмотрелся, сообразил! )))) спасибо огромное! плюсануть не могу, плюсовалка не позволяет)

avatar

  • 10 июня 2014, 17:37
  • Ответить

    Еще

имхо, лучше с mql5 начать изучение. 4 недавно сильно переделали — книга не актуальна, справка не доделана, не понятно какие функции заменили на аналог из мт5 какие старые оставили, косяки наверняка есть после серьезной переработки.

avatar

  • 10 июня 2014, 17:44
  • Ответить

    Еще

The0bald, логично, НО, эти советники на МТ4 не работают, насколько я знаю. это придётся и платформу менять, а не хотелось бы.

avatar

  • 10 июня 2014, 17:46
  • Ответить

    Еще

Андрэ, На новой МТ4 старые исходники все равно придется переделывать.

avatar

  • 10 июня 2014, 18:24
  • Ответить

    Еще

The0bald, возможно. просто у меня сейчас 2 робота на МТ4 работают, я доволен. вот, взялся сам изучать роботописательство. пока я «БЛИЖЕ» к МТ4. ) вы пишете сами? успешно?

avatar

  • 10 июня 2014, 18:28
  • Ответить

    Еще

Андрэ, Пишу давно, правда индикаторы в основном

avatar

  • 10 июня 2014, 18:30
  • Ответить

    Еще

The0bald, Привет, можно обращятся с просьбой по поводу mql если не трудно?

avatar

  • 10 июня 2014, 21:00
  • Ответить

    Еще

нужно посмотреть на один индюк, выдает сигнал не всегда а нужно чтобы всегда выдал, если вам удобно можно в скайп общятся, мой скайп dimii1000

avatar

  • 10 июня 2014, 22:17
  • Ответить

    Еще

в личку не могу писать, рейтинга не хватает (( я тут больше читатель, почту оставьте если не трудно, моя почта [email protected]

avatar

  • 10 июня 2014, 22:42
  • Ответить

    Еще

avatar

  • 10 июня 2014, 22:53
  • Ответить

    Еще

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
     
      
      int Counted_bars;                       // Количество просчитанных баров 
      Counted_bars=IndicatorCounted(); // Количество просчитанных баров    
      int i=Bars-Counted_bars-1;           // Индекс первого непосчитанного   
      if (i>History-1)                 // Если много баров то ..      
      i=History-1;                     // ..рассчитывать заданное колич.
      while(i>=0)                      // Цикл по непосчитанным барам     
      {    
         double MA_l_0 = iMA(NULL,0,perMA_1,0,modeMA_1,PRICE_CLOSE,i);
         double MA_l_1 = iMA(NULL,0,perMA_1,0,modeMA_1,PRICE_CLOSE,i+1);
         
         double MA_g_0 = iMA(NULL,0,perMA_2,0,modeMA_2,PRICE_CLOSE,i);
         double MA_g_1 = iMA(NULL,0,perMA_2,0,modeMA_2,PRICE_CLOSE,i+1);
         
         double STD_0 = iStdDev(NULL,0,perSTD,0,modeSTD,PRICE_CLOSE,i);
         double STD_1 = iStdDev(NULL,0,perSTD,0,modeSTD,PRICE_CLOSE,i+1);
         
         //double ELR_1=((High[i]+Low[i])/2)-iMA(NULL,0,perELR,0,1,PRICE_CLOSE,i);  
         //double ELR_2=((High[i]+Low[i])/2)-iMA(NULL,0,perELR,0,1,PRICE_CLOSE,i+1);
         
         //Buy
         if(MA_l_0 > MA_l_1 && 
            MA_g_0 > MA_g_1 && 
            STD_0 > STD_1)
            
            if(Hour() < 9   || Hour() > 20) UPBuffer[i] = 0;
            else UPBuffer[i] = Low[i];
        else
         //Sell   
         if(MA_l_0 < MA_l_1 && 
            MA_g_0 < MA_g_1 && 
            STD_0 > STD_1 )
            
            if(Hour() < 9   || Hour() > 20) DNBuffer[i] = 0;
            else DNBuffer[i] = High[i];   
      i--;
      
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Так и не разобрался. Написал 4 советника с разными тралами. У всех в тесте ошибка 130. Не знаю почему она возникает и как сделать так, чтобы ее не было. Еще трал по фракталам вроде работает, но когда тестируешь с визуализацией — тест дальше первой сделки не идет( отрывается первый ордер и все, дальше никаких признаков жизни). А трала по pSAR заметил такую вещь. Советник открыл БАЙ, но цена тут же пошла вниз. А значения то индикатора получается сверху свечи, то есть стоплосс не может быть больше текущей цены. И у нас открыта позиция на долгое время без стоплосса. На скрине отметил это красной стрелкой. Подскажите как быть в данной ситуации?

Вот поправленный трал с фракталами:

void Trailing()
{
SL = 0;
fractal_down = NormalizeDouble(iFractals(NULL,0,MODE_LOWER,5),Digits);
fractal_up = NormalizeDouble(iFractals(NULL,0,MODE_UPPER,5),Digits);
for (int i =0;i {
if (OrderSelect(i,SELECT_BY_POS))
{
if (OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if (OrderType()==OP_BUY)
{
if(fractal_down>0)
{
SL=NormalizeDouble(fractal_down,Digits);
if (OrderStopLoss()!=SL)
{
if(SL bool rez = OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0);
}
}
}
if (OrderType()==OP_SELL)
{
if(fractal_up>0)
{
SL=NormalizeDouble(fractal_up,Digits);
if (OrderStopLoss()!=SL)
{
if(SL > Ask + MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
bool rez = OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0);
}
}
}
}

}

}

Ошибка 130 — это неправильные стопы.Возможно просто стоп-лосс который Вы хотите разместить находится слишком близко
от текущей цены.
Сделайте проверку

if(SL > Ask + MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)


Изменено 4 августа, 2015 пользователем Konstebl

  • Replies
    7.6k
  • Created
    14 yr
  • Last Reply
    Jan 7

Top Posters In This Topic


  • AntFX

    577


  • sergey1294

    569


  • Ugar68

    517


  • Programmer

    419

Popular Posts


Hitronrav

Ну, в данном случае мне стоило бы сразу соблюдать простейшие приёмы защитного программирования, то есть проверять, не равна ли нулю переменная, оказавшаяся под знаком деления. Ведь она «чужая», то ест


Ugar68

На счёт проверок, это правильно. Я больше очень практикую, то же нарывался. Но в моём случае у меня советник открывал ордер минимальным лотом вместо нормального, когда замечал, доливаться было поздно.


kazakov.v

Основной советник выставляет «сигнальный» отложенный ордер далеко от текущей цены и каждую например, минуту модифицирует у него время экспирации: это может быть текущее время плюс 1 час, или плюс 1 су

Posted Images

AntFX
  

6,474



AntFX

ToB. CyxoB
  

324



ToB. CyxoB

AntFX
  

6,474



AntFX

ToB. CyxoB
  

324



ToB. CyxoB

AntFX
  

6,474



AntFX

ToB. CyxoB
  

324



ToB. CyxoB

STre
  

7



STre

Paukas
  

3,907



Paukas

ToB. CyxoB
  

324



ToB. CyxoB

ToB. CyxoB
  

324



ToB. CyxoB

Paukas
  

3,907



Paukas

Fargoth
  

1



Fargoth

ToB. CyxoB
  

324



ToB. CyxoB

Ugar68
  

372



Ugar68

kazakov.v
  

189



kazakov.v

ToB. CyxoB
  

324



ToB. CyxoB

kazakov.v
  

189



kazakov.v

ToB. CyxoB
  

324



ToB. CyxoB

ToB. CyxoB
  

324



ToB. CyxoB

mobidik
  

1



mobidik

ToB. CyxoB
  

324



ToB. CyxoB

mobidik
  

1



mobidik

ToB. CyxoB
  

324



ToB. CyxoB

ToB. CyxoB
  

324



ToB. CyxoB

Join the conversation

You can post now and register later.
If you have an account, sign in now to post with your account.

Note: Your post will require moderator approval before it will be visible.

советник 111

добрый день! прошу помочь в написании советника. Опишу как он должен работать. Пример: пользователь советника заранее выбирает, будет советник торговать только в бай или только селл. Допустим выбрали селл. Свеча закрылась бычья, советник на открытии следующей свечи продает, следующая свеча опять бычья, советник опять продает, следующая свеча закрылась медвежья:) советник ничего не делает) но есть одно условие, если тело свечи меньше 5пп и свеча закрылась бычья советник тоже ничего не делает, при достижении стоп лосса, закрываются все орде сразу, и при достижении тейк профита, также закрываются все ордера разом. Настраеваемые параметры: 1) выбор торговли: Бай/селл. 2) лот 3) стоп лосс от первого ордера( при его достижении закрываются все ордера, если будут открыты) 4) тейк профит от первого ордера ( закрываются так же все ордера при его достижении) 5) размер тела свечи в пунктах ( если торгуем бай, то условие для покупки: тело медвежьей свечи больше 5пп, для продаже обратное)

Аватар пользователя
111111
 
Сообщений: 245
Зарегистрирован: 06 ноя 2013, 14:51
Средств на руках: 7.60 Доллар
Группа: Базовая
Благодарил (а): 148 раз.
Поблагодарили: 15 раз.


Re: советник 111

Сообщение Рэндом » 04 апр 2014, 13:07

В понедельник сделаю.

Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3172 раз.

Каждый заблуждается в меру своих возможностей.


Re: советник 111

Сообщение Рэндом » 07 апр 2014, 03:00

Что делать если после появления противоположного сигнала (когда сделка не открывается) появиться новый сигнал?
Сколько позиций открывать? А то может так получиться что позиции будут открыты на весь депозит.

Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3172 раз.

Каждый заблуждается в меру своих возможностей.


Re: советник 111

Сообщение 111111 » 07 апр 2014, 10:50

Рэндом писал(а):Что делать если после появления противоположного сигнала (когда сделка не открывается) появиться новый сигнал?
Сколько позиций открывать? А то может так получиться что позиции будут открыты на весь депозит.

продолжать открывать позиции, можно ввести еще один параметр, мах число открытых позиций. допустим 5.

Аватар пользователя
111111
 
Сообщений: 245
Зарегистрирован: 06 ноя 2013, 14:51
Средств на руках: 7.60 Доллар
Группа: Базовая
Благодарил (а): 148 раз.
Поблагодарили: 15 раз.


Re: советник 111

Сообщение Рэндом » 07 апр 2014, 11:02

Теперь завтра с утра будет готово.

Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3172 раз.

Каждый заблуждается в меру своих возможностей.


Re: советник 111

Сообщение Рэндом » 08 апр 2014, 03:29

Вот.
Параметры:
Diapozon — минимальный диапазон свечи в пунктах
SL — стоп лосс в пунктах
TP — тэйк профит в пунктах
Lot — лот
Slipage — проскальзывание в пунктах
Count — максимальное количество сделок
TBuy — true открывать длинные позиции
TSell — true открывать короткие позиции

Вложения
BarsEx.mq4
(2.78 KB) Скачиваний: 35
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3172 раз.

Каждый заблуждается в меру своих возможностей.


Re: советник 111

Сообщение 111111 » 08 апр 2014, 16:57

Рэндом писал(а):Вот.
Параметры:
Diapozon — минимальный диапазон свечи в пунктах
SL — стоп лосс в пунктах
TP — тэйк профит в пунктах
Lot — лот
Slipage — проскальзывание в пунктах
Count — максимальное количество сделок
TBuy — true открывать длинные позиции
TSell — true открывать короткие позиции

советник выдает ошибку:return value of ‘OrderSend’ should be checked BarsEx.mq4 76 10
точнее четыре таких.

Аватар пользователя
111111
 
Сообщений: 245
Зарегистрирован: 06 ноя 2013, 14:51
Средств на руках: 7.60 Доллар
Группа: Базовая
Благодарил (а): 148 раз.
Поблагодарили: 15 раз.


Re: советник 111

Сообщение mfcoder » 08 апр 2014, 19:04

111111 писал(а):
советник выдает ошибку:return value of ‘OrderSend’ should be checked BarsEx.mq4 76 10
точнее четыре таких.

это не ошибка, а предупреждение..
с некоторых пор умный компилятор делает замечание о том, что правильно было бы присваивать возвращаемое значение функции OrderSend()
типа int res = OrderSend(…);
в принципе это необязательно делать

Аватар пользователя
mfcoder
 
Сообщений: 1531
Зарегистрирован: 29 июл 2013, 11:55
Средств на руках: 26.85 Доллар
Группа: Базовая
Благодарил (а): 78 раз.
Поблагодарили: 423 раз.


Re: советник 111

Сообщение Рэндом » 09 апр 2014, 05:21

Вот, исправил.

Вложения
BarsEx.mq4
(2.8 KB) Скачиваний: 40
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3172 раз.

Каждый заблуждается в меру своих возможностей.


Re: советник 111

Сообщение 111111 » 09 апр 2014, 17:05

Рэндом писал(а):Вот, исправил.

прошу прощения, но на билде 625, советник даже не отображается в списке советников. В чем может быть дело?

Аватар пользователя
111111
 
Сообщений: 245
Зарегистрирован: 06 ноя 2013, 14:51
Средств на руках: 7.60 Доллар
Группа: Базовая
Благодарил (а): 148 раз.
Поблагодарили: 15 раз.



Кто сейчас на форуме?

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 84

Права доступа к форуму

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

  • Форум посвящен форекс-трейдингу, изучению MQL и правилам инвестирования

Понравилась статья? Поделить с друзьями:
  • Как найти объем перевозок формула
  • Как можно найти лего майнкрафт
  • Как найти климат по карте
  • Сон как нашел золото
  • Как найти рюкзак с документами