Общие вопросы по разработке > Тестирование только в определенные даты
Тестирование только в определенные даты
Добрый день. Подскажите пожалуйста, как возможно протестировать алгоритм только в определенные дни. К примеру у меня есть несколько дат, скажем "2018-04-05", "2018-05-01" итд и я хочу протестировать стратегию которая будет торговать только в эти дни. Спасибо!
- Simonov
- Сообщения: 89
- Зарегистрирован: 20 сен 2017, 11:36
- Благодарил (а): 83 раза
- Поблагодарили: 20 раз
Re: Тестирование только в определенные даты
Как вариант. Если определённых дат не очень много, то можно вручную их прогнать по очереди, выставляя интервал в параметрах мастера тестирования стратегии.
- Вложения
-
- Настройки мастера тестирования стратегии.PNG (25.16 КБ) 16366 просмотров
Re: Тестирование только в определенные даты
Simonov писал(а):Как вариант. Если определённых дат не очень много, то можно вручную их прогнать по очереди, выставляя интервал в параметрах мастера тестирования стратегии.
Спасибо, но мне не подходит. Проблема этого подхода в том что можно тестировать только промежуток, но не каждый день из этого промежутка нужно торговать в стретеги. Как-то через код наверно делается типа
Код: Выделить всё
if CurrentDay in ["2018-02-01", "2018-02-05"]
Но вот как конкретно сделать, не знаю.
Re: Тестирование только в определенные даты
Код: Выделить всё
Index++;
DateTime date1 = new DateTime(2018, 5, 11, 0, 0, 0);
if ( Index%2 == 0 && BarDate() == date1 )
{
EnterLong();
}
else
{
CloseLong();
}
Re: Тестирование только в определенные даты
oxi писал(а):Код: Выделить всё
Index++;
DateTime date1 = new DateTime(2018, 5, 11, 0, 0, 0);
if ( Index%2 == 0 && BarDate() == date1 )
{
EnterLong();
}
else
{
CloseLong();
}
В вашем примере, насколько я понял, конкретно для одной даты, а если их скажем 20 ? Что-то подобное можно сделать ? К примеру задать массив дат, и проверять вхождение текущей даты в этот массив, такое возможно ?
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 366 раз
- Контактная информация:
Re: Тестирование только в определенные даты
Если массивом, то например так:
9 мая - праздничный день. Добавлен для примера, биржа не работала
В самом тестировании стратегии надо задать период или кол-во баров захватывающее все эти даты.
Код: Выделить всё
/**
DatesTest
**/
function Initialize()
{
StrategyName = "DatesTest";
AddParameter("P1", 0, "", 1);
AddInput("Input1", Inputs.Candle, 1, true, "");
LongLimit = 1;
ShortLimit = -1;
}
function OnUpdate()
{
// объявляем массив из 4 элементов DateTime
var Dates = new DateTime[4];
// заполняем каждый элемент по индексу в массиве
Dates[0] = new DateTime(2018, 5, 7);
Dates[1] = new DateTime(2018, 5, 9);
Dates[2] = new DateTime(2018, 5, 11);
Dates[3] = new DateTime(2018, 5, 14);
// дата бара в массиве? Если нет, завершаем работу функции через return.
if (!Array.Exists(Dates, e => e == BarDate())) return;
// в 10:XX открываем позицию long, если не открыта позиция
if (CurrentPosition() == 0 && BarTime().Hours == 10) EnterLong();
// в 15:XX закрываем позицию long, если открыта позиция
if (CurrentPosition() != 0 && BarTime().Hours == 15) CloseLong();
}
9 мая - праздничный день. Добавлен для примера, биржа не работала
В самом тестировании стратегии надо задать период или кол-во баров захватывающее все эти даты.
никогда такого не было и вот опять
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей