Общие вопросы по разработке > Тестирование только в определенные даты
Тестирование только в определенные даты
Добрый день. Подскажите пожалуйста, как возможно протестировать алгоритм только в определенные дни. К примеру у меня есть несколько дат, скажем "2018-04-05", "2018-05-01" итд и я хочу протестировать стратегию которая будет торговать только в эти дни. Спасибо!
			
									
						- Simonov
- Сообщения: 89
- Зарегистрирован: 20 сен 2017, 11:36
- Благодарил (а): 83 раза
- Поблагодарили: 20 раз
Re: Тестирование только в определенные даты
Как вариант. Если определённых дат не очень много, то можно вручную их прогнать по очереди, выставляя интервал в параметрах мастера тестирования стратегии.
							- Вложения
- 
			
		
				- Настройки мастера тестирования стратегии.PNG (25.16 КБ) 20988 просмотров
 
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
- Администратор
- Сообщения: 1817
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 375 раз
- Контактная информация:
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 мая - праздничный день. Добавлен для примера, биржа не работала

В самом тестировании стратегии надо задать период или кол-во баров захватывающее все эти даты.
никогда такого не было и вот опять
						Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 23 гостя

