Проверка минимального стопа в советниках, публикуемых в маркете. - страница 12

 
Igor Volodin:

Так делить на point нельзя, значение функции SymbolInfoDouble(symToWorkmodify,SYMBOL_POINT) может быть равным нулю.
Это касается и других маркет-функций. 

К примеру, из-за  использования в расчетах AccountInfoInteger(ACCOUNT_LEVERAGE) на чемпионате 2010 года вылетела часть советников с ошибкой Zero divide, когда в OnInit'е эта функция вернула 0.

Если смотреть справочник , то SymbolInfoDouble(), SymbolInfoInteger() надо обязательно ставить проверку на ошибки.
 
Vladimir Gribachev:

Если все так плохо то вот

Еще раз обращаю внимание, что тема посвящена ситуации, когда стоплевел равен 0. Вы привели результат тестирования с величиной стоплевел, большей нуля.

 ну а если вообще все плохо, как правильно подметил Andrey F. Zelinsky

то можно приписать проверку на 130тую ошибку и прибавлять +1 к стопам. Но это вообще бредятина.
Проверка на предмет получения ошибки 130 - нормальная практика, как и любой другой ошибки в программе. А вот прибавлять 1 к стопам, во-первых, не поможет, во-вторых, плохое решение.
 
Ihor Herasko:

Еще раз обращаю внимание, что тема посвящена ситуации, когда стоплевел равен 0. Вы привели результат тестирования с величиной стоплевел, большей нуля.

Покажите мне где на сервере MetaQuotes-Demo стоплевел = 0

если даже стоплевел = 0, то минимальный уровень стоп-лосса равен величине спреда.

если спред тоже = 0, то покажите мне такого брокера и я пойду рубить там бабло. 

Проверка на предмет получения ошибки 130 - нормальная практика, как и любой другой ошибки в программе. А вот прибавлять 1 к стопам, во-первых, не поможет, во-вторых, плохое решение. 

а кто говорил про то, что оно хорошее.

код проверки я опубликовал, Вы запихнули в сов для проверки, я показал что на сервере где проверяют модераторы эта проверка работает. 

Если нужно издеваться над системой а не искать решение которое хотел топикстартер, то нужно создать новую тему с названием "Давайте взорвем вынесем мозг !!!"

ЗЫ. Топикастеру нужно было решение для того, чтобы пройти проверку в маркет. Модераторы тестят на своем серваке а не на Альпах или еще где-то там.

 
Vladimir Gribachev:

если спред тоже = 0, то покажите мне такого брокера я пойду рубить там бабло. 

 не пойдете, там будет комиссия 
 

:-)  почитал улыбнуло


я не спрашивал что делать если сервер возвращает 0, умерьте свое самолюбие   - обращаюсь конкретно к одному человеку, он сам поймет. или не поймет - но это не важно. 

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

 ТЕМА И РЕЧЬ ИДЕТ О ПРОВЕРКЕ В МАРКЕТЕ. 

а не о том, что должен проверять советник и как обрабатывать ошибки. - с этим все ок.

 
Vladislav Andruschenko:

я не спрашивал что делать если сервер возвращает 0

Тогда Вам нужно выражаться яснее в топике темы:

Сейчас же в 90 % брокеров спред и минстоп плавающий и выдают 0 .

 
Ihor Herasko:

Тогда Вам нужно выражаться яснее в топике темы:

я спрашивал про то, как обойти ошибку маркета, если сервер возвращает 0 - и при проверке в макрете модератор ставит стоплосс = 1, но советник не может заменить на мин стоп так как он равен 0, - он плавающий. 

Понятное дело что советник возвращает ошибку 130 и говорит о том что стоплосс неправильный сделайте изменения, но в маркете эта отмашка не проходит. 

 

мой пост звучал так:

 

Всем привет, друзья

есть такая особенность маркета: нужно проверять все значения на мин стоп.

Если значение переменной меньше чем мин стоп то присваивать мин стоп, чтоб не было ошибки 130.

Сейчас же в 90 % брокеров спред и минстоп плавающий и выдают 0 .

есть такая конструкция кода, присваивающая всем переменным значения мин стопа.  

 int OnInitLevels(string symToWorkmodify)
  {
   if(lot<SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN);else
   if(lot>SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX);else lots=lot;
   if(StopLoss>0 && StopLoss<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))StopLosss=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else StopLosss=StopLoss;
   if(TakeProfit>0 && TakeProfit<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TakeProfits=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TakeProfits=TakeProfit;
   if(TrailingStop>0 && TrailingStop<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TrallingStops=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TrallingStops=TrailingStop;
   if(TakeProfitALL>0 && TakeProfitALL<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TakeProfitsAver=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TakeProfitsAver=(int)TakeProfitALL;
   if(TrailingStop>0 && TrailingStop<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TrallingStops=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TrallingStops=TrailingStop;
   return(0);
  }

 но она в маркете более не проходит, потому что теперь везде мин стоп = 0 ,

кто как справляется с этой бедой?

 
Vladimir Gribachev:

Покажите мне где на сервере MetaQuotes-Demo стоплевел = 0

Не на сервере MetaQuotes, а на при проверке в маркете (см. первый пост темы):

 но она в маркете более не проходит, потому что теперь везде мин стоп = 0 ,

Vladimir Gribachev:

если даже стоплевел = 0, то минимальный уровень стоп-лосса равен величине спреда.

 Не факт. Может быть и 2, и 3 спреда. Возможно, Вы просто не сталкивались с подобными ситуациями. Но это ведь не значит, что их нет. На указанном мною брокере ситуация именно такая.

 
Ihor Herasko:

Не на сервере MetaQuotes, а на при проверке в маркете (см. первый пост темы):

 Не факт. Может быть и 2, и 3 спреда. Возможно, Вы просто не сталкивались с подобными ситуациями. Но это ведь не значит, что их нет. На указанном мною брокере ситуация именно такая.

в том то и дело, что задавать жестко мин стоп на 1-2-3 спреда - это отмазка. так дело не пойдет

нужно реальное решение проблемы с плавающим стопом.  

Великий Андрей здесь сказал что решение уже есть, и в него надо вдуматься - а какое решение он не указал, видать у него есть какие то суперспособности по определению мин стопа - когда он плавающий, но он почему то не говорит как это сделать, скрывает, знает но скрывает. УВЫ. или просто мне не говорит.  

 

Думаю, Вам стоит, все-таки, определиться с вопросом )) Пока же путаетесь в показаниях:

я не спрашивал что делать если сервер возвращает 0

и через пост:

я спрашивал про то, как обойти ошибку маркета, если сервер возвращает 0

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