작업 종료됨
명시
Что нужно
Нужен торговый робот для автоматизированной торговле, когда высокая волатильность и одни и те же уровни пересекаются по много раз. В этом случае хочется зафиксировать часть прибыли, не дожидаясь достижения целевого уровня, т.к. есть вероятность, что мы еще раз откатимся, и будет возможность опять увеличить размер позиции. Т.е., открыв позицию, мы ее постепенно закрываем по мере приближения к TP и постепенно увеличиваем по мере отката.
Реализация
Постепенно изменять размер позиции невозможно, поэтому реализуем алгоритм, разбив всю открытую позицию на N ордеров, а рабочий диапазон на N уровней. Каждый ордер n-ого уровня имеет TP на уровне (n+1) и закрывается по мере приближения к целевому уровню. В момент закрытию открывается отложенный ордер на уровне n и в случае отката позиция открывается вновь. Т.е. в каждый момент у нас N ордеров : часть которая выше текущего уровня открыты, которые ниже – отложенные.
Параметры
1. BS - Тип buy/sell
2. h0 - Нижний уровень диапазона (верхний для sell)
3. hN - Верхний уровень диапазона (нижний для sell)
4. N - Дисретность (количество промежуточных уровней)
5. S – максимальный объем открытой позиции
6. L – Уровень stoplose ниже (выше) h0
Описание примера
1. Тип ордеров buy
2. Дискретность N=4
3. Задаем S=2 лота
4. Размер каждого промежуточного лота равен S/N=0,5 лота
5. Расстояние между уровнями d=(h4-h0)/N
6. Рассчитываем уровни: h1=h0+d, h2=h0+2d и т.д.
7. В момент 1 запускаем программу:
7.1. Открываем 4 ордера: 0 и 1 отложенные buylimit на h0 и h1 соответственно, с TP h1 и h2. 2 и 3
7.2. В момент 2: 2-ой ордер закрывается по TP на h3 и сразу открываем отложенные buylimit на h2 с TP опять же на h3
7.3. В момент 3 срабатывает отложенный ордер (программе ничего делать не надо)
7.4. В момент 4 срабатывает отложенный ордер (программе ничего делать не надо)
7.5. В момент 5: 1-ый ордер закрывается по TP на h2 и сразу открываем такой же отложенный buylimit на h1
7.6. В момент 6: 2-ый ордер закрывается по TP на h3 и сразу открываем такой же отложенный buylimit на h2
7.7. В момент 7 закрывается последний открытый ордер, ничего открывать не надо – цель достигнута, программа завершает работу