BITFINEX:BTCUSD   Биткоин / Доллар США
4690 просмотров
88
4690 28
Новая игрушка, на прошлом профитная (на будущем - скоро узнаем). Начнём с самого интересного:

"BTC/USD", BitFinex, H1, strategy = profit +7.818%
"BTC/USD", BitFinex, H1, buy and hold = profit +662%

"ETH/USD", BitFinex, H1, strategy = profit +14.189%
"ETH/USD", BitFinex, H1, buy and hold = profit +9.239%

"XRP/USD, BitFinex, H1, strategy = profit +17.342%
"XRP/USD, BitFinex, H1, buy and hold = profit +124%

"ETH/BTC", BitFinex, H1, strategy = profit +7.842%
"ETH/BTC", BitFinex, H1, buy and hold = profit +998%

"XRP/BTC", BitFinex, H1, strategy = profit -23%
"XRP/BTC", BitFinex, H1, buy and hold = profit -41%

Отдельно тестировал "BTC/USD" за 2014 год, когда биток упал на 74% за год эта стратегия сделала +170% прибыль (почти вся прибыль шортами), так что живучая.

Как обычно подгонка под прошлое отсутствует, стратегия не перерисовывается, не мухлюет, а исходный код открытый, что позволяет это проверить.

Стратегия еще не прокачена (выжиманию не подвергалась, но подвергнется), смотрится пока перспективно. Старые стратегии не забыл, там просто выжать не удается больше, но они хорошие :)

Как юзать

Тысячи галок пока нет, поэтому лучше всё оставить по умолчанию, шорт можно выключить, что для даунтренда крипты в ближайший год будет не лучшей идеей, если что. Галка колор заставляет стратегию покупать только на красной свечке, а не на любой, продавать на зеленой, а не на любой. В среднем это чуточку улучшает результат, хоть и не значительно. Период лучше всего 20 (как и у классического ББ, кстати).

Как работает

А вот тут сложно. Я подумал: "А почему бы не прокачать Боллинджер Бендс?". ББ использует в центре SMA с периодом 20, которая работает куда хуже центральной линии PriceChannel (в этом можно убедиться самостоятельно используя мой скрипт "MAs Tests", скрипт прикреплён внизу), а я могу туда поставить центральную линию PraceChannel вместо SMA , получится улучшенный ББ, вдруг так будет лучше? Взял элементарную стратегию на ББ, поменял центральную линию и немного логики, и получилось... профитно, рынок она бьёт. Что интересно, даже без "прокачки" получились хорошие результаты на почти всех парах крипты (часовой ТФ). Что довольно перспективно, раз уж сразу и без прокачек не плохо.

Алгоритм:

- Строится линия PriceChannel как обычно (центральная).
- Рассчитывается насколько в среднем цена отклоняется от центральной линии (за последние 20 свечей - параметр период)
- Строится верхняя линия (центральная + среднее отклонение цены)
- Строится нижняя линия (центральная - среднее отклонение цены)
- Если свеча закрылась выше верхней линии, то считается начался аптренд
- Если свеча закрылась ниже верхней линии, о считается начался даунтренд
- Далее рисуется фон, который отражает тренд по мнению данной стратегии
- Если сейчас аптренд и красная свеча - нужно открыть лонг
- Если сейчас даунтренд и зеленая свеча - нужно открыть шорт
- Стратегия реверсивная (тейка и стопа нету значит)

Линии исходя из логики в принципе не могут пересекаться, поэтому я оставил им одинаковый цвет. Нет смысла разукрашивать.

Линии и фон по умолчанию отключены, включаются галками. Алерты сделать в принципе невозможно.

Больше прибыли может получаться если:
- использовать плечо
- входить по более выгодной цене, чем предлагает стратегия, дождаться более выгодной, либо поискать на другой паре

PS: сегодня я узнал что за один день возможно придумать новый индикатор, новую прибыльную стратегию, закодить и протестить. Ранее такое не за 1 день делалось :)
Комментарий: Только что прогнал эту стратегию на дефолте, на файнексе 2013-2018 - отлично пережила все падения рынка, включая последнее, живучая дрянь оказывается. Мне очень нравится пока как она работает. Я думаю из неё может получить что-то лучше чем Trend MAs, так как даже по цвету фона видно что Bands лучше чует тренд чем Trend MAs. Просто Bands пока не обучена закономерностям, так что должна быть пригодна для выжимания. Постараюсь двигаться в сторону уменьшения просадки, а не прибыльности.
Комментарий: Думаю с картинками понятнее будет. Вот биткойн на дневном (хотя стратегия только для часового рассчитана сейчас). Первая черная свечка показывает на свечку, которая закрылась выше верхней линии - это значит начало аптренда по мнению стратегии, и поэтому фон стал лаймовый. На второй черной стрелке произошла обратная ситуация, свечка закрылась ниже нижней линии, что по логике данной стратегии (и логике индикатора, который заложен в её основе) начался даунтренд. Даунтренд будет продолжаться пока какая нибудь свечка не закроется выше верхней линии снова.

При этом стратегия сразу сделку не открывает, потому что это не очень выгодно оказалось, как показали тесты. Вместо этого она выжидает более удачный вход. Иногда вход менее удачный из-за выжидания, а иногда отличный. В среднем (по тестам) выжидать удачную точку входа в тренд выгоднее чем не выжидать и запрыгивать в тренд сразу же.

Условия для открытия позиции стратегии одинаковы для шорта и лонга.

Для лонга надо чтобы свеча была красной (если включена галка колор), и при этом свеча должна закрыться ниже верхней линии (это защита от излишне дорогих входов), и при этом должен быть аптренд (лаймовый фон). Как видим условия три. И все надо одновременно. Поэтому иногда стратегия пропускает тренд, что в среднем даже хорошо.

Для шорта ровно наоборот. Нужно чтобы:
1) Определен даунтренд (красный фон)
2) Свеча зеленая (если включена галка колор)
3) Свеча закрылась выше нижней линии

В целом логика стратегии довольно простая.
Комментарий:
Комментарий: Улучшить результаты возможно вручную.

1) Если Ваша позиция прибыльная и скрипт объявил даунтренд, то Вы можете сразу продать не дожидаясь стрелки для шорта.

2) Можно использовать плечо, но только на тех парах, где в результатах тестах просадка менее 50%. То есть, если просадка 35%, то можно использовать плечо х2, так не сольёте. Но при плече х3 уже очень вероятно слить (35% * 3 = 105% > 100% - это упрощенный пример).

3) Можно усреднять убыточную позицию. В том числе с плечом. Однако, я бы тут предложил 2 штуки:
а) усредняйте не по цене, а по свече. То есть следующая докупка делается только если закрылась часовая свеча (то есть докупка не чаще чем раз в час или реже), и цена дешевле всех прошлых докупок. При этом если появляется стрелка на шорт - закрываете всю позицию в любом случае, даже если она сильно убыточная. Усреднение убыточных сделок повысит % прибыльных сделок, что психологически комфортнее.

3) Лучший вариант. Дожидаться цены получше чем предлагает скрипт для входа в позицию. Если на данной паре нет входа получше, то можно найти другую пару, где есть. Пар много. Такая позиция в среднем будет прибыльнее, чем вход сразу же по сигналу.

Те же самые идеи подходят и для Trend MAs.
Комментарий: И еще полезный совет: перед выбором пары смотрите шорты даже если не собираетесь шортить. Если шорты убыточны, то не торгуйте эту пару даже только в лонг. Потому что там вероятность проигрывать гораздо выше даже если только лонг. Если внутри стратегии заложена рабочая закономерность, то профитны должны быть и лонги и шорты. Если профитна только одна сторона, то это обычно означает что стратегия просто удачно попала на тренд (повезло), и не значит что в будущем это окажется выигрышной стратегий. Это относится не только к моим скриптам, а вообще к любой стратегии. Либо она плюсует в обе стороны, либо ей просто повезло.
Комментарий: Сделал традиционный видеопрогон стратегии, на ютуб закинул. С комиссией 0.5% выживает на падении "EOS/USD", а ведь оно было без откатов и в 11 раз. Технически шортить возможно было (BitFinex). Так что думаю потенциал тут интересный у неё, раз уж живучая такая.

Прошу модераторов не удалять, видео отражает идеи и может быть полезным пользователям. На канале ничего кроме записей с сайта TW нет, так что это не реклама (ну или это реклама сайту TW).

Видеопрогон, под музычку:
https://youtu.be/dqlv3gD6BaE
Комментарий: Я тут погонял еще несколько тестов и обнаружил что галка колор часто мешается, а не помогает. А когда помогает, то помогает что-то не сильно. А вот мешается сильно (на некоторых парах). Возможно её не стоит включать, пока сам не определился, сырой еще продукт.
Комментарий: К сожалению глючит тестер сайта TradingView, что я только заметил. На некоторых парах моя стратегия сливается в ноль, но это глюк тестера и на реальной практике этого не должно было произойти.

Могу привести конкретный пример глюка. На паре NEM/USD (биржа HitBTC) стратегия сливается в ноль, однако, на последнем входе в лонг она открывает 2 позиции, несмотря на то что пирамидинг стоит 0 и галка отключена. То есть, по идее она должна тут покупать только 1 раз, а она покупает дважды, в итоге после резкого падения - слив. Но, если бы она купил 1 раз, то слива бы не произошло в этом месте.

Для борьбы с глюком могу предложить только использовать капитал в настройках скажем на 1%. Глюк очень редкий, но бывает. К сожалению, если включить капитал 1% (а по умолчанию там 100%) Вы уже не сможете оценить доходность стратегии на данной паре, и не сможете оценить просадку.

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

Так что объективно оценить можно лишь на тех парах, где глюка не случилось. Глюк точно не мой, я невиноватый :)

Так же может быть стоит разобраться из-за чего случился слив на тесте. В истории сделок надо посмотреть последнюю сделку, перемотать график на эту дату (либо кнопкой "перейти") и посмотреть сколько там было входов в позицию. Если 1 и слилась - виновата стратегия, если входа 2 - это глюк тестера TradingView, поэтому Норо бить не надо.
Комментарий: Вот заскринил. Тут второй сделки быть не должно, пирамидинг отключен, вход на 100% от капитала. Стратегия не имела право в тесте покупать второй раз при таких условиях, а она типа купила, и просадка превысила 100%

Комментарий: Если стратегия покупает только 1 раз на 100% капитала, то плечо не используется, а значит она в принципе не может слить при падении цены хоть на сколько. Чтобы слиться при лонге без плеча нужно падение ровно до 0, а такого падения у пары не было не разу.
Комментарий: кстати, я придумал решение от глюка этого. В версии 1.1 встрою защиту от этого глюка.
Добрый день! Подскажите пожалуйста где можно посмотреть исходный код реализации данной стратегии? Спасибо!
Ответить
Уважаемый Норо, разбираю вашу стратегию на PHP, которой щедро поделился со мной @Krokodilushka . Хочу во всем досконально разобраться, прежде чем пускать бота.

Вы пишите, что:
"- Если свеча закрылась выше верхней линии, то считается начался аптренд
- Если свеча закрылась ниже верхней линии, о считается начался даунтренд"

Но, как я вижу по коду "trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend", правильнее будет сказать: "Если свеча закрылась ниже _нижней_ линии, о считается начался даунтренд".

А по коду так же можно сказать, что
"- Если свеча закрылась выше верхней линии, и нижняя цена выше нижней линии, то считается начался аптренд"
и
"- Если свеча закрылась ниже нижней линии, и верхняя цена ниже верхней линии, то считается начался даунтренд"

Да? :)
Ответить
noro youniverse
@youniverse, да. Это доп.условие я позже добавил. В первых версиях его не было. Оно очень незначительно улучшат результат. То есть можно и без него.
Ответить
@noro, такой код создает ордер на битмекс
<?php

$key = $_GET;
$secret = $_GET;
$q = $_GET;
$price = $_GET;

$url = 'https://www.bitmex.com/api/v1/order';
$verb = 'POST';
$path = '/api/v1/order';
$nonce = (string) number_format(round(microtime(true) * 100000), 0, '.', '');
$data = 'symbol=XBTUSD&orderQty='.$q.'&price='.$price.'&ordType=Limit';

$sign = hash_hmac('sha256', $verb.$path.$nonce.$data, $secret);
$Order = curl_init();
curl_setopt($Order, CURLOPT_HTTPHEADER, array('api-signature: '.$sign, 'api-key: '.$key, 'api-nonce: '.$nonce));
curl_setopt($Order, CURLOPT_URL, $url);
curl_setopt($Order, CURLOPT_POST, true);
curl_setopt($Order, CURLOPT_SSL_VERIFYPEER , false);
curl_setopt($Order, CURLOPT_RETURNTRANSFER, true);
curl_setopt($Order, CURLOPT_POSTFIELDS, $data);
echo curl_exec($Order);

?>
Ответить
@noro, ай блин, сайт квадроскобки порезали :)
Ответить
@noro, о, спасибо, хоть посмотрю как подпись делается.

А я использую библиотеку https://github.com/ccxt/ccxt . Ее плюс в том, что она поддерживает почти все биржи и у нее для всех бирж стандартизированные вызовы.
То есть, например, у меня есть какое угодно количество объектов

include(CCXT_DIR . 'ccxt.php');

$bittrex = new \ccxt\bittrex(array (
'apiKey' => BITTREX_API_KEY,
'secret' => BITTREX_PRIVATE_KEY
));

$binance = new \ccxt\binance(array (
'apiKey' => BINANCE_API_KEY,
'secret' => BINANCE_PRIVATE_KEY
));

И я хочу поместить ордер на Bittrex для пары BTC/USDT

Обозначаю переменные

$market = 'bittrex';
$symbol = 'BTC/USDT';
$quantity = 0.1;
$price = 10000;

И делаю вызов на покупку, добавляя дополнительный $ к переменной $market, так вызов у меня пойдет к объекту $bittrex

try {
$response = $$market->create_order($symbol,'limit','buy',$quantity,$price);
usleep(500000); // Биттрекс любит паузу в 0.5 секунды
}
catch (Exception $e) { // В случае ошибки
echo $e->getMessage();
}

Таким образом, любую стратегию\алгоритм я могу перенести на любую биржу.

А вот что я не могу найти, так это как делать маржинальный ордер на BitMex. Похоже, через REST его сделать нельзя :(
Ответить
Да не оскудеет tradingview.com с такими как Noro
Ответить
очень круто!
Ответить
strategy.entry("buy", strategy.long, 10, when=strategy.position_size <= 0) и
strategy.entry("sell", strategy.short, 10, when=strategy.position_size > 0) соответственно
Ответить
SiMBa_R38 SiMBa_R38
@SiMBa_R38, хотя тогда наверное пирамидинг не заработает
Ответить
RU Русский
EN English
EN English (UK)
EN English (IN)
DE Deutsch
FR Français
ES Español
IT Italiano
PL Polski
SV Svenska
TR Türkçe
PT Português
ID Bahasa Indonesia
MS Bahasa Melayu
TH ภาษาไทย
VI Tiếng Việt
JA 日本語
KO 한국어
ZH 简体中文
ZH 繁體中文
AR العربية
HE עברית
Домой Скринер акций Скринер форекс Скринер криптовалют Экономический календарь О проекте Особенности Правила поведения Модераторы Решения для сайтов и брокеров Виджеты Компонент графиков Отзывы и предложения Блог и новости ЧаВо Справка и Wiki Твиттер
Профиль Настройки профиля Счёт и оплата Мои запросы в поддержку Связаться с поддержкой Опубликовано идей Подписчики Подписан Личные сообщения Чат Выйти