Стратегия покупки с двойными показателями

Автор:Чао Чжан, Дата: 2024-01-04 17:39:13
Тэги:

img

Обзор

Эта стратегия определяет возможности покупки путем сочетания объема торговли и индикаторов RSI. Она управляет позициями с использованием поэтапных целей получения прибыли для постепенного закрепления прибыли. Стратегия хорошо работает на рынках с диапазоном и может эффективно улавливать повторяющиеся сигналы покупки в пределах небольших колебаний цен.

Логика стратегии

Стратегия использует два индикатора для выявления сигналов покупки - объем торговли и RSI. В частности, она становится длинной, когда объем превышает 2,5 раза средний объем 70 дней, вместе с RSI, падающим ниже 30 (уровни перепродажи).

После установления длинной позиции стратегия устанавливает 5 целей получения прибыли на уровне 0,4%, 0,6%, 0,8%, 1,0% и 1,2%; она постепенно закрывает позиции на основе коэффициента позиции (20%, 40%, 60%, 80% и 100%) до полного выхода.

Принимая прибыль поэтапно, он стремится зафиксировать прибыль на фоне незначительных подъемных движений, вместо того, чтобы ждать более крупных ходов, которые могут не осуществиться.

Анализ преимуществ

Ключевыми преимуществами этой стратегии являются:

  1. Использование двойных индикаторов предотвращает ложные прорывы.

  2. Приобретение прибыли в партии позволяет максимизировать небольшие доходы в пределах диапазонов.

  3. Частые небольшие прибыли могут быть зафиксированы при отсутствии тренда.

  4. Широкий стоп-лосс позволяет рынкам выйти из краткосрочных ретриксов.

Анализ рисков

Основными рисками являются:

  1. Двойная неверная интерпретация сигнала приводит к ложным записям.

  2. Оптимизация уровня прибыли и коэффициентов позиций помогает.

  3. Широкие остановки приводят к потенциально большим потерям на одной сделке.

  4. Сильные тенденции рынков создают риски направленного уклонения.

  5. Высокая частота торговли увеличивает затраты на транзакции.

Руководство по оптимизации

Возможные направления оптимизации включают:

  1. Оптимизация объема и комбинации RSI для уменьшения ложных сигналов, добавление подтверждений, таких как MACD и KDJ.

  2. Испытание различных уровней прибыли и соотношения позиций для идеальных конфигураций, потенциально с динамическими механизмами.

  3. Внедрение правил размещения позиций для сокращения максимального риска на одну сделку с помощью систем управления рисками.

  4. Включение показателей тренда для выявления обратных сдвигов для своевременной остановки потерь.

  5. Использование алгоритмического обратного тестирования для быстрой итерации параметров для лучших конфигураций.

  6. Учиться у институциональных моделей управления сдвигом/затратами в сфере финансовых операций с высоким оборотом, чтобы повысить эффективность.

Заключение

Эта двойная индикаторная стратегия реверсии среднего показателя определяет нижние сигналы с ростом объема и перепроданным RSI для покупки, получая постепенную прибыль среди диапазонов через поэтапные выходы. Она часто приносит прибыль, не требуя больших пробегов. Недостатки включают риски неправильной интерпретации сигнала и высокий оборот. Оптимизация подтверждения и контроль рисков / затрат улучшают устойчивость. Отлично подходит для краткосрочного получения прибыли на нестабильных рынках.


/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wielkieef

//@version=5

strategy(title='BTFD strategy [3min]', overlay=true, pyramiding=5, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)


// Volume

vol_sma_length = input.int(70, title='Volume lenght  ', minval=1)
Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5


// Rsi

rsi_lenght = input.int(20, title='RSI lenght', minval=0)
rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght)
rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght)
rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down)

rsi_overs = rsi_value <= 30
rsi_overb = rsi_value >= 70


// logic

tp_1 = input.float(0.4,"  TP 1", minval=0.1, step=0.1)
tp_2 = input.float(0.6,"  TP 2", minval=0.2, step=0.1)
tp_3 = input.float(0.8,"  TP 3", minval=0.3, step=0.1)
tp_4 = input.float(1.0,"  TP 4", minval=0.4, step=0.1)
tp_5 = input.float(1.2,"  TP 5", minval=0.5, step=0.1)

q_1 = input.int(title='  % TP 1 Q ', defval=20,  minval=1, step=10)
q_2 = input.int(title='  % TP 2 Q ', defval=40,  minval=1, step=10)
q_3 = input.int(title='  % TP 3 Q ', defval=60,  minval=1, step=10)
q_4 = input.int(title='  % TP 4 Q ', defval=80,  minval=1, step=10)
q_5 = input.int(title='  % TP 5 Q ', defval=100, minval=1, step=10)

sl = input.float(5.0, '% Stop Loss', step=0.1)

long_cond = Volume_condt and rsi_overs

// this code is from author RafaelZioni, modified by wielkieef
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
// --------------------------------------------------------------------------------------------------------------------

if  long_cond
    strategy.entry('BUY', strategy.long)

strategy.exit('TP 1', qty_percent=q_1, profit=per(tp_1), loss=per(sl) )
strategy.exit('TP 2', qty_percent=q_2, profit=per(tp_2), loss=per(sl) )
strategy.exit('TP 3', qty_percent=q_3, profit=per(tp_3), loss=per(sl) )
strategy.exit('TP 4', qty_percent=q_4, profit=per(tp_4), loss=per(sl) )
strategy.exit('TP 5', qty_percent=q_5, profit=per(tp_5), loss=per(sl) )

 
// by wielkieef


Больше