Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Появилась идея? Обсуди ее на форуме трейдеров!
Forex Trader
114375
Forex Trader 2007.01.08 13:11 
Моя программа анализирует совершенные сделки.
Как уменьшить временной период видимости в ТЕСТЕРЕ для MODE_HISTORY?
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)

Если сделок много скорость ТЕСТИРОВАНИЯ значительно падает.

Как задать интервал MODE_HISTORY для ТЕСТЕРА?
Forex Trader
114375
Forex Trader 2007.01.08 13:34  
Никак.
Forex Trader
114375
Forex Trader 2007.01.08 13:57  
Можно подойти по другому.
Если ордера идут всегда в одинаковом порядке, наверно можно i начинать не с 0, а с другого числа.
Например - количество ордеров -100
Forex Trader
114375
Forex Trader 2007.01.08 16:19  
Никак.


Понятно.

Разработчики:
За это вам оценка 2.

Исправляйтесь!
Forex Trader
114375
Forex Trader 2007.01.08 16:20  
Можно подойти по другому.
Если ордера идут всегда в одинаковом порядке, наверно можно i начинать не с 0, а с другого числа.
Например - количество ордеров -100



Такое не подходит, к сожалению.
Forex Trader
114375
Forex Trader 2007.01.08 16:35  
Никак.


Понятно.

Разработчики:
За это вам оценка 2.

Исправляйтесь!


Попробуйте улучшить алгоритм советника конкретно для бектеста.
Forex Trader
114375
Forex Trader 2007.01.08 16:40  
Никак.


Понятно.

Разработчики:
За это вам оценка 2.

Исправляйтесь!


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


Буду думать конечно,

Но Вы все же добавте в эту функцию доп. параметр "дата" -
календарная или набор срандартных интервалов как на реале.
Forex Trader
114375
Forex Trader 2007.01.08 16:42  
Это уже обсуждалось, вердикт - меняться не будет.
Forex Trader
114375
Forex Trader 2007.01.08 16:49  
Это уже обсуждалось, вердикт - меняться не будет.


А проблема в следующем:
Как узнать были ли ЗАКРЫТИЯ позиций за последние n-баров?
Как посчитать для этого общее кол-во закрытых ордеров по КОНКРЕТНОМУ инструменту?
Forex Trader
114375
Forex Trader 2007.01.08 17:01  
Примерно так:
LimitTime=Time[0]-(n+1)*Period()*60;
if (OrdersHistoryTotal()>=0) cnt=OrdersHistoryTotal()-1;
while (cnt>=0)
{
if (OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderCloseTime()<LimitTime) break;
else
{
ClosedOrders++;
cnt--;
}
}
} 


Forex Trader
114375
Forex Trader 2007.01.08 17:18  
Примерно так:
LimitTime=Time[0]-(n+1)*Period()*60;
if (OrdersHistoryTotal()>=0) cnt=OrdersHistoryTotal()-1;
while (cnt>=0)
{
if (OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY())
{
if (OrderCloseTime()<LimitTime) break;
else
{
ClosedOrders++;
cnt--;
}
}
} 




Да это понятно.

Но как обойти тупой перебор всех ордеров(OrdersHistoryTotal())?

Возможно ли посчитать OrdersHistoryTotal() для конкретного Symbol()?

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