Заметка

Робот на простом паттерне

  3  

Привет робостроителям! Делюсь простым алгоримом. Стратегия работает только в лонг в качестве сигнала на вход использует элементарный паттерн, для выхода из позиции — скользящий стоп.

Не предлагаю эту стратегию в качестве рабочего варианта — если буду использовать сам, то что-то буду дорабатывать.

В качестве сигнала на вход — вот такой паттерн:

(Math.Abs(Close[bar-3]-Open[bar-3])>(Math.Abs(Close[bar]-Open[bar])+Math.Abs(Close[bar-1]-Open[bar-1])+Math.Abs(Close[bar-2]-Open[bar-2])+Math.Abs(Close[bar-6]-Open[bar-6])+Math.Abs(Close[bar-5]-Open[bar-5]))&Close[bar-3]> Open[bar-3])

Мы ловим белую свечу, величина тела которой больше суммы двух предыдущих, а также больше суммы трех последующих. Описать это можно так — цены были в боковике, совершили движение вверх и снова легли в боковик. Вот в такой ситуации входим в лонг на 50% счета по каждой из бумаг. В качестве инструментов я взял два Сбера, Транснефть и ХолМРСК.

Выходим аз позиции простым скользящим стопом

((LastPosition.NetProfitAsOfBarPercent(bar)-LastPosition.MFEPercentAsOfBar(bar)) < -parameter1.Value)

Код целиком для Трейдматика выглядит так

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using TradeMatic;
using TradeMatic.Indicators;

namespace ScriptNamespace
{
 class MyScript : Script
 {
  private StrategyParameter parameter1;
  

  public MyScript()
  {
  parameter1 = CreateParameter ("Лонг",2,2,3,0.1);
   
   
  }

  public override void Execute()
  {


   // Основной цикл
   for (int bar = 6; bar < Symbol.Count; bar++)
   {
    if (MarketPosition == 1)
    {
     // Выход из длинной позиции
     

      if ((LastPosition.NetProfitAsOfBarPercent(bar)-LastPosition.MFEPercentAsOfBar(bar)) < -parameter1.Value)
      {
       SellAtClose(bar+1, LastPosition, "");
      }
     
     
    }
    
    if (MarketPosition == 0)
    {
       if (Math.Abs(Close[bar-3]-Open[bar-3])>(Math.Abs(Close[bar]-Open[bar])+Math.Abs(Close[bar-1]-Open[bar-1])+Math.Abs(Close[bar-2]-Open[bar-2])+Math.Abs(Close[bar-6]-Open[bar-6])+Math.Abs(Close[bar-5]-Open[bar-5]))&Close[bar-3]> Open[bar-3])
      {
       BuyAtClose(bar+1, "");
      }
    }
    
   }
  }
 }
}

Размер стопа возьмем равным 2%

Тестирую систему на пятилетнем интервале с комиссией 0,06% на сторону

Такие результаты. Есть идеи, как доработать робота, пишите — будем пробовать.

Результаты с шортами

Без реинвестирования

Комментарии

Николай Камынин — 17 января 2013 г.

ALendi,
Вопрос:
Можете показать результат без реинвестирования?
Коммент:
Если вход в позицию на bar,то в реале всемо тела свечи на bar будет текщая разность последней цены и открытия свечи.
Для корректного результата на истории надо совершать сделки на bar+1, т е на следующем баре, а алгоритм должен быть переписан начиная с bar-7.

0 +

ALendi — 17 января 2013 г.

Николай, я тестирую роботов с реинвестированием, потому что так и работаю впоследствии - с реинвестированием. Ничего в этом криминального нет.

0 +

ALendi — 17 января 2013 г.

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

0 +

Николай Камынин — 17 января 2013 г.

если возможно покажите результат с запаздыванием входа на бар.

0 +

ALendi — 17 января 2013 г.

Николай, робот входит в позицию на bar+1

0 +

Laborant — 17 января 2013 г.

ALendi, просто интересно, видите ли Вы для себя какой-то физический (фундаментальный) смысл в данном паттерне. Так многие паттерны можно обосновать, а здесь - не совсем ясно. Или просто подобрали и по результату?

0 +

ALendi — 17 января 2013 г.

Laborant, физический смысл есть, конечно. Мы видим большую свечу, ждем консолидации и входим в позицию. На мой взгляд таким образом система получает некое статистическое преимущество, хоть паттерн и не железный, конечно. Дальше с помощью скользящего стопа мы долго держим удачные позиции. Все просто.

0 +

Laborant — 17 января 2013 г.

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

0 +

ALendi — 17 января 2013 г.

Laborant, апдейтом добавил результаты с шортами. Оставил один оптимизируемый параметр - размер стопа и для лонгов, и для шортов. Добавил управление капиталом. В лонги входим на 50% от капитала, в шорты на 25%. Результаты получились получше. См. табличку

0 +

ALendi — 17 января 2013 г.

Laborant, да. По сути - выдающаяся свеча относительно предыдущий и последующих. На шортах хуже результаты, как раз вожусь сейчас.

0 +

Laborant — 17 января 2013 г.

ALendi, я Ваш паттерн, если не брать предисторию до большой свечи, для себя вижу так: взрывной рост, потом консолидация на достигнутом уровне, а дальше - продолжение роста...
В связи с этим, есть предложение, просто попробовать - консолидирующие свечки ограничить по уровню - не более High большой свечи - консолидация на достигнутом уровне.
Не факт, что это улучшит результат, но, как вариант, попробовать можно.

0 +

ALendi — 17 января 2013 г.

Laborant, то есть предложение такое - добавить условие Close[bar]

0 +

Николай Камынин — 18 января 2013 г.

ALendi,
На самом деле Ваш алгоритм - это простейший алгоритм игру на пробой.
Вот из этого и надо его объяснять.
Например, так есть некоторый уровень проторговки. Большая свеча - это попытка его продобя. при этом маркет-мейкер играет против вас. Если цена вернется на уровень проторговки, то уровень устоял и стал поддержкой.
если цена уйдет ниже то уровень пробит и стал сопротивлением.
в первом случае - входим, во втором нет.
Более серьезные алгоритмы учитывают длительность и объемы проторговки, наличие в истории разворотного уровня в данном месте.
Увы... все простые и очевидные алгоритмы давно известны и их результаты предсказуемы.

0 +

ALendi — 18 января 2013 г.

Николай, я хорошо отношусь к простым алгоритмам. Чем прощем описывается рынок - тем устойчивей описание.

0 +

Николай Камынин — 18 января 2013 г.

ALendi,
В качестве совета.
Когда я исследовал простые алгоритмы, то я обычно сравнивал их между собой.
Попробуйте сравнить данный алгоритм с алгоритмом на основе пересечения двух МА.
Полагаю, результаты будут похожими.

0 +

ALendi — 18 января 2013 г.

Николай, предлагайте параметры SMA. Я выложу результаты. Уверен, они будут совсем другими

0 +

Николай Камынин — 18 января 2013 г.

ALendi,
Благодарю за информацию.
Вопросы.
1)Как Вы объясните, тот факт, что по данным использование счета без реинвестирования сократилось всего с 35% до 28%, а прибыль уменьшилась при этом в 7 раз с 750% до 114%.
2) Почему при инвестировании использование счета 35% а не 100%. Чем ограничен объем реинвестирования?
Спасибо

0 +

ALendi — 18 января 2013 г.

Николай, насколько я понимаю, 100% было бы, если бы мы находились в позиции всеми средствами на всем периоде тестирования. Это стратегия бай энд хол. Ее результаты также представлены в табличке

0 +

Николай Камынин — 18 января 2013 г.

ALendi ,
не смог найти в заметке тайм.
а на каком тайме у вас работает алгоритм?

0 +

Николай Камынин — 18 января 2013 г.

ALendi ,
Вы пишите:
"Вот в такой ситуации входим в лонг на 50% счета по каждой из бумаг. В качестве инструментов я взял два Сбера, Транснефть и ХолМРСК."
Но Вы взяли четыре бумаги, по 50% от счета это будет 200% счета.
Поясните, что вы этим хотели сказать?

0 +

ALendi — 18 января 2013 г.

Все верно

0 +

Николай Камынин — 18 января 2013 г.

ALendi ,
Поясните, формула:
(Math.Abs(Close[bar-3]-Open[bar-3])>(Math.Abs(Close[bar]-Open[bar])+Math.Abs(Close[bar-1]-Open[bar-1])+Math.Abs(Close[bar-2]-Open[bar-2])+Math.Abs(Close[bar-6]-Open[bar-6])+Math.Abs(Close[bar-5]-Open[bar-5]))&Close[bar-3]> Open[bar-3])
~~~~~~~~~~~~~~~~
не соответствует Вашему описанию:
"Мы ловим белую свечу, величина тела которой больше суммы двух предыдущих, а также больше суммы трех последующих. "
~~~~~~~~~~~~~~~~~~~~~
Во-первых, пропущена свеча под номером bar-4.
Во-вторых, ловите белую свечу, тело которой больше суммы тел пяти свеч.
Две слева от нее с пропуском первой слева и трех справа от нее.
Т е свеча больше суммы пяти, а не суммы двух и суммы трех.
Верно, так задумано?

0 +

ALendi — 18 января 2013 г.

Николай, все верно

0 +

TrunkyGoo — 16 июля 2014 г.

ALendi,

а почему 4-ая свеча пропущена?

0 +

Николай Камынин — 18 января 2013 г.

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

0 +

Николай Камынин — 18 января 2013 г.

ALendi ,
я переписал Вашу формулу немного:
Body[bar-3]>(Body[bar]+Body[bar-1]+Body[bar-2]+Body[bar-6]+Body[bar-5]) & White[bar-3]
где Body - тело свечи, White - признак белой свечи.
Все правильно?

0 +

ALendi — 18 января 2013 г.

Все верно

0 +

ALendi — 18 января 2013 г.

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

1 +

Николай Камынин — 18 января 2013 г.

ALendi,
К сожалению не все возможно,
те коды с которыми я реально работаю примерно от 1000 строк на C++ и еще до 1000 строк AFL.
Могу лишь выложить тесты, наподобие Ваших на AFL (скриптовый язык Амиброкера)
Сейчас запрограммирую Ваш алгоритм и могу выложить, если интересно

1 +

Veresk — 21 января 2013 г.

ALendi, здравствуйте!
По сути, это одна из пробойных стратегий.
А Вы не пробовали увеличить таймфрейм? У меня одна из систем со схожим принципом работает на ТФ 240Н не первый месяц и довольно успешно.

1 +

ALendi — 21 января 2013 г.

Veresk, сильно уменьшается колличество сделок. Результаты в плюс, но хуже. Тут надо сам паттерн как-то менять. Делать его более частотным, если четырехчасовки брать

0 +

Surmounter — 21 января 2013 г.

ALendi,

Этот вариант стратегии у Вас на 10 минутках?

0 +

ALendi — 22 января 2013 г.

Surmounter, нет, на часах

0 +

Veresk — 21 января 2013 г.

поправка ТФ = 4Н

1 +

uid-11303 — 1 апреля 2016 г.

где скачивать робота?

0 +

drghestykmb — 1 мая 2016 г.

на луа код можно?

0 +

drghestykmb — 1 мая 2016 г.

3 солдата работают немного в прибыль. попробую на луа.в купайле работает.

0 +

drghestykmb — 1 мая 2016 г.

НА ЛУА И ЕСТЬdrghestykmb

0 +

Написать комментарий

Чтобы написать комментарий, необходимо авторизоваться.

Написать администратору