Ошибки, баги, вопросы - страница 2100

 
damirqa:

Здравствуйте! Начал изучать MQL5 с https://www.mql5.com/ru/articles/100. Запустил код, получил ошибку 4756, посмотрел в документации - легче не стало. Ладно, подумал, что начну с простого (Alert/Print...). Одна из важнейших функций это OrderSend. Начал искать по форуму\документации как использовать OrderSend. Наткнулся на эту статью https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions, там увидел код на открытие позиции Buy. Получил ошибку 4756 и retcode 10030. 10030 - понял, что это свойство OrderSend, но не понял как нужно использовать это свойство (смотрел чужой код), а самое главное для чего нужно. Тогда открыл https://www.mql5.com/ru/docs/trading/ordersend, скопировал код, запустил, все отлично, заработало.
Но так и не понял, почему появляется ошибка 4756 и как от нее нужно избавляться, а также 10030. 

Посмотрел код между 

и этим

Они по-моему практически идентичны, не вижу тех мест, в которых появляются эти ошибки (4756 и 10030). Ткните пальцем и объясните пожалуйста


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

Пример отсылки торгового приказа на открытие Buy:

//+------------------------------------------------------------------+
//|                                                     Open Buy.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
//---
#include <Trade\Trade.mqh>
CTrade         m_trade;                      // trading object
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   m_trade.Buy(1.0); // open Buy position, volume 1.0 lot
  }
//+------------------------------------------------------------------+
Файлы:
Open_Buy.mq5  2 kb
 
Vladimir Karputov:

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

Пример отсылки торгового приказа на открытие Buy:


CTrade - является универсальным классом? То есть им возможно заменить другой любой код?

 
damirqa:

CTrade - является универсальным классом? То есть им возможно заменить другой любой код?


CTrade поставляется вместе с терминалом в Стандартная библиотека -> Торговые классы -> CTrade.

 
damirqa:

Они по-моему практически идентичны, не вижу тех мест, в которых появляются эти ошибки (4756 и 10030). Ткните пальцем и объясните пожалуйста

https://www.mql5.com/ru/search#!keyword=Unsupported%20filling%20mode

Поиск - MQL5.community
Поиск - MQL5.community
  • www.mql5.com
Поиск выполняется с учетом морфологии и без учета регистра. Все буквы, независимо от того, как они введены, будут рассматриваться как строчные. По умолчанию наш поиск показывает страницы...
 

Пример из кодобазы


Есть несколько способов получить код в ME

  1. Загрузить его прямо из ME. Наверное, это удобно кому-то. Но мне - совсем нет.
  2. Загрузить файл на диск, скопировать его в MQL5-папку и открыть в ME. Чаще всего использую этот неудобный способ.
  3. Нажать кнопку "просмотр" и через копипасту (копирование - CTRL+A и CTRL+C) скинуть код в ME (CTRL+V). Самый быстрый и удобный способ.
Целесообразно ли сделать кнопку "копировать", как показано на скрине?

 

В тестере МТ5 объект "Поле ввода" OBJ_EDIT не позволяет редактировать значение в нём находящееся. Это так задумано или это баг?

В терминалах и тестере МТ4 редактируется, а вот в тестере МТ5 не хочет, вообще пропадает значение введённое в него программно при создании объекта.

 
damirqa:

Здравствуйте! Начал изучать MQL5 с https://www.mql5.com/ru/articles/100. Запустил код, получил ошибку 4756, посмотрел в документации - легче не стало. Ладно, подумал, что начну с простого (Alert/Print...). Одна из важнейших функций это OrderSend. Начал искать по форуму\документации как использовать OrderSend. Наткнулся на эту статью https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions, там увидел код на открытие позиции Buy. Получил ошибку 4756 и retcode 10030. 10030 - понял, что это свойство OrderSend, но не понял как нужно использовать это свойство (смотрел чужой код), а самое главное для чего нужно. Тогда открыл https://www.mql5.com/ru/docs/trading/ordersend, скопировал код, запустил, все отлично, заработало.
Но так и не понял, почему появляется ошибка 4756 и как от нее нужно избавляться, а также 10030. 

Посмотрел код между 

и этим

Они по-моему практически идентичны, не вижу тех мест, в которых появляются эти ошибки (4756 и 10030). Ткните пальцем и объясните пожалуйста

Не заполнено одно поле структуры. И deviation маловато будет, но это не такая-уж и ошибка.

Instant Execution

Торговый ордер на открытие позиции в режиме Instant Execution (режим торговли по потоковым ценам). Требуется указание 9 полей:

  • action
  • symbol
  • volume
  • price
  • sl
  • tp
  • deviation
  • type
  • type_filling

Можно также задать значения полей magic и comment.

Market Execution

Торговый ордер на открытие позиции в режиме Market Execution (режим исполнения торговых приказов по рынку). Требуется указание 5 полей:

  • action
  • symbol
  • volume
  • type
  • type_filling

Можно также задать значения полей magic и comment.


 

что за обновление прилетело, 1736, что в нем есть, где почитать?

 

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

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

Обратившись к пользовательским индикаторам через 

int  ChartIndicatorGet(
   long           chart_id,              // идентификатор графика
   int            sub_window             // номер подокна
   const string   indicator_shortname    // короткое имя индикатора
   );


Мы так же могли бы запросить массив рисующих буферов 

int  ChartIndicatorGet(
   long           chart_id,              // идентификатор графика
   int            sub_window             // номер подокна
   const string   indicator_shortname    // короткое имя индикатора

   int & IndicatorVisualBuffer[] // номера рисующих буферов...   );


Это расширит возможность по работе с неизвестными индикаторами установленными на графике..

 
Vladimir Pastushak:

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

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

Обратившись к индикатору через 

int  ChartIndicatorGet(
   long           chart_id,              // идентификатор графика
   int            sub_window             // номер подокна
   const string   indicator_shortname    // короткое имя индикатора
   );


Мы так же могли бы запросить масси рисующих буферов 

int  ChartIndicatorGet(
   long           chart_id,              // идентификатор графика
   int            sub_window             // номер подокна
   const string   indicator_shortname    // короткое имя индикатора

   int & IndicatorVisualBuffer[] // номера рисующих буферов...   );


Это расширит возможность по работе с неизвестными индикаторами установленными на графике..

А что возвращает

int  ChartIndicatorGet(
   long           chart_id,              // идентификатор графика
   int            sub_window             // номер подокна
   const string   indicator_shortname    // короткое имя индикатора
   );

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

И если не затруднит, для каких целей появилась такая необходимость? Вопрос без иронии. Ведь если что-то предлагается, то надо, на мой взгляд, привести убедительные доводы в необходимости предложенного.