Создаю тему что бы Разработчики увидели! - страница 4

 
Artyom Trishkin:

Алексей показал, что люди проходят валидацию. А кто-то - нет. Значит, тот, кто не проходит, наверное что-то упускает из виду. Ну нужно заставлять советник торговать с однодолларовым депозитом. Нужно чтобы советник сообщил о невозможности торговли. Но и выгружать его при этом не нужно - человек же может пополнить депозит по сообщению советника, и советник, проверив возможность торговли с новым депозитом, должен приступить к работе. Это один из примероввозможного развития событий. Иъ может быть много (не очень), и все их проверяет валидатор - насколько "умный" советник чтобы не сломаться в представленных валидатором ситуациях. У тех, кто создаёт подобные ветки, советники ломаются значит - не проходят проверку.

Нужно смотреть на проверку как на игру в реальность - отрабатывать возможные случаи из жизни реального трейдера с советником.

Вопрос к Вам, Вы пробовали пройти валидацию маркета? Может поможете разобраться ?
 
Vladimir Karputov:

Когда создавались эти примеры - не было таких жестких мер по недопущению плохого кода в Маркет. нет абсурда -абсурд это то, что Вы пытаетесь до сих пори писать под старый терминал, развитие которого остановлено и раздуваете тему над прахом старого терминала.

Пишите на MQL5 и будет на порядок меньше вопросов.

Я Вам уже писал что проверку не проходит. Коды примеров приложил так как Вы любите и текстом файлом.

Валидатор не пропускает код я пытаюсь разобраться второй день. Раньше код проходил проверку.

 
Vladimir Karputov:

Cuando se crearon estos ejemplos, no existían medidas tan estrictas para evitar que el código incorrecto ingresara al mercado. No es absurdo, absurdo es lo que todavía estás tratando de escribir bajo la vieja terminal, cuyo desarrollo se ha detenido y avivas el tema sobre las cenizas de la vieja terminal.

Escriba en MQL5 y habrá un orden de magnitud menos preguntas.

Коды mt5 не доставляют проблем, проблема исключительно для mt4. тот же код, который проверяет в mt5, не делает этого в mt4.

Если есть рынок для продажи на mt4, я не понимаю, почему мы не можем изложить наши разработки на этом языке.

Проблема не в том, какой язык или платформа используется для продажи продукта.

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

Решение не виноват и не виноват уровень разработчиков.

Решение - исправить алгоритм проверки

 
Vladimir Pastushak:
Вопрос к Вам, Вы пробовали пройти валидацию маркета? Может поможете разобраться ?

Нет, я давно не пробовал публиковать - не до коммерции. Но общие принципы того, что проверяется валидатором описаны в известной всем статье. И люди, прочитав её, всё делают и публикуются. Я лишь предложил подойти к этому вопросу не как продавец, а как пользователь продукта, у которого не много денег, но он хочет торговать с купленным в маркете советником. И не пробовать обойти ошибку, о которой сообщает валидатор, а понять почему она есть и обработать её. Не исправить, не заставить советник делать невозможное, а сообщить пользователю (а пользователем при проверке выступает валидатор), что при таких условиях нет возможности торговать.

 
Кажется только что Валидатор поправили..
 
Artyom Trishkin:

Нет, я давно не пробовал публиковать - не до коммерции. Но общие принципы того, что проверяется валидатором описаны в известной всем статье. И люди, прочитав её, всё делают и публикуются. Я лишь предложил подойти к этому вопросу не как продавец, а как пользователь продукта, у которого не много денег, но он хочет торговать с купленным в маркете советником. И не пробовать обойти ошибку, о которой сообщает валидатор, а понять почему она есть и обработать её. Не исправить, не заставить советник делать невозможное, а сообщить пользователю (а пользователем при проверке выступает валидатор), что при таких условиях нет возможности торговать.

Все что Вы пишете правильно, и все проверяется.

Суть проблемы - Недостаточно средств ? Сообщаем пользователю и выходим. Ничего не делаем. Какие тут могут быть варианты ? Никаких...

Результат - Нет торговых операций...

double lot         = 0.01;
int    m_deviation = 30;
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(!CheckMoneyForTrade(Symbol(), lot, OP_BUY)) // Нет денег ? Выход
      return;
   if(!CheckVolumeValue(lot)) // Не корректный лот выход
      return;
   if(OrderSend(Symbol(), OP_BUY, NormalizeDouble(lot, 2),  NormalizeDouble(Ask, Digits()), m_deviation, 0, 0, "Comment", 0, 0, clrBlue) < 0)
     {
      Print(" OrderSend OP_BUY Error ", ::GetLastError());
      return ;
     }
  }
//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
bool CheckMoneyForTrade(string symb, double lots, int type)
  {
   double free_margin = AccountFreeMarginCheck(symb, type, lots);
   if(free_margin < 0)
     {
      string oper = (type == OP_BUY) ? "Buy" : "Sell";
      Print("Not enough money for ", oper, " ", lots, " ", symb, " Error code=", GetLastError());
      return(false);
     }
   return(true);
  }
//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume)
  {
//--- минимально допустимый объем для торговых операций
   double min_volume = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN);
   if(volume < min_volume)
     {
      Print("Объем меньше минимально допустимого SYMBOL_VOLUME_MIN=%.2f", min_volume);
      return(false);
     }
//--- максимально допустимый объем для торговых операций
   double max_volume = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MAX);
   if(volume > max_volume)
     {
      Print("Объем больше максимально допустимого SYMBOL_VOLUME_MAX=%.2f", max_volume);
      return(false);
     }
//--- получим минимальную градацию объема
   double volume_step = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_STEP);

   int ratio = (int)MathRound(volume / volume_step);
   if(MathAbs(ratio * volume_step - volume) > 0.0000001)
     {
      Print("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
            volume_step, ratio * volume_step);
      return(false);
     }
   return(true);
  }
 
Vladimir Pastushak:

Я Вам уже писал что проверку не проходит. Коды примеров приложил так как Вы любите и текстом файлом.

Валидатор не пропускает код я пытаюсь разобраться второй день. Раньше код проходил проверку.

Я только что взял свой советник из КодоБазы ( New iMA Cross ) - результат проверки: 

Резюме: нет у валидатора проблем, есть проблемы у писателей (в частности у тех, кто сидит на старом терминале).

New iMA Cross
New iMA Cross
  • www.mql5.com
Торговая стратегия на пересечении двух индикаторов iMA (Moving Average, MA) с большим набором дополнительных параметров. Можно оптимизировать по рабочему таймфрейму. Ищется пересечение на текущем баре и на предыдущем баре. Подробнее об определении 'текущий бар' ниже, в пункте 'Особенности'. Советник можно оптимизировать по рабочему таймфрейму...
 
Vladimir Karputov:

Я только что взял свой советник из КодоБазы ( New iMA Cross ) - результат проверки: 

Резюме: нет у валидатора проблем, есть проблемы у писателей (в частности у тех, кто сидит на старом терминале).

Уже несколько раз было написано что проблема для МТ 4, зачем Вы показываете код для мт 5

 
Vladimir Pastushak:

Все что Вы пишете правильно, и все проверяется.

Суть проблемы - Недостаточно средств ? Сообщаем пользователю и выходим. Ничего не делаем. Какие тут могут быть варианты ? Никаких...

Результат - Нет торговых операций...

Куда выходим? Зачем выходим? Советник не должен выгружаться. Он должен остаться работать в ожидании изменения торговых условий.

 
Vladimir Karputov:

Я только что взял свой советник из КодоБазы ( New iMA Cross ) - результат проверки: 

Резюме: нет у валидатора проблем, есть проблемы у писателей (в частности у тех, кто сидит на старом терминале).

Версии для старого терминала поддерживаются потому что многие люди заплатили за них деньги и согласно правилам маркета получают оновления и исправления.

Я не могу людям чухать покупайте для нового терминала, но всем и всегда рекомендую, настоятельно рекомендую переходить на МТ 5...