У вас не стоит Flash Player
Настройки
#79328 - Thu Aug 11 2016 11:00 AM Помогите с созданием алгоритма
Andrey112 Offline
stranger

Registered: Thu Aug 11 2016
Записи: 2
Господа алготрейдеры, помогите решить проблему.
Бьюсь несколько дней с созданием кода в 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;

И так далее.

Но в итоге на тестах программа работает, не так как задумано.

Подскажите, каким образом лучше сделать такую логику на игру от уровней. Может, будет легче поработать как-то с массивами? Тогда как?

Наверх
#79341 - Fri Aug 12 2016 12:17 PM Re: Помогите с созданием алгоритма [Re: Andrey112]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
если вы вообще не программист, то может и не стоит начинать сразу с алгоритмов?
_________________________
__


Наверх
#79342 - Fri Aug 12 2016 12:42 PM Re: Помогите с созданием алгоритма [Re: ra81]
Andrey112 Offline
stranger

Registered: Thu Aug 11 2016
Записи: 2
Так по сути любая логика вида: при наступлении таких то событий делаем то-то и то-то является алгоритмом. Так что никуда от этого не уйти.

Наверх


Moderator:  ViL, sar