У данной торговой системы есть три параметра: время входа, время выхода и направление (купить-продать).
Делаем два простых шага:
1. Просчитываем эквити всех систем. Например, на часовом тайм-фрейме таких систем будет 105 штук.
2. Отбираем только те системы, которые достаточно стабильно зарабатывают и включаем их в портфель.
Результаты такого портфеля на часовиках (Si, RI, SR):
Результаты такого портфеля на 15-минутках (Si, RI, SR):
Ось абсцисс — номер дня, начиная с 2010 года по тек. время.
Ось ординат — проценты.
Комиссия учтена?
Или для чего сей аналайз
Да, спасибо за анализ!
Тогда следует понять так, что это простоэквити подневная, а сделок могло быть несколько....
Ну да это не важно.
Спасибо.
А, тогда так, как я вначале и подумал…
Бьюсь несколько дней с созданием кода в C#, пока не получается справиться своими силами, так как не программист(.
На начало дня задаем несколько уровней цены, допустим 3 значения выше текущей цены, 3 значения ниже (S1,S2,S3, B1,B2,B3).
Играем на отбой от уровней, входим в сделку по цене уровня + некоторый отступ (для шорта) и уровень – отступ для лонга (level ± отступ). Отступ «заоптимизирую» потом. Если вошли в позицию, то уровень считаем отыгравшим и больше на него не ориентируемся.
Не получается запрограммировать такую логику. Пока только смог придумать такой кривой код для определения текущего активного уровня (от которого идет сигнал на вход), определяю какой уровень ближе к текущей цене:
В цикле:
currentprice = Bars.Close[bar];
if (Math.Abs(S1 — currentprice) < Math.Abs(B1 — currentprice) && Math.Abs(S1 — currentprice) < Math.Abs(B2 — currentprice) && Math.Abs(S1 — currentprice) < Math.Abs(B3 — currentprice) && Math.Abs(S1 — currentprice) < Math.Abs(S2 — currentprice) && Math.Abs(S1 — currentprice) < Math.Abs(S3 — currentprice))
selllevel = S1;
else if (Math.Abs(S2 — currentprice) < Math.Abs(B1 — currentprice) && Math.Abs(S2 — currentprice) < Math.Abs(B2 — currentprice) && Math.Abs(S2 — currentprice) < Math.Abs(B3 — currentprice) && Math.Abs(S2 — currentprice) < Math.Abs(S1 — currentprice) && Math.Abs(S2 — currentprice) < Math.Abs(S3 — currentprice)
selllevel = S2;
и так далее для buylevel и каждого уровня B1,B2,B3.
Потом, если пришел сигнал на вход, то опять таким же образом определяю на каком уровне сыграли и присваиваю ему значение 0, например:
if (Math.Abs(S1 — currentprice) < Math.Abs(B1 — currentprice) && Math.Abs(S1 — currentprice) < Math.Abs(B2 — currentprice) && Math.Abs(S1 — currentprice) < Math.Abs(B3 — currentprice) && Math.Abs(S1 — currentprice) < Math.Abs(S2 — currentprice) && Math.Abs(S1 — currentprice) < Math.Abs(S3 — currentprice)
S1 = 0;
И так далее.
Но в итоге на тестах в Wealth Lab’е программа работает, не так как задумано.
Подскажите, каким образом лучше сделать такую логику на игру от уровней. Может, будет легче поработать как-то с DataSeries? Тогда как?