Прочная и надежная стратегия позиции скользящей средней SMA


Дата создания: 2023-12-18 17:44:16 Последнее изменение: 2023-12-18 17:44:16
Копировать: 0 Количество просмотров: 627
1
Подписаться
1621
Подписчики

Прочная и надежная стратегия позиции скользящей средней SMA

Обзор

Эта стратегия является простой стратегией удержания позиции, основанной на средней линии SMA. Открывать позиции на коротких линиях SMA, когда они пересекают длинные линии SMA, и открывать позиции на коротких линиях SMA, когда они пересекают длинные линии SMA, и закрывать позиции на коротких линиях SMA, когда они пересекают длинные линии SMA.

Стратегический принцип

Эта стратегия использует две средние линии SMA, одну краткосрочную 20-дневную и одну долгосрочную 50-дневную. Краткосрочная линия позволяет быстрее улавливать тенденции изменения цен, а долгосрочная линия фильтрует краткосрочный шум.

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

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

Эта стратегия имеет следующие преимущества:

  1. Простые действия, понятные, низкий порог.
  2. Относительно стабильный, используя преимущества средней линии SMA
  3. Долгое хранение позиций, не подверженное воздействию краткосрочного рынка
  4. Меньшее количество параметров, которые можно настроить, чтобы легко оптимизировать и найти оптимальную комбинацию параметров

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

Также существуют следующие риски:

  1. Когда рынок находится в состоянии длительного колебания, возможны большие потери.
  2. Средняя SMA является задержанной и не может вовремя улавливать изменения цен
  3. Невозможность эффективного использования краткосрочного подъема для получения прибыли от падения
  4. Неконтролируемый размер убытков

Направление оптимизации

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

  1. Пришло время присоединиться к MACD, чтобы оценить восстановление дна и сократить потери в условиях шока
  2. Тестирование среднелинейных комбинаций SMA с различными параметрами для поиска оптимальных параметров
  3. Добавление внутренних показателей для оценки отклонения от тенденции и повышения точности открытия позиций
  4. Увеличение стратегии стоп-лосса и контроль за единичными убытками

Подвести итог

В целом, стратегия SMA является стабильной, простой, удобной для использования и подходит для начинающих трейдеров. По мере развития количественной торговли, стратегия может быть оптимизирована с помощью дополнительных показателей и технических средств, чтобы получить лучшие результаты.

Исходный код стратегии
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Zlema Strateg Long 5m', overlay=true )

// FUNCTIONS

Atr(p) =>
    atr = 0.
    Tr = math.max(high - low, math.max(math.abs(high - close[1]), math.abs(low - close[1])))
    atr := nz(atr[1] + (Tr - atr[1]) / p, Tr)
    atr

// ZLEMA
length = input(title='Length', defval=14)
highlightMovements = input(title='Highlight Movements ?', defval=true)
src = input(title='Source', defval=close)

lag = math.floor((length - 1) / 2)

zlema = ta.ema(src + src - src[lag], length)

zlemaColor = highlightMovements ? zlema > zlema[1] ? color.green : color.red : #6d1e7f
plot(zlema, title='ZLEMA', linewidth=2, color=zlemaColor, transp=0)


// TAKE PROFIT AND STOP LOSS
long_tp1_inp = input.float(1, title='Long Take Profit 1 %', step=0.1) / 100
long_tp1_qty = input.int(10, title='Long Take Profit 1 Qty', step=1)

long_tp2_inp = input.float(5, title='Long Take Profit 2%', step=0.1) / 100
long_tp2_qty = input.int(50, title='Long Take Profit 2 Qty', step=1)

long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp)
long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp)




// Stop Loss
multiplier = input.float(2.2, 'SL Mutiplier', minval=1, step=0.1)
ATR_period = input.int(17, 'ATR period', minval=1, step=1)

// Strategy
entry_long = zlema > zlema[1]
entry_price_long = ta.valuewhen(entry_long, close, 0)
SL_floating_long = entry_price_long - multiplier * Atr(ATR_period)
exit_long = zlema < zlema[1]

///// BACKTEST PERIOD ///////
testStartYear = input(2022, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(9999, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(31, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

if testPeriod()
    strategy.entry('long', strategy.long, comment='Long', when=entry_long)
    strategy.exit('TP1', 'long', qty_percent=long_tp1_qty, limit=long_take_level_1)  //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
    strategy.exit('TP2', qty_percent=long_tp2_qty, limit=long_take_level_2)  //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
    strategy.close('long', when=exit_long, comment='exit long')


// LONG POSITION
plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='1st Long Take Profit')
plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='2nd Long Take Profit')
plot(strategy.position_size > 0 ? SL_floating_long : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Stop Loss')


if testPeriod()
    strategy.entry('long', strategy.long, comment='Long', when=entry_long)


// LONG POSITIONplot(strategy.position_size > 0 ? SL_floating_long : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Stop Loss')