Ошибка при отправке ордера. (failed prices for 0.00 [Invalid request])

 

Всем привет.

С mql5 знаком только пару дней +-

поэтому опыта в этом плане нет вообще никакого.
(Занимаюсь в области веб разработки, верстка сайтов.)


Есть такой код:
//+------------------------------------------------------------------+
//|                                                  My_Practics.mq5 |
//|                                                     Mike_Kharkov |
//|                                https://www.fl.ru/users/Yamaradg/ |
//+------------------------------------------------------------------+
#property copyright "Mike_Kharkov"
#property link      "https://www.fl.ru/users/Yamaradg/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
  

//---
   
//---
   return(INIT_SUCCEEDED);
  };
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  };
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
    double point =_Point;
    double sl = 11*point;
    double tp = 12*point;
    double stoplimit = 13*point;
    //Print(" Уровень Stop Loss ордера: " , sl, " Уровень Take Profit ордера: ", tp, " Уровень StopLimit ордера: ", stoplimit);
  
  
  
   MqlTick last_tick={0};
   SymbolInfoTick(Symbol(),last_tick);
   //Print(" Ask = ", last_tick.ask);
  
  
  
  int math = MathRand();
  const int const_devitation_1 = 1;
  
  MqlTradeRequest request={0};
  MqlTradeResult result={0};
  
  bool send1 = OrderSend(request,result);
  
  request.action = TRADE_ACTION_DEAL;        // Тип выполняемого действия
  request.magic = math;                      // Штамп эксперта (идентификатор magic number)
  request.order = math;                      // Тикет ордера
  request.symbol = _Symbol;                  // Имя торгового инструмента
  request.volume = 0.01;                     // Запрашиваемый объем сделки в лотах
  request.price = 0;                         // Цена
  request.stoplimit = stoplimit;             // Уровень StopLimit ордера 
  request.sl = sl;                           // Уровень Stop Loss ордера
  request.tp = tp;                           // Уровень Take Profit ордера
  request.deviation = 0;                     // Максимально приемлемое отклонение от запрашиваемой цены
  request.type = ORDER_TYPE_BUY;             // Тип ордера
  request.type_filling = ORDER_FILLING_IOC;  // Тип ордера по исполнению  
  request.type_time = ORDER_TIME_GTC;        // Тип ордера по времени действия
  request.expiration = 0;                    // Срок истечения ордера (для ордеров типа ORDER_TIME_SPECIFIED)
  request.comment = "Ордер на покупку";      // Комментарий к ордеру 
//---
   
  };
//+------------------------------------------------------------------+

Не подскажите - как исправить ошибку при тестировании всего этого дела на истории?
(что только уже не пробовал.)
скрин с ошибками.

P.S. Просьба не судить строго за код - потому, как пока только читаю доку и экспериментирую с написанием элементарных вещей..
Фрилансер Mike Кharkov [Yamaradg] - верстальщик удаленно, фриланс, FL.ru
Фрилансер Mike Кharkov [Yamaradg] - верстальщик удаленно, фриланс, FL.ru
  • www.fl.ru
На сайте: Кроссбраузерно-попиксельная вёрсткаТолько последние версии браузеров: Мozilla, Google Chrome, Opera, Safari. IE-7++HTML+ CSSБлочная(div)Валидноcть, семантика, логичный и продуманный ручной кодВладение базовыми навыками SEO оптимизацииАккуратное...
 
Mike_Kharkov:

Всем привет.

С mql5 знаком только пару дней +-

поэтому опыта в этом плане нет вообще никакого.
(Занимаюсь в области веб разработки, верстка сайтов.)


Есть такой код:

Попробуйте строчку

 bool send1 = OrderSend(request,result);

 перенести в конец кода, после заполнения структуры request.

 
Mike_Kharkov:

Всем привет.

С mql5 знаком только пару дней +-

поэтому опыта в этом плане нет вообще никакого.
(Занимаюсь в области веб разработки, верстка сайтов.)


Есть такой код:
Про открытие ордеров/позиций почитайте статью Торговые операции на MQL5 - это просто.
 
vicmos:

Попробуйте строчку

 перенести в конец кода, после заполнения структуры request.

   Прописал так как вы сказали и ошибка перестала отображаться.
   Но журнал во время тестирования выглядит вот так:
   Скрин Журнала
  
   Насколько я понимаю в результате этого кода должны быть какие то покупки.? )
   (Но их не видно в журнале. На скрине весь журнал развернут. За 2 месяца тестов на истории.)
 
Mike_Kharkov:
   Прописал так как вы сказали и ошибка перестала отображаться.
   Но журнал во время тестирования выглядит вот так:
  
  
   Насколько я понимаю в результате этого кода должны быть какие то покупки.? )
   (Но их не видно в журнале. На скрине весь журнал развернут. За 2 месяца тестов на истории.)
Нужно правильно заполнить Структуру торгового запроса (MqlTradeRequest), изучить работающие примеры, и пробовать, пробовать....
 
vicmos:
Нужно правильно заполнить Структуру торгового запроса (MqlTradeRequest), изучить работающие примеры, и пробовать, пробовать....
   А вы не могли бы привести пример(по самому минимуму) того, как правильно выглядит элементарный запрос(без ошибок)?
   Всё что не нахожу - там куча проверок лишних(для моего уровня на данный момент) и это все дело мешает уловить суть..
   Хочется просто увидеть хоть что то - но что бы оно работало + код от моего отличался бы по минимуму..
   (что бы была возможность понять, чего конкретно не хватало в моем варианте. А не просто брать совсем другой вариант, не понимая что там к чему, по большому счету.)

   P.S. На пример читаю щас ссылку:
   https://www.mql5.com/ru/articles/481
   И там в одном примере есть вот такая строка:
  
int    digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // количество знаков после запятой

Где можно допустим узнать что означает: (int) именно в таких скобоках с точки зрения синтаксиса?
Это инициализация функции или что это?
(в доках этого нет просто напросто(по крайней мере в поиске) + часто вообще нет примеров там где они необходимы(новичку)..)
 
Читай  документацию https://www.mql5.com/ru/docs/basis/types/casting
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
советую эту статью я сам по ней и по справочнику учился...
 
nowi:
советую эту статью я сам по ней и по справочнику учился...
   Спасибо!
Причина обращения: