Торговая система, использующая принципы Эллиотта

Хотелось бы рассмотреть алгоритм еще одной механической торговой системы, использующей принципы торговли по теории волн Эллиотта. Предвижу яростную критику со стороны истинных последователей этой теории и заочно соглашаюсь с ней полностью - эта система далека от корректной трактовки учения Эллиотта. И тем не менее, она показывает неплохие результаты при бэк-тестинге, а также в очередной раз свидетельствует о достаточно широких возможностях языка EasyLanguage при проектировании торговых систем.

Итак для работы системы в ProSuite создаются 3 функции:

- ElliottWaveOsc,

- ElliottTrend,

- Wave345Elliott.

На их основе пишется торговая система:

Inputs: Len(80), Trig(.7);

Vars: WavCount(0), Osc(0);

Osc = ElliottWaveOsc;

WavCount = Wave345Elliott(Len, Trig);

IF WavCount = 3 AND WavCount[1] <= 0 Then

Buy Next Bar at Open;

IF WavCount = 5 AND WavCount[1] = 4 Then

Buy Next Bar at Open;

IF WavCount = 3 AND WavCount[1] = 5 Then

Buy Next Bar at Open;

IF Osc < 0 Then

ExitLong Next Bar at Open;

Как видно, система покупает, когда считает, что рынок делает 3 или 5 импульсную волну и продает, когда значение осциллятора Элиотта опускается ниже 0, т.е. .

В системе используется осциллятор Эллиотта (ElliottWaveOsc), который оценивает направление тренда на рынке, по своей сути это простая разность между двумя скользящими средними:

Vars: Osc535(0), Price(0);

Price = (H+L)/2;

IF Average(Price, 35) <> 0 Then

Osc535 = Average(Price, 5) - Average(Price, 35);

ElliottWaveOsc = Osc535;

Эта функция растет, когда цена растет (растет разность между короткой и длинной скользящими средними) и падает при ее снижении.

При вычислении осциллятора Эллиотта строится другая функция (ElliottTrend), которая, изменяясь от 1 к –1, отмечает трендовые фазы рынка:

Inputs: Len(Numeric), Trigger(Numeric);

Vars: Trend(0), Osc(0);

Osc = ElliottWaveOsc;

IF Osc = Highest(Osc, Len) AND Trend = 0 Then

Trend = 1;

IF Osc = Lowest(Osc, Len) AND Trend = 0 Then

Trend = -1;

IF Lowest(Osc, Len) < 0 AND Trend = -1 AND Osc > -1 * Trigger * Lowest(Osc, Len) Then

Trend = 1;

IF Highest(Osc, Len) > 0 AND Trend = 1 AND Osc < -1 * Trigger * Highest(Osc, Len) Then

Trend = -1;

ElliottTrend = Trend;

Еще одна функция (Wave345Elliott), в продолжение предыдущей, выступает в качестве счетчика волн.

Inputs: Len(Numeric), Trig(Numeric);

Vars: ET(0), Price(0), Osc(0), Wave(0), HiOsc(-999), HiOsc2(-999), HiPrice(-999), HiPrice2(-999);

Osc = ElliottWaveOsc;

Price = (High + Low) / 2;

ET = ElliottTrend(Len, Trig);

IF ET = 1 AND ET[1] = -1 AND Osc > 0 Then Begin

HiOsc = Osc;

HiPrice = Price;

Wave = 3;

End;

IF Wave = 3 AND HiOsc < Osc Then

HiOsc = Osc;

IF Wave = 3 AND Osc <= 0 AND ET = 1 Then

Wave = 4;

IF Wave = 4 AND Price = Highest(Price, 5) AND Osc >= 0 Then Begin

Wave = 5;

HiOsc2 = Osc;

HiPrice2 = Price;

End;

IF Wave = 5 AND HiOsc2 < Osc Then

HiOsc2 = Osc;

If Wave = 5 AND HiPrice2 < Price Then

HiPrice2 = Price;

IF HiOsc2 > HiOsc AND Wave = 5 AND ET = 1 Then Begin

Wave = 3;

HiOsc = HiOsc2;

HiPrice = HiPrice2;

HiOsc2 = -999;

HiPrice2 = -999;

End;

IF ET = -1 AND Wave = 5 Then Begin

Wave = -3;

HiOsc = -999;

HiPrice = -999;

HiOsc2 = -999;

HiPrice2 = -999;

End;

Wave345Elliott = Wave;

Оптимизированная на дневном графике РАО ЕЭС России за период с мая 97 г. по октябрь 2000 г., система показала следующий результат:

Annual Rate of Return (Доходность годовых): +126,51%

Return on Initial Capital (Доход на первоначально вложенный капитал): +359.75%,

Total Number of Trades (Количество сделок): 5,

Number of winning trades (Количество выигрышных сделок): 5 (!!!).

При анализе системы размер комиссионных брокера и биржи не учитывались, все сделки осуществлялись фиксированной суммой - $10.000.

Рис.1

Как видно на рисунке, система отлавливала все значительные колебания, происходившие на рынке за это время. Оптимальными для системы оказались значения Len = 10 и Trig=1,6.

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

Hosted by uCoz