Обсуждение статьи "Какие проверки должен пройти торговый робот перед публикацией в Маркете" - страница 17

 
Мой робот не проходит валидацию из-за ошибки " недостаточно денег", я пробовал использовать минимально допустимый лот, но все равно не проходит, помогите кто-нибудь!
Файлы:
 
недостаточно денег", я пробовал использовать минимально допустимый лот, но все равно не проходит, помогите кто-нибудь!

Вы неправильно рассчитываете маржинальные требования. Используйте OrderCalcMargin, чтобы правильно скорректировать объем ордера или даже не выставлять ордер вообще, если маржинальное требование превышает допустимый минимальный объем.

Это обсуждается во втором пункте статьи ... Недостаточно средств для совершения торговой операции

 

Привет,

Может ли кто-нибудь помочь исправить ошибку валидации? Советник может работать на реальном торговом счете с открытыми и закрытыми сделками, но не может пройти эту проверку. Пожалуйста, подскажите, какие коды нужно добавить, спасибо.


 

Привет всем, есть идеи, почему я получаю следующее, "нет торговых операций" и "тестер занимает слишком много времени"? Я уже ослабил настройки, так что сделки запускаются. Также я не сталкиваюсь с проблемами при использовании тестера стратегий, GetLastError() всегда возвращает мне "0". Проверяются ли исторические цены, как в тестере, или случайно сгенерированные цены?



 
Alexey Viktorov #:

Ищите и найдёте. Последняя подсказка: проверка ордера.

Имеется в виду функция OrderCheck()? В документации написано, что она проверяет достаточность средств для совершения операции. Тоже хотелось бы функцию проверки закрытия рынка, в т.ч. для MT4

 
Ivan Titov #:

Имеется в виду функция OrderCheck()? В документации написано, что она проверяет достаточность средств для совершения операции. Тоже хотелось бы функцию проверки закрытия рынка, в т.ч. для MT4

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

ENUM_ORDER_TYPE order_type;
double tp = 0.0,
       price = 0.0;
MqlTick mqlTick;
MqlTradeRequest           my_request;               //  request data
MqlTradeResult            my_result;                //  result data
MqlTradeCheckResult       my_check_result;          //  result check data
long chart_id = ChartID();
/********************Script program start function*******************/
void OnStart()
 {
  ZeroMemory(my_request);
  ZeroMemory(my_check_result);
//--- setting my_request
  int k = order_type%2 == ORDER_TYPE_BUY ? 1 : -1;
  double pr = price != 0.0 ? price : order_type == ORDER_TYPE_BUY ? mqlTick.ask : mqlTick.bid;
  ENUM_TRADE_REQUEST_ACTIONS action = order_type == ORDER_TYPE_BUY || order_type == ORDER_TYPE_SELL ? TRADE_ACTION_DEAL : TRADE_ACTION_PENDING;
  my_request.action     = action;
  my_request.symbol     = _Symbol;
  my_request.volume     = 0.1;
  my_request.type       = order_type;
  my_request.price      = pr;
  my_request.sl         = 0.0;
  my_request.tp         = tp > 0.0 ? pr+tp*k : 0.0;
//my_request.magic      = Magic;
  my_request.deviation  = 10;
  bool check = OrderCheck(my_request, my_check_result);
  if(!check)
    Print(my_check_result.retcode);
  DebugBreak();
 }/******************************************************************/

10027

TRADE_RETCODE_CLIENT_DISABLES_AT

Автотрейдинг запрещен клиентским терминалом


Также неправильная цена в запросе,


неправильные стопы и многое другое, а что касается ошибки 10018, да я поспешил с ответом и не проверил. А оказалось, всё что угодно только не 10018…

 
Здравствуйте, как пройти проверку, если советник только для одной симбы..., но она не проверяется и поэтому при автоматической проверке не совершается ни одной сделки?
 
@Darius Elias Rey #: Здравствуйте, как пройти проверку, если советник предназначен только для одного символа... но он не проверяется, и поэтому при автоматической проверке не совершается ни одной сделки?

Согласно правилам продукта Market, вы не имеете права ограничивать или ограничивать советник только одним символом. Ваш советник должен работать на всех символах, даже если он предназначен для одного символа.

 

Здравствуйте,

Я отправлял новую версию 1.28 моего советника, и он не прошел валидацию с ошибкой "недостаточно денег", сначала мне показалось это странным, потому что я реализовал функцию CheckMoneyForTrade с версии 1.0, и раньше я даже не получал эту ошибку. Я также провел тест перед отправкой советника, и он показал, что советник не принимает сделку, если нет свободной маржи для ее покрытия. Есть идеи?

Ошибка, которую я получаю:

Лог моего тестирования за тот же период, что и выше, ордера не выставляются при отсутствии денег/маржи.

\

Кто-нибудь еще в этом случае? Заранее спасибо.

С наилучшими пожеланиями

 
Haidar, Lionel Haj Ali #: Я отправлял новую версию 1.28 моего советника, и он не прошел проверку с ошибкой "недостаточно денег". Сначала мне показалось это странным, потому что я реализовал функцию CheckMoneyForTrade с версии 1.0, и раньше я даже не получал этой ошибки. Я также провел тест перед отправкой советника, и он показал, что советник не принимает сделку, если нет свободной маржи для ее покрытия. Есть идеи?

Ошибка, которую я получаю: Лог моего тестирования за тот же период, что и выше, ордера не выставляются при отсутствии денег/маржи \ Кто-нибудь еще в этом случае?

На первом изображении хорошо видно, что перед сделкой доступная свободная маржа составляла -10.36. Если ваш код не смог правильно определить это, значит проблема в вашем коде.