Стратегия SSL-канала с ATR и управлением деньгами

Автор:Чао Чжан, Дата: 2023-11-23 10:26:58
Тэги:

img

Обзор

Это стратегия обратного тестирования, основанная на индикаторе канала SSL, интегрированная с такими функциями, как ATR stop loss, ATR take profit и управление деньгами, чтобы облегчить более всеобъемлющее тестирование стратегии канала SSL.

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

Индикатор SSL-каналов

Индикатор канала SSL состоит из средней линии канала и полос канала. Средняя линия канала содержит верхний трек и нижний трек, которые обычно представляют собой простые скользящие средние высоких и низких цен в течение ретроспективного периода.

Когда цена приближается к верхней полосе, это указывает на перекупленные условия; когда цена приближается к нижней полосе, это сигнализирует о перепроданных условиях.

Параметр SSL-канала настроен наssl_period=16в этой стратегии.

ATR Стоп-лосс/приобретение прибыли

Средний истинный диапазон (ATR) измеряет волатильность рынка и может использоваться для определения уровня стоп-лосса и уровня прибыли.

Эта стратегия использует 14-периодный ATR (atr_period=14) и динамические множителиatr_stop_factor=1.5иatr_target_factor=1.0устанавливать адаптивные стоп-лосс и получать прибыль на основе волатильности.

Он также проверяет, имеет ли прибор точность до 2-х десятичных знаков (two_digitДля таких пар, как золото и JPY, нужно соответствующим образом скорректировать стоп и таргет.

Управление деньгами

Управление деньгами осуществляется посредствомposition_size(фиксированное размещение) иriskМодуль управления деньгами будет включен, когдаuse_mm=true.

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

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

  • Канал SSL эффективен в захвате сигналов обворота тренда
  • Стойки на основе ATR регулируются автоматически на основе волатильности
  • Управление деньгами помогает контролировать риск во всех отраслях

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

  • Сигналы SSL-каналов могут быть не полностью надежными, могут возникать ложные сигналы
  • Остановки ATR могут оказаться слишком широкими или слишком узкими
  • Неправильные настройки управления деньгами могут привести к чрезмерному размеру позиций или низкой эффективности

Эти риски могут быть смягчены:

  1. Добавление фильтров для подтверждения сигналов и предотвращения ложных записей
  2. Настройка параметра периода ATR для оптимальных уровней стоп-лосса/прибыли
  3. Испытание различных параметров управления деньгами для идеального размещения позиций

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

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

  1. Оптимизировать параметры SSL-каналов для лучшей производительности
  2. Улучшить или заменить механизм остановки ATR
  3. Добавить индикаторы фильтрации, чтобы избежать ненужных сделок
  4. Включить размеры позиций для максимизации корректированной по риску доходности
  5. Параметры тонкой настройки для различных инструментов
  6. Добавление количественных инструментов для более полного тестирования

При систематической оптимизации эта стратегия может стать надежной алгоритмической торговой системой.

Заключение

Эта стратегия сочетает в себе канал SSL для тренда, ATR для контроля рисков и управление деньгами для размещения позиций. Комплексное бэкстестирование облегчает оценку и улучшение стратегии в автоматизированную торговую систему. Также есть возможность для улучшений, таких как добавление фильтров, оптимизация параметров и расширение функциональности. В целом, это формирует прочную основу для создания алгоритмических торговых стратегий.


/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 2h
basePeriod: 15m
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/
// © comiclysm

//@version=4
strategy("SSL Backtester", overlay=false)

//--This strategy will simply test the effectiveness of the SSL using
//--money management and an ATR-derived stop loss

//--USER INPUTS

two_digit = input(false, "Check this for 2-digit pairs (JPY, Gold, Etc)")
ssl_period = input(16, "SSL Period")
atr_period = input(14, "ATR Period")
atr_stop_factor = input(1.5, "ATR Stop Loss Factor")
atr_target_factor = input(1.0, "ATR Target Factor")
use_mm = input(true, "Check this to use Money Management")
position_size = input(1000, "Position size (for Fixed Risk)")
risk = input(0.01, "Risk % in Decimal Form")

//--INDICATORS------------------------------------------------------------

    //--SSL
    
sma_high = sma(high, ssl_period)
sma_low = sma(low, ssl_period)
ssl_value = 0
ssl_value := close > sma_high ? 1 : close < sma_low ? -1 : ssl_value[1]
ssl_low = ssl_value < 0 ? sma_high : sma_low
ssl_high = ssl_value < 0 ? sma_low : sma_high

    //--Average True Range
    
atr = atr(atr_period)

//--TRADE LOGIC----------------------------------------------------------

signal_long = ssl_value > 0 and ssl_value[1] < 0
signal_short = ssl_value < 0 and ssl_value[1] > 0

//--RISK MANAGMENT-------------------------------------------------------
strategy.initial_capital = 50000
balance = strategy.netprofit + strategy.initial_capital
risk_pips = atr*10000*atr_stop_factor
if(two_digit)
    risk_pips := risk_pips / 100
risk_in_value = balance * risk
point_value = syminfo.pointvalue
risk_lots = risk_in_value / point_value / risk_pips
final_risk = use_mm ? risk_lots * 10000 : position_size

//--TRADE EXECUTION-----------------------------------------------------

if (signal_long)
    stop_loss = close - atr * atr_stop_factor
    target = close + atr * atr_target_factor
    strategy.entry("Long", strategy.long, final_risk)
    strategy.exit("X", "Long", stop=stop_loss, limit=target)
if (signal_short)
    stop_loss = close + atr * atr_stop_factor
    target = close - atr * atr_target_factor
    strategy.entry("Short", strategy.short, final_risk)
    strategy.exit("X", "Short", stop=stop_loss, limit=target)
    
//--PLOTTING-----------------------------------------------------------

plot(ssl_low, "SSL", color.red, linewidth=1)
plot(ssl_high, "SSL", color.lime, linewidth=1)


Больше