Обсуждение статьи "Рецепты MQL5 - Использование индикаторов для формирования условий торговли в эксперте"

 

Опубликована статья Рецепты MQL5 - Использование индикаторов для формирования условий торговли в эксперте:

В этой статье мы продолжим модифицировать эксперта, над которым до этого работали на протяжении всех последних статей по программированию на MQL5. На этот раз подключим к эксперту индикаторы, по значениям которых будут проверяться условия на открытие позиции. Чтобы было интересней, сделаем во внешних параметрах выпадающий список, в котором можно будет выбрать один из трех индикаторов для торговли.

Рецепты MQL5 - Использование индикаторов для формирования условий торговли в эксперте

Автор: Anatoli Kazharski

 

Анатолий, спасибо Вам за статью! Думаю, что MQL5-рецептурный подход очень удачен...

Есть пара вопросов-замечаний. И они скорее направлены в адрес Разработчика.

В статье :

"...Напомню, для режима исполнения Market Execution открыть позицию сразу с установленными уровнями Stop Loss и Take Profit не получится: нужно сначала открыть позицию, а потом уже модифицировать ее, установив эти уровни..."

И буквально сразу:

Начиная с 803 билда, для типов исполнения Market Execution и Exchange Execution при открытии позиции можно устанавливать уровни Stop Loss и Take Profit.

Я так понимаю, что последний абзац отменяет смысл предыдущего... тогда почему в списке изменений "MetaTrader 5 Client Terminal build 803" этой информации не было изначально? И почему её нет в Документации?

 
denkir:
Я так понимаю, что последний абзац отменяет смысл предыдущего... тогда почему в списке изменений "MetaTrader 5 Client Terminal build 803" этой информации не было изначально? И почему её нет в Документации?

По какой-то причине не упомянули в новостях, но решили все же дать сноску в этой статье.

Документацию поправим.

 
Rosh:

По какой-то причине не упомянули в новостях, но решили все же дать сноску в этой статье.

Документацию поправим.

что касается МТ4 ?
 
Rosh:

По какой-то причине не упомянули в новостях, но решили все же дать сноску в этой статье.

Документацию поправим.

Спасибо.

И попутно просьба разобраться с:

1)  методой

bool CTrade::FillingCheck(const string symbol)


2) разрешенностью конкретного режима для инструмента (SYMBOL_FILLING_ALL_OR_NONE, SYMBOL_CANCEL_REMAIND, SYMBOL_RETURN_REMAIND)

Я так понимаю, пункт 2) может настраиваться брокером... может есть смысл это указывать в Документации?

Если моё понимание ошибочно, то вопрос по пункту 2) снимается...


 
denkir:

Я так понимаю, пункт 2) может настраиваться брокером... может есть смысл это указывать в Документации?

указывать в документации что "пункт 2) может настраиваться брокером" ?

 
sergeev:

указывать в документации что "пункт 2) может настраиваться брокером" ?

Угу. Почему так... а потому что заметил, что по однотипным счетам (фикс-спред, исполнение FOK) у разных брокеров функция

SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);

может вернуть разные значения...

 
denkir:

Угу.

неясно только зачем.

ведь по сути фразу  "может настраиваться брокером" нужно писать на каждой странице документации по торговле :)

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

один символ - маркет исполнение, второй - биржевой.

у них разные условия, разные типы заливок и много чего разного

для этого и даны все функции опроса состояния торгового окружения.

 

sergeev:

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

один символ - маркет исполнение, второй - биржевой.

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


sergeev, Вы не не обратили внимание, что я написал ранее:

...а потому что заметил, что по однотипным счетам (фикс-спред, исполнение FOK) у разных брокеров...


Набросал простенький скрипт. В нём получил у разных брокеров по символу EURUSD такую инфу:


Брокер "А":

NQ    0    22:39:37    test_symbol (EURUSD,H1)    Число знаков после запятой: 4
GI    0    22:39:37    test_symbol (EURUSD,H1)    Плавающий спред: 1
KQ    0    22:39:37    test_symbol (EURUSD,H1)    Режим заключения сделок: SYMBOL_TRADE_EXECUTION_INSTANT
OK    0    22:39:37    test_symbol (EURUSD,H1)    Режим заливки оредеров: 1
DS    0    22:39:37    test_symbol (EURUSD,H1)    Путь в дереве символов: Forex\EURUSD


Брокер "B":

ON    0    22:45:00    test_symbol (EURUSD,H1)    Число знаков после запятой: 4
EQ    0    22:45:00    test_symbol (EURUSD,H1)    Плавающий спред: 0
RN    0    22:45:00    test_symbol (EURUSD,H1)    Режим заключения сделок: SYMBOL_TRADE_EXECUTION_INSTANT
LS    0    22:45:00    test_symbol (EURUSD,H1)    Режим заливки оредеров: 3
OK    0    22:45:00    test_symbol (EURUSD,H1)    Путь в дереве символов: Forex-Fix\EURUSD


Можно заметить, что при одном и том же режиме заключения сделок есть разный режим заливки ордеров. Да режимы спредов отличаются (что я упустил, заявляя, что у брокеров однотипные счета)... вопрос, режимы (заключения сделок и заливки оредеров) как-то связаны?

//+------------------------------------------------------------------+
//|                                                  test_symbol.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#define SymInt SymbolInfoInteger 
#define SymS SymbolInfoString 

string _symbol="EURUSD";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 1) SymbolInfoInteger()
   long symb_digits=SymInt(_symbol,SYMBOL_DIGITS);
   PrintFormat("Число знаков после запятой: %u",symb_digits);
   bool symb_spread_float=SymInt(_symbol,SYMBOL_SPREAD_FLOAT);
   PrintFormat("Плавающий спред: %d",symb_spread_float);
   string trade_mode=EnumToString((ENUM_SYMBOL_TRADE_EXECUTION)SymInt(_symbol,SYMBOL_TRADE_EXEMODE));
   PrintFormat("Режим заключения сделок: %s",trade_mode);
   long fil_mode=SymInt(_symbol,SYMBOL_FILLING_MODE);
   PrintFormat("Режим заливки оредеров: %u",fil_mode);
//--- 2) SymbolInfoString()
   string path=SymS(_symbol,SYMBOL_PATH);
   PrintFormat("Путь в дереве символов: %s",path);
  }
//+------------------------------------------------------------------+
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
denkir:

вопрос, режимы (заключения сделок и заливки оредеров) как-то связаны?

нет, конечно.

и с режимом "заключения сделок"  также не связано время экспирации, и способ расчета прибыли.

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