У вас не стоит Flash Player
Настройки
#24873 - Tue Apr 05 2011 12:03 PM Как фиксировать нужную фазу рынка?
Ziderg Offline
stranger

Registered: Wed Mar 09 2011
Записи: 5
Уважаемые!
У меня есть скрипт, который входит в сделку на первой свече, т.е. совершаемые сделки у меня зависят от закачанной истории. При тестировании стратегии это не было столь критично, что каждый раз я попадаю в новую фазу рынка. Сейчас думаю переходить на реал и соответсвенно возникает вопрос, как мне сделать чтобы я поподал только в определеную фазу, т.е. первая сделка была фиксированна. Можно как-то обращатся к истории совершенных сделок или хотябы к последней совершенной сделке через API? Может кто-то сталкивался с подобной проблеймой, кто как ее решал?

Наверх
#24876 - Tue Apr 05 2011 12:14 PM Re: Как фиксировать нужную фазу рынка? [Re: Ziderg]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Ну вот допустим находим профит первой закрытой сделки за день:

Code:
    [HandlerName("Profit From First for Day")]
    [HandlerCategory("777")]
    public class ProfitFromFirst : IOneSourceHandler, IDoubleReturns, IValuesHandler, ISecurityInputs
{
public double Execute(ISecurity source, int barNum)
{
// берем дату текущего бара
var curBarDate = source.Bars[barNum].Date;
// отбираем закрытые сделки с днем закрытия совпадающим с текущим, сортируем по дате закрытия
var list = source.Positions.Where(pos => !pos.IsActive && pos.EntryBarNum < barNum
&& pos.ExitBar.Date.DayOfYear  == curBarDate.DayOfYear
&& pos.ExitBar.Date.Year  == curBarDate.Year)
.OrderBy(pos => pos.ExitBar.Date).ToArray();
// возвращаем профит первой из найденных позиций
if(list.Length < 1)
{
return 0;
}
return list[0].Profit();
}
    }
}
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#24897 - Tue Apr 05 2011 04:25 PM Re: Как фиксировать нужную фазу рынка? [Re: Ziderg]
Ziderg Offline
stranger

Registered: Wed Mar 09 2011
Записи: 5
Спасибо.
Что-то типа этого подойдет, или я не правильно понял?
Code:
//получаем список всех сделок
var listPos = source.Positions.OrderBy(pos => pos.EntryBar.Date).ToArray();
int startBar=1;//бар с которого начнем ведение сделок
//поиск бара с которого началось ведение сделок
if (listPos.Count()>0)//если у нас в истории есть хотябы одна открытая сделка
{
	for (int i=0;i<listPos.Count();i++)//пробегаемся по истории всех сделок
	{
		for (int bar = 1; bar < source.Bars.Count; bar++)//пробегаемся по всей истории
		{			
			var curDate = source.Bars[bar].Date;
			
			if (curDate==listPos[i].EntryBar.Date)
			{
				//мы нашли наш стратовый бар
				startBar=bar;
				//выходим из циклов
				bar=source.Bars.Count;
				i=listPos.Count();
			}
			
		}
	}
}


И еще, как через API можно выводить сообщения в TSLab?


Отредактировано Ziderg (Tue Apr 05 2011 04:30 PM)

Наверх
#24965 - Wed Apr 06 2011 11:52 AM Re: Как фиксировать нужную фазу рынка? [Re: Ziderg]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492

Наверх
#25075 - Thu Apr 07 2011 01:02 PM Re: Как фиксировать нужную фазу рынка? [Re: Nektodron]
Ziderg Offline
stranger

Registered: Wed Mar 09 2011
Записи: 5
Спасибо.

Наверх


Moderator:  ViL, sar