Автор Тема: Свежая система на основе RSI  (Прочитано 10770 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ПиарщикАвтор темы

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 488
  • +109/-4
    • Просмотр профиля
Данная стратегия была опубликована в последнем номере Stocks & Commodities magazine. Автор стратегии Jamie Saettele. В статье приводится описание тестирования стратегии на Tradestation за период 3.5 года. За указанный промежуток времени депозит в 1.000 долларов вырос до 71.300 долларов. Больших просадок по стратегии не зарегистрировано.

Как и для большинства статей в Stocks & Commodities magazine для этой характерен весьма темный и противоречивый стиль. Здесь делается попытка суммировать правила стратегии.


Используется 4-часовой график EUR/USD


Открытие длинной позиции.

Сетап на покупку: индикатор RSI (21) пересекает вверх линию 50. Открытие позиции по закрытию свечи, на которой произошло пересечение.

Бай-стоп устанавливается на максимуме свечи, на которой произошло пересечение RSI линии 50 + 15 % дневного ATR (21). 15 % дневного ATR для пары EUR/USD составляет примерно 15 пипсов.

Стоп-лоссом будет цена входа – 30 % дневного ATR (21). Для указанной пары это составляет примерно 30 пипсов. Кроме того, длинная позиция может быть закрыта по сигналу на открытие короткой позиции.

Второй лот добавляется, когда RSI пересекает вверх линию 60. Стоп-лоссом для второго лота является пересечение вниз уровня 50.

Половина позиции закрывается, когда индикатор пересекает вверх уровень 70, после чего падает вниз ниже этого уровня.

Сигналом для закрытия оставшейся части позиции будет сигнал на открытие короткой позиции или снижение RSI ниже уровня 40.


Короткие позиции.

Сетапом на продажу является пересечение индикатором RSI уровня 50 вниз.

Селл-стоп размещается на минимуме свечи, на которой произошло пересечение – 15 % дневного ATR(21).

Стоп-лоссом будет цена входа +30 % дневного ATR(21) или сигнал на открытие длинной позиции.

Второй лот добавляется после того как индикатор пересекает вниз уровень 40. Стоп-лоссом для второго лота будет пересечение индикатором вверх уровня 50.

Половина позиции закрывается, когда RSI пересекает вниз уровень 30, а затем пересекает его вверх.

Стоп-лоссом для оставшейся части позиции будет сигнал на открытие длинной позиции или пересечение индикатором уровня 60.



Коммент к рисунку: пара EUR/USD. Применение стратегии на дневном графике принесло 554 пипсов прибыли на первом лоте и 736 пипсов прибыли на втором лоте.

1)   RSI пересекает вверх 50, вход на максимуме бара + 20 % ATR
2)   RSI пересекает вверх 60, добавляем второй лот.
3)   RSI пересекает вниз 70, фиксируем прибыль по одному лоту.
4)   RSI пересекает вниз 50, фиксируем прибыль по второму лоту.



Переведеноотсюда
Сама статья Saettele за деньги
Возгласы типа «Система галимая!» или «Где ты такие системы отстойные берешь!» - не отзывы, а бытовое хамство. Хамам – бан пожизненно!

Оффлайн Oldman

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 230
  • +538/-11
    • Просмотр профиля
Re: Свежая система на основе RSI
« Ответ #1 : 11.08.2006 12:56 »
Система подкупает своей простотой.
Судя по картинке, приведенной постом выше, система оптимизировалась в конце 2004 года.
С тех пор прошло еще полтора.
Быстренько написал код для Омеги и посмотрел, что получается.
Если сделать стратегию прямо по описанию, то, прямо скажем, ничего хорошего не получается.
Однако после того, как я удалил перевороты толк получился.

Что нужно сказать....
Низковат профит-фактор = 1.4
Небольшое количество сделок. За пять лет всего 268.
Низковат % прибыльных = 32%
Великоват drawdown = 30% от чистой прибыли.
Зато впечатляет отношение среднего размера  (+) сделок к (-) = 3
Неплох и средний размер сделки с учетом минусовых = тройное перекрытие спреда.

Полный отчет из Омеги прилагается.

Здесь привожу и текст программы для Signal. Может кто захочет поиспытывать.
У меня, кстати оптимальным оказался RSI = 33.

Да, насчет ATR. Я взял 4-х часовой, который от дневного отличается в 2.5 раза.
А для стоп-лосса первого входа тупо поставил 34 пункта, которые, как показала оптимизация, являются самыми подходящими.

Текст программы может быть полезен и тем, кто еще не знает как делать персональный выход для конкретного входа.

Текст.

++++++++++++++++++++++++++++++

Inputs: RSILength(21), Level_1(60),Level_2(70), PercTrueRange(0.15);
Vars: StopLossBuy(0), StopLossSell(0);

If Marketposition <= 0 Then StopLossBuy = 0;
If Marketposition >= 0 Then StopLossSell = 0;

{+++++++++++++++++ Buy Zone +++++++++++++++++++++}

If Currentbar > 1 AND RSI(Close, RSILength) Cross Above 50 and Marketposition = 0
   Then
begin   
Buy("b1")  high + AvgTrueRange(RSILength)*PercTrueRange*2.5 { 0.0015}  Limit;

StopLossBuy = high - {AvgTrueRange(RSILength)*PercTrueRange*2*2.5} 0.0034 ;
end;


If Marketposition = 1 and CurrentContracts = 1 and close Crosses below StopLossBuy
   Then ExitLong("sl_1") from Entry ("b1");

If Marketposition = 1 and CurrentContracts = 1 and RSI(Close, RSILength) Cross Above Level_1
   Then Buy("b2") this bar on the close;

If Marketposition = 1 and CurrentContracts = 2 and RSI(Close, RSILength) Cross below 50
   Then ExitLong("sl_2") from Entry ("b2");

If Marketposition = 1 and CurrentContracts = 2 and RSI(Close, RSILength) Cross below Level_2
   Then ExitLong("sl_3") from Entry ("b2");

If Marketposition = 1  and RSI(Close, RSILength) Cross below 100 - Level_1
   Then ExitLong("sl_4") this bar on the close;

{+++++++++++++++++ Sell Zone +++++++++++++++++++++}

If Currentbar > 1 AND RSI(Close, RSILength) Cross below 50 and Marketposition = 0
   Then
begin   
Sell("s1")  low - AvgTrueRange(RSILength)*0.15*2.5{ 0.0015}  Limit;

StopLossSell = low + {AvgTrueRange(RSILength)*PercTrueRange*2*2.5} 0.0034;
end;



If Marketposition = -1 and CurrentContracts = 1 and close Crosses above StopLossSell
   Then ExitShort("ss_1") from Entry ("s1");

If Marketposition = -1 and CurrentContracts = 1 and RSI(Close, RSILength) Cross below 100 - Level_1
   Then Sell("s2") this bar on the close;

If Marketposition = -1 and CurrentContracts = 2 and RSI(Close, RSILength) Cross above 50
   Then ExitShort("ss_2") from Entry ("s2");

If Marketposition = -1 and CurrentContracts = 2 and RSI(Close, RSILength) Cross above 100 - Level_2
   Then ExitShort("ss_3") from Entry ("s2");

If Marketposition = -1  and RSI(Close, RSILength) Cross above Level_1
   Then ExitShort("ss_4") this bar on the close;

   
++++++++++++++++++++++++++++++

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

 
Успехов и Удачи!

Оффлайн nfvthkfy

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 9
  • +0/-0
    • Просмотр профиля
Re: Свежая система на основе RSI
« Ответ #2 : 18.09.2006 16:31 »
А для Румуса ты можешь написать?
Достигнутая цель должна быть позади

Оффлайн Oldman

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 230
  • +538/-11
    • Просмотр профиля
Re: Свежая система на основе RSI
« Ответ #3 : 18.09.2006 17:08 »
А для Румуса ты можешь написать?

Увы....С языком Румуса не знаком....
Успехов и Удачи!

Оффлайн Oldman

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 230
  • +538/-11
    • Просмотр профиля
Рубите "бабки" господа....
« Ответ #4 : 22.09.2006 15:20 »
Как я и думал на основе этой стратегии все же удалось создать что-то стоящее.Применимо только к евре!!!
Стратегия для Омеги, часовки.  Причем флажок на чартах в окошке "Use Natural hours bars" должен быть снят.

Код со всеми начальными установками приведен ниже.
В коде есть некие отладочные заморочки, но не обращайте на них внимания!
Вставляейте код в Омегу и торгуйте на демо :-D хоть до "опупения" :-D
За реал никакой ответственности не несу :mrgreen:

+++++++++++++++++++++++++++++++++++++++++++++++++
Inputs: RSILength(15), Level_1(59),Level_2(68), PercTrueRange(0.045),par1(0.057),par2(1), testparam(2);
Vars: StopLossBuy(0), StopLossSell(0),rsirsi(0);
Vars: bu1(0),bu2(0),sl1(0),Ssl1(0),  sl2(0),sl3(0),sl4(0),se1(0),se2(0),ss1(0),ss2(0),ss3(0),ss4(0);

If Marketposition <= 0 Then StopLossBuy = 0;
If Marketposition >= 0 Then StopLossSell = 0;

rsirsi = RSI(Close, RSILength);
 
{+++++++++++++++++ Buy Zone +++++++++++++++++++++}

If Currentbar > 1 AND rsirsi Cross Above 50 + 2 and countif(rsirsi < 50, 19) <> 0 and Marketposition = 0
   Then
begin   
Buy("b1")  {high + AvgTrueRange(RSILength)*PercTrueRange*2.5 { 0.0015}  Limit}this bar on the close;

StopLossBuy = high - {AvgTrueRange(RSILength)*PercTrueRange*2*2.5} 0.0034 ;
end;


If Marketposition = 1 and CurrentContracts = 1 and close Crosses below StopLossBuy
   Then
    begin
    ExitLong("sl_1") from Entry ("b1");
    sl1 = sl1 +  1;
    end;
   
If Marketposition = 1 and CurrentContracts = 1 and RSI(Close, RSILength) Cross Above Level_1
   Then Buy("b2") this bar on the close;

If Marketposition = 1 and CurrentContracts = 2 and RSI(Close, RSILength) Cross below 50 + 1
   Then begin ExitLong("sl_2") from Entry ("b2"); sl2 = sl2 + 1; end;

{If Marketposition = 1 and CurrentContracts = 2 and RSI(Close, RSILength) Cross below Level_2
   Then begin ExitLong("sl_3") from Entry ("b2");sl3 = sl3 + 1; end;}


If Marketposition = 1  and RSI(Close, RSILength) Cross below 100 - Level_1
   Then begin ExitLong("sl_4") this bar on the close; sl4 = sl4 + 1; end;

{+++++++++++++++++ Sell Zone +++++++++++++++++++++}

If Currentbar > 1 AND rsirsi Cross below 50- 2 and countif(rsirsi > 50, 19) <> 0 and Marketposition = 0
   Then
begin   
Sell("s1")  {low - AvgTrueRange(RSILength)*0.15*2.5{ 0.0015}  Limit}this bar on the close;

StopLossSell = low + {AvgTrueRange(RSILength)*PercTrueRange*2*2.5} 0.0034;
end;



If Marketposition = -1 and CurrentContracts = 1 and close Crosses above StopLossSell
   Then ExitShort("ss_1") from Entry ("s1");

If Marketposition = -1 and CurrentContracts = 1 and RSI(Close, RSILength) Cross below 100 - Level_1
   Then Sell("s2") this bar on the close;

If Marketposition = -1 and CurrentContracts = 2 and RSI(Close, RSILength) Cross above 50 - 1
   Then ExitShort("ss_2") from Entry ("s2");

{If Marketposition = -1 and CurrentContracts = 2 and RSI(Close, RSILength) Cross above 100 - Level_2
   Then ExitShort("ss_3") from Entry ("s2");}

If Marketposition = -1  and RSI(Close, RSILength) Cross above Level_1
   Then ExitShort("ss_4") this bar on the close;
   
{   If (marketposition = -1 and    50 < rsirsi) or (marketposition = 1 and    50 > rsirsi) Then }
   
If RSI(Close, RSILength) < Level_2 and RSI(Close, RSILength) > 100 - Level_2   Then
   begin
SetStopPosition;

SetPercentTrailing(par1, par2);
   end;

SetStopPosition;
{SetStopContract;}


SetStopLoss(PercTrueRange);

{If sl4<>sl4[1] or sl3<>sl3[1] or sl2<>sl2[1] or sl1<>sl1[1] Then
Print(File("d:\data1\RSI.txt"),sl1, sl2, sl3, sl4);}

++++++++++++++++++++++++++++++++++++++++++++++

ЗЫ. Забыл... В "Strategy testing resolution" должно стоять 15 мин. "Maximum open entiers..." = 2.
"Allow for same and different..." - точка. "Max numbers of bars....." = 100. В "Costs" "Fixet Unit" - точка

PPS. Все что в "ЗЫ" - очень важно!!!  


Отчет из Омеги прилагается. 210 дней.

Успехов!
Успехов и Удачи!

Оффлайн Oldman

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 230
  • +538/-11
    • Просмотр профиля
Re: Свежая система на основе RSI
« Ответ #5 : 25.09.2006 18:13 »
Так эта торговая система выглядит "в натуре"
Успехов и Удачи!

Оффлайн VLA

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 381
  • +135/-101
    • Просмотр профиля
Re: Свежая система на основе RSI
« Ответ #6 : 25.09.2006 19:00 »
Так эта торговая система выглядит "в натуре"
омегой пользуюсь, но как-то не доходило до установки МТС.
Поясни, если не трудно, как засунуть :-)
С уважением !

Оффлайн Oldman

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 230
  • +538/-11
    • Просмотр профиля
Re: Свежая система на основе RSI
« Ответ #7 : 25.09.2006 20:31 »
омегой пользуюсь, но как-то не доходило до установки МТС.
Поясни, если не трудно, как засунуть :-)


     
Засунуть просто ... :-)
Приведенный код нужно сохранить в EL как Signal. Потом через TradeStation StrategyBuilder создать стратегию, где в качестве signal использовать сохранненый код, который приведен выше. Ну, и сделать то, что мной указанно в "ЗЫ" и перед приведенным кодом.
Токо Омега к торговым платформам не присоединяется, как говорится , "на раз". А в остальном, вроде, проблем нет.
 
Успехов и Удачи!

Оффлайн VLA

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 381
  • +135/-101
    • Просмотр профиля
Re: Свежая система на основе RSI
« Ответ #8 : 25.09.2006 20:47 »
омегой пользуюсь, но как-то не доходило до установки МТС.
Поясни, если не трудно, как засунуть :-)


     
Засунуть просто ... :-)
Приведенный код нужно сохранить в EL как Signal. Потом через TradeStation StrategyBuilder создать стратегию, где в качестве signal использовать сохранненый код, который приведен выше. Ну, и сделать то, что мной указанно в "ЗЫ" и перед приведенным кодом.
Токо Омега к торговым платформам не присоединяется, как говорится , "на раз". А в остальном, вроде, проблем нет.
 
пасип, еще проще чем думал :mrgreen:
С уважением !

Оффлайн PARADISE LOST

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 1
  • +0/-0
    • Просмотр профиля
Re: Свежая система на основе RSI
« Ответ #9 : 06.11.2006 17:43 »
подскажите как пользоватся ATR - по описанию стратегии по RSI не понял тут - % ,а на самом индюке числа с двумя нулями после запятой?