Главная Quikprofit twiiter Quikprofit Rss

QPile робот Ишимоку. Описываем силу сигнала

Январь 19, 2011 | Нет комментариев

Поработаем над понятием сила сигнала и размером выставляемого ордера.

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

Стратегия Ишимоку подразумевает разные уровни сигнала (от 1 до 3х).

  • Сила сигнала = 1 указывает на слабый сигнал с высоким уровнем риска,
    размер открываемой позиции будет не более 1/3 от максимально возможного
  • Сила сигнала = 2 указывает на нейтральный сигнал со средним уровнем риска,
    размер открываемой позиции будет не более 2/3 от максимально возможного
  • Сила сигнала = 3 указывает на сильный сигнал с низким уровнем риска,
    размер открываемой позиции будет равен максимально возможному

Максимально возможный размер позиции задает пользователь. Важно учесть кратность трем при указании максимального размера позиции.

Шаг 1. Определение силы сигнала. Облако

Сила сигнала напрямую зависит от положения креста относительно облака.

Встает резонный вопрос «какую точку считать крестом?» Как показывает наш опыт, искать точку пересечения не имеет смысла, поэтому будем в качестве точки креста (прорыва Киджуна) использовать последнюю значение Киджун в последней закрытой свечи (№2).

Выше облака = Киджун больше и СенкоуА и СенкоуВ

1
if (KijunLast > SenkouALast) and (KijunLast > SenkouBLast)

В облаке = Киджун между СенкоуА и СенкоуВ

1
if ((KijunLast > SenkouALast) and (KijunLast < SenkouBLast)) or ((KijunLast < SenkouALast) and (KijunLast > SenkouBLast))

Ниже облака = Киджун меньше и СенкоуА и СенкоуВ

1
if (KijunLast < SenkouALast) and (KijunLast < SenkouBLast)

Шаг 2. Определение силы сигнала. Чинкоу

В тех.задании сила сигнала рассчитывается с учетом «опаздывающей» линии Чинкоу. Будет логично начать именно с ней.

Сложно? Скорее «есть нюансы»:

1. Нас интересует, как и с уже описанными переменными, последняя закрытая свеча (№2). Так как Чинкоу есть цена закрытия свечи, перемещенная влево (назад), то можно просто брать значение Close 2й свечи с конца.

2. Местоположение линии Чинкоу относительно цены (выше /ниже). При стандартных настройках Чинкоу «опаздывает» на 26 периодов, соответственно нас будет интересовать Close 28й свечи с конца.

Вопрос «Чинкоу выше или ниже цены?» на языке QPile будет выглядеть так:

1
2
3
4
5
6
7
8
PriceLast_Close = get_value(dataPriceLast, "Close") +0'' - заменит линию Чинкоу
Price28_Close = get_value(fGetBar("SBER03", "EQBR", 28, 60), "Close") +0'' - значение 28 свечи назад
 
if PriceLast_Close > Price28_Close
	chinkousignal = "Чинкоу выше цены"
else
	chinkousignal = "Чинкоу ниже цены"
end if

Для бычьих сигналов будем использовать фильтр:

1
if PriceLast_Close > Price28_Close

для медвежьих:

1
if PriceLast_Close < Price28_Close

Шаг 3. Определение силы сигнала. Переменная SignalPower

Пришло время ввести переменную SignalPower, которая может принимать значения от 1 до 3. Значение будет присваиваться при получении сигнала.
Рассмотрим на примере креста Тенкан/Киджун, прорыв Цена/Киджун делается по аналогии, а прорыв цена/облако не нуждается в диверсификации сигналов.
Добавим коды, полученные в двух вышеописанных пунктах.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'БЛОК ТЕНКАН/КИДЖУН'
fDebugLog ("TenkanLast	" & "KijunLast	" & "TenkanPrev	" & "KijunPrev	")
fDebugLog (TenkanLast & "		" &  KijunLast & "		" & TenkanPrev & "		" &  KijunPrev)
'Бычий Крест Тенкан/Киджун'
if (TenkanLast > KijunLast) and (TenkanPrev <= KijunPrev) and (PriceLast_Close > Price28_Close) 'Чинкоу выше цены добавлена в качестве фильтра'
	message ("Образовался бычий крест тенкан/киджун", 1) 'Выводим сообщение на экран'
	if (KijunLast > SenkouALast) and (KijunLast > SenkouBLast)'Если крест выше облака и Чинкоу выше цены'
		SignalPower = 3
		fDebugLog ("Образовался бычий крест тенкан/киджун. Сила 3")
		sobitie = "Образовался бычий крест тенкан/киджун. Сила 3"
	end if
	if ((KijunLast > SenkouALast) and (KijunLast < SenkouBLast)) or ((KijunLast < SenkouALast) and (KijunLast > SenkouBLast)) 'Крест в облаке и Чинкоу выше цены'
		SignalPower = 2
		fDebugLog ("Образовался бычий крест тенкан/киджун. Сила 2")
		sobitie = "Образовался бычий крест тенкан/киджун. Сила 2"
	end if
	if (KijunLast < SenkouALast) and (KijunLast < SenkouBLast) > SenkouALast) 'Если крест ниже облака'
		SignalPower = 1
		fDebugLog ("Образовался бычий крест тенкан/киджун. Сила 1")
		sobitie = "Образовался бычий крест тенкан/киджун. Сила 1"
	end if
end if
'Медвежий Крест Тенкан/киджун'
if (TenkanLast < KijunLast) and (TenkanPrev >= KijunPrev) (PriceLast_Close < Price28_Close) 'Чинкоу ниже цены добавлена в качестве фильтра' 	message ("Образовался медвежий крест тенкан/киджун", 1) 	if (KijunLast > SenkouALast) and (KijunLast > SenkouBLast)'Если крест выше облака и Чинкоу выше цены'
		SignalPower = 1
		fDebugLog ("Образовался медвежий крест тенкан/киджун. Сила 1")
		sobitie = "Образовался медвежий крест тенкан/киджун. Сила 1"
	end if
	if ((KijunLast > SenkouALast) and (KijunLast < SenkouBLast)) or ((KijunLast < SenkouALast) and (KijunLast > SenkouBLast)) 'Крест в облаке и Чинкоу выше цены'
		SignalPower = 2
		fDebugLog ("Образовался медвежий крест тенкан/киджун. Сила 2")
		sobitie = "Образовался медвежий крест тенкан/киджун. Сила 2"
	end if
	if (KijunLast < SenkouALast) and (KijunLast < SenkouBLast) > SenkouALast) 'Если крест ниже облака'
		SignalPower = 3
		fDebugLog ("Образовался медвежий крест тенкан/киджун. Сила 3")
		sobitie = "Образовался медвежий крест тенкан/киджун. Сила 3"
	end if
end if

На данный момент мы внесли достаточно большое количество изменений в код. Пора перейти к тестированию кода в Quik. Задача тестирования: правильность определения точек входа.

Скачать полный текст кода.

Понравилось? Следите за обновлениями по RSS! Также можете следить за обновлениями в Twitter.
* * * * * 3 проголосовавших

Комментарии

Оставить комментарий





Поля помеченные (*) обязательны к заполнению

Страница 1 из 11
  • Меню

  • Облако тегов

  • Рубрики

  • Для пользователя