Specification
«Супер Закрывашка».
Открытый проект по разработке утилиты «Супер Закрывашка». Приглашаются все желающие, нужно написать код (открытый, в исходниках), будут обсуждения, корректировки…
Вот еще мне нужна супер закрывашка - я несколько раз попадал, когда хотел открыться или закрыться на свече. И терял почти все - потому что меня оттопыривали, потому что цена изменялась. Я пытался через стоп - но стоп по умолчанию предлагает 100 пунктов (по разным активам разное количество) от ТЕКУЩЕЙ цены, поэтому стоп мне тоже не давали поставить. Решения я нашел - надо стоп ставить на 20 или 50 (это надо проверять) выше разрешенных 100 пунктов.
Суть закрывашки вот в чем – если по любасу надо закрыть:
- пытаемся цену поймать в коридор между стопом и тейком
- не получается - расширяем коридор в ту или в другой сторону (или в обе сразу)
- как только удалось поставить границу (хотя бы одну) – тянем ее за ценой, если цена движется в другую сторону от поставленной границы
- пытаемся уменьшить по возможности коридор
Итак, супер закрывашка должна:
Первая итерация:
По выбранным или по всем ордерам ОДНОВРЕМЕННО производить следующее:
- посылать сигнал на закрытие по текущей цене
- ставить разрешенный стоп, минимальный по данному активу, плюс Z (задаваемое) количество пунктов, при срабатывании - сразу запускать трейлинг стоп
- ставить разрешенный тейк, минимально близкий по данному активу, плюс Q (задаваемое, как правило, равно Z)
Здесь надо сделать искусственный трейлинг тейк, т.е. если цена идет нам в убыток, а нам удалось поставить тейк, мы все время переставляем тейк на этом заданном расстоянии (т.е. по сути, уменьшаем тейк с точки зрения прибыли).
Вторая итерация:
2. Если не срабатывает тейк, потому что цена так быстро бежала, что все равно оказалось, что не хватает пунктов, повторяем попытку, в которой ОДНОВРЕМЕННО (если это возможно одновременно):
- посылаем сигнал на закрытие по данной цене
- пытаемся выставить минимальный по данному активу тейк от новой текущей цены плюсу Q плюс еще Х (это тоже задаваемый параметр)
Т.е. например, разрешено ставить тейк на 100 пунктов от текущей цены, на первой итерации мы пытались ставить 120 пунктов (20 - это заданный параметр Q), не удалось – мы на второй итерации ставим 150 пунктов, если параметр Х равен 30 (т.е. 100 +Q+Х).
Крайне желательно (это можно делать тут же - на второй итерации программы, а можно, конечно и не делать): при этом ОДНОВРМЕННО пытаемся приблизить стоп на F (если он сработал, т.е. поставился, то он тянется за текущей ценой на минимально допустимом расстоянии плюс Z), т.е. например Z было 20 пунктов, стоп поставился и тянется по трейлинг стоп на минимальном расстоянии по активу +Z, т.е. на 120 пунктов, мы пытаемся приблизить его к текущей цене на F пунктов, т.е. допустим, F=10, мы пытаемся выставить стоп на следующую величину от текущей цены (100+Z-Y, т.е. 100+20-10=110).
А если проканало, то сразу же пытаемся на разрешенные 100 пунктов.
При этом всегда, запускаем трейлинг стоп!
Ну, допустим, ты шортил, цена летела вниз, стоп поставился, а тейк нет – пытаемся тейк поставить еще дальше для того, чтобы все-таки поставить, к текущей цене от разрешенных, чем в первой попытке, а стоп можно попробовать и подтянуть еще поближе к разрешенным 100 пунктам, чем в первой попытке.
3. Если не срабатывает стоп, потому что цена так быстро развернулась, что все равно оказалось, не хватает пунктов, повторяем попытку, в которой ОДНОВРЕМЕННО (если это возможно одновременно):
- посылаем сигнал на закрытие по данной цене
- выставить минимальный по данному активу стоп от новой текущей цены плюс Z плюс еще Y (это тоже задаваемый параметр)
Т.е. например, разрешено ставить стоп на 100 пунктов от текущей цены, на первой итерации мы пытались ставить 120 пунктов (20 - это заданный параметр Z), не удалось – мы на второй итерации ставим 150 пунктов, если параметр Y= 30 (т.е. 100 +Z+Y).
Крайне желательно (это можно делать тут же - на второй итерации программы, а можно, конечно и не делать): при этом ОДНОВРМЕННО пытаемся приблизить тейк на S (если он сработал, т.е. поставился, и переставляется на минимально допустимом расстоянии плюс Q), т.е. например Q было 20 пунктов, тейк переставляется на минимальном расстоянии по активу +Q, т.е. на 120 пунктов, мы пытаемся его приблизить к текущей цене на S пунктов, т.е. допустим, S=10, мы пытаемся выставить тейк на следующую величину от текущей цены (100+Q-S, т.е. 100+20-10=110).
Если у нас не сделано пока автоматическое придвижение (изменение) тейка, тогда одновременно при удачной постановке тейка и отказе в получении стопа пытаемся ставить тейк на (100+Q-S, т.е. 100+20-10=110).
Ну, допустим, ты шортил, цена вдруг развернулась, тейк поставился, а стоп нет - цена развернулась вверх – пытаемся стоп поставить еще выше от разрешенных 100 пунктов, чем в первой попытке (не на 120 от текущей, а на 150), а тейк поднимаем (т.е. по прибыли уменьшаем), причем не на то же расстояние, а пытаемся еще ближе к разрешенным 100 пунктам, чем в первой итерации (не на 120, а на 110).
ВНИМАНИЕ: здесь надо хорошо подумать – стоит ли переставлять тейк, используя параметр S – дело в том, что мы, например, уменьшим диапазон – сделаем не 120, а 110 пунктов (при разрешенных100) - а он из-за этого не поставится??? Или тут же сделать попытку снова со 120 пунктами? Если все делается очень быстро, можно делать много попыток: не получилось сузить диапазон, тут же делаем заход, расширив до прежних 120 пунктов.
4. Если отказали и в стопе, и в тейке, тогда мы еще расширяем коридор по ним на задаваемые параметры У и Х (соответственно).
Третья итерация:
5. Если на второй итерации поставились стоп и/или тейк, с расширением диапазона на У и Х, это не очень хорошо, надо третьей итерацией пытаться их не только тащить за текущей ценой (стоп трейлингом и тейком программно), но и пытаться сократить диапазон на те же У и Х:
- расширение тейка на Х может происходить на второй итерации (см. пункт 2 и 4)
- расширение стопа может происходить на Y на второй итерации (см. пункт 3 и 4)
Четвертая итерация:
6. Желательно: если поставились на первой итерации тейк и/или стоп, по стопу у нас включен трейлинг стоп, а по тейку, если цена развернулась в сторону стопа, и сделано перетаскивание тейка (как сказано в пункте 1, на минимальное расстояние + Q), тогда надо пытаться сузить коридор по стопу и тейку на F и S (см. пункт 2.3).
Это делается уже на второй итерации:
- поставиться тейк с парметром Q может на первой итерации (см. пункт 1 и 3)
- поставиться стоп с параметром Y может на первой итерации (см. пункт 1 и 2)
Повторюсь - внимание!!!
ВНИМАНИЕ: здесь надо хорошо подумать – стоит ли переставлять тейк, используя параметр Х, – дело в том, что мы, например, уменьшим диапазон – сделаем не 120, а 110 пунктов (при разрешенных100) - а он из-за этого не поставится??? Или тут же делать попытку снова со 120 пунктами? Если все делается очень быстро, можно делать много попыток: не получилось сузить диапазон, тут же делаем заход, расширив до прежних 120 пунктов.
Суть закрывашки вот в чем – если по любасу надо закрыть:
-пытаемся цену поймать в коридор между стопом и тейком
- не получается - расширяем коридор в ту или в другой сторону (или в обе сразу)
- как только удалось поставить границу (хотя бы одну) – тянем ее за ценой, если цена движется в другую сторону от поставленной границы
- пытаемся уменьшить по возможности коридор
Для стопа параметры:
Расширение коридора, задаваемое сразу на первой итерации:
для стопа - Z
для тейка –Q
Расширение для второй итерации:
для стопа Y
для тейка X
Уменьшение коридора на второй итерации (очень желательно, но не обязательно):
для стопа - F
для тейка - S
Уменьшение коридора на третьей итерации (после расширения на второй):
- те же, что и для расширения на второй!!! (т.е. для стопа Y, для тейка X)
Ждем предложений, готовы к сотрудничеству!