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

 
Andrey Dik #:
Выложить новый терминал в Маркет или КБ лючше чем МТ5? - что за бред... 
Вы тормоз в колёсах Metaquotes чтоли? Засланец конкурирущей компании? Последние год-два выступаете против любых прогресивных изменений в МТ5. 

Не считаю, что в MQ что-то не понимают или слабо осознают.

Что касается комиссии, то это настолько низкая по полезности хотелка, что удивительно даже, почему MQ столько сил на нее потратили в Тестере.


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

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


Ну если совсем лень что-то парсить - открываем демо-счет и смотрим комиссии по всем символам. Сохранили в файл и используем в реале. Но даже эта схема идиотская по сравнению с той, что практикуется.


Торгуете EURUSD, например. Неужели в истории нет ни одной закрытой позиции по этому символу? Нет - сделайте хоть мин.лотом. После этого полный расклад по размеру комиcсии на EURUSD. Предсказывайте ее размер для будущих позиций с огромной точностью.


Нет никаких проблем с комиссиями. Однако, есть масса серьезных архитектурных проблем с синхронизацией торгового окружения, которые не просто не решаются иногда, а даже усугубляются. Подобное, действительно, является серьезной проблемой платформы для активных алготрейдеров.


За финтеплюшками - в Маркет. Там на этих финтеплюшках (просто панельки) миллионные продажи делаются. И умение элементарно рассчитать комиссию у этих панелек при расчете якобы риска становится просто конкурентным преимуществом перед другими финтеплюшками, но ленивых авторов.

 
fxsaber #:

Не считаю, что в MQ что-то не понимают или слабо осознают.

Что касается комиссии, то это настолько низкая по полезности хотелка, что удивительно даже, почему MQ столько сил на нее потратили в Тестере.


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

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


Ну если совсем лень что-то парсить - открываем демо-счет и смотрим комиссии по всем символам. Сохранили в файл и используем в реале. Но даже эта схема идиотская по сравнению с той, что практикуется.


Торгуете EURUSD, например. Неужели в истории нет ни одной закрытой позиции по этому символу? Нет - сделайте хоть мин.лотом. После этого полный расклад по размеру комиcсии на EURUSD. Предсказывайте ее размер для будущих позиций с огромной точностью.


Нет никаких проблем с комиссиями. Однако, есть масса серьезных архитектурных проблем с синхронизацией торгового окружения, которые не просто не решаются иногда, а даже усугубляются. Подобное, действительно, является серьезной проблемой платформы для активных алготрейдеров.


За финтеплюшками - в Маркет. Там на этих финтеплюшках (просто панельки) миллионные продажи делаются. И умение элементарно рассчитать комиссию у этих панелек при расчете якобы риска становится просто конкурентным преимуществом перед другими финтеплюшками, но ленивых авторов.

Вы сами себе противоречите, не находите? Если всё так просто реализуется програмистом MQL5 уровня - 0, то почему это до сих пор не сделано в терминале MT5? Можете не отвечать, у Вас аргументации 0.
 
fxsaber #:

Торгуете EURUSD, например. Неужели в истории нет ни одной закрытой позиции по этому символу? Нет - сделайте хоть мин.лотом. После этого полный расклад по размеру комиcсии на EURUSD. Предсказывайте ее размер для будущих позиций с огромной точностью.

Чтобы не быть голословным, вот скрин из записи в блоге. Смотрим столбец Commission. В скобках размер комиссии в пипсах, он почти никуда не гуляет (3.37 - 3.41) даже в таком тяжелом и редком контексте. Тупо взята из истории торговли.
Частичное исполнение.
Частичное исполнение.
  • www.mql5.com
На рынке случаются различные эпизоды с исполнением торговых ордеров. Наверное, важно уметь быстро разобраться в той или иной торговой ситуации. MT5 сохраняет довольно много информации в истории
 
fxsaber #:
Чтобы не быть голословным, вот скрин из записи в блоге. Смотрим столбец Commission. В скобках размер комиссии в пипсах, он почти никуда не гуляет (3.37 - 3.41) даже в таком тяжелом и редком контексте. Тупо взята из истории торговли.
и что это подтверждает/опровергает?...
речь о том, что в реалтайм трейдеру неудобно мониторить PL, поскольку он без учета комиссии. 
да бросьте уже, я ж говорю, у Вас аргументация нормальная отсутствует, чего даже стоит Ваше выражение "сделайте минимальным лотом трейд, что бы узнать комиссии" не выдерживает никакой критики, потому что тогда комиссия будет настолько не точной, что это теряет практический смысл, мало того что смысла нет практического, так ещё и не решает проблему мониторинга PL. 
 
Andrey Dik #:
речь о том, что в реалтайм трейдеру неудобно мониторить PL, поскольку он без учета комиссии. 

Открыл демо-счет и на нем единственную позицию для чистоты эксперимента. Написал очень сложный скрипт.

// Вычисляет комиссию, которая будет начислена при закрытии текущей позиции.
#property script_show_inputs

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

input ulong inPositionTicket = 0;

void OnStart()
{
  if (OrderSelect(inPositionTicket, SELECT_BY_TICKET))
  {
    OrderPrint();

    const string Str = OrderCloseTime() ? "Position " + (string)inPositionTicket + " is closed. Full Commission = "
                                        : "The commission for closing position " + (string)inPositionTicket +  " will be ";
    
    Alert(Str + DoubleToString(OrderCommission(), 2));
  }
}


Запускаем.


Скрипт сообщил, что доп. комиссия при закрытии будет равна -5.42.


Надо бы проверить. Закрываем позицию и смотрим сделки.

Удивительное совпадение!


Запускаем снова скрипт.

Снова совпадение!


ЗЫ Правильнее делать, конечно, так. Но для демонстрации сойдет. В большинстве случаев будет работать даже это.

 
fxsaber #:

b3391
b3406
Можешь проверить у себя?
А то все отмолчались.
С CopyTicks() такое же происходит.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Roman, 2022.08.26 18:27

b3391

Запускаю этот код в тестере, на кастомном символе.
Почему в тестере CopyTicksRange() копирует по одному нарастающему объекту?
А в терминале возвращает все доступные. 

//+------------------------------------------------------------------+
//|                                                    TestTicks.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

MqlTick tick[];

int T = 0;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{

   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   T = CopyTicksRange("LJ", tick, COPY_TICKS_TRADE, 0, 0);
   Print("Скопировано тиков:  ", T);

}
//+------------------------------------------------------------------+
2022.08.26 19:17:58.672 LJ,M1: testing of Experts\TestTicks.ex5 from 2022.08.22 00:00 to 2022.08.23 00:00 started
2022.08.26 19:17:58.714 LJ : real ticks begin from 2022.08.22 00:00:00
2022.08.26 19:17:58.715 2022.08.22 00:00:44   Скопировано тиков:  1
2022.08.26 19:18:01.114 2022.08.22 00:01:15   Скопировано тиков:  2
2022.08.26 19:18:03.515 2022.08.22 00:01:44   Скопировано тиков:  3
2022.08.26 19:18:05.916 2022.08.22 00:02:12   Скопировано тиков:  4
2022.08.26 19:18:08.316 2022.08.22 00:02:32   Скопировано тиков:  5
2022.08.26 19:18:10.716 2022.08.22 00:02:52   Скопировано тиков:  6
2022.08.26 19:18:13.117 2022.08.22 00:04:05   Скопировано тиков:  7
2022.08.26 19:18:15.517 2022.08.22 00:04:21   Скопировано тиков:  8

 
Roman #:

b3391
b3406
Можешь проверить у себя?
А то все отмолчались.
С CopyTicks() такое же происходит.

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

 
fxsaber #:

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

Не совсем понимаю, что значит проброшены. 
CopyTicks и CopyTicksRange разве не должны так же работать как в терминале?
То есть возвращать количество запрошенных тиков.
А не по одному прибавлять на каждом событии OnTick(). 
В визуальном режиме, ставлю медленный прогон, и всё равно так же.

UPD
С пробросом вроде дошло.
Но как тогда узнать количество всех доступных тиков для цикла?
Чтоб их пробросить.
Как же будут МО тестировать, с таким то костылём...

int OnInit()
{
   for(int i=0; i<?; i++)
      T = CopyTicksRange(_Symbol, tick, COPY_TICKS_TRADE, 0, 0);
      
   return(INIT_SUCCEEDED);
}


Renat Fatkhullin #:

Ренат, было бы разумно иметь штатную функцию,
которая возвращала бы количество всех доступных тиков по указанному символу.
Что-то наподобие TicksSize(_Symbol);
Полезно не только для этого случая,
но и чтоб лишний раз не дёргать COPY рейндж, когда необходимо знать только размер.

 

Объясняли раньше про комиссию открытых позиций - ее в общем случае нельзя точно рассчитать. Ссылки на частные случаи не подходят.

За любую ошибку нас будут(вы же в первую очередь) обвинять до конца жизни. Учтите, что любой брокер получит не только обвинения во введение в заблуждение, но и [до]судебные иски/предложения от юристов.

Поэтому правильно показывать комиссию по конкретным сделкам, а не на суперпозиции множества операций. Тем более, есть комиссии сложные многоуровневые и накопительные по проторгованному объему. Когда брокер их активирует, все аналитические методы по истории сделок начнут показывать ошибку.

 
Renat Fatkhullin #:

Объясняли раньше про комиссию открытых позиций - ее в общем случае нельзя точно рассчитать. Ссылки на частные случаи не подходят.

За любую ошибку нас будут(вы же в первую очередь) обвинять до конца жизни. Учтите, что любой брокер получит не только обвинения во введение в заблуждение, но и [до]судебные иски/предложения от юристов.

Поэтому правильно показывать комиссию по конкретным сделкам, а не на суперпозиции множества операций. Тем более, есть комиссии сложные многоуровневые и накопительные по проторгованному объему. Когда брокер их активирует, все аналитические методы по истории сделок начнут показывать ошибку.

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