Динамическая стратегия ре-входа

Автор:Чао Чжан, Дата: 2023-12-19 13:56:55
Тэги:

img

Обзор

Эта стратегия является торговой системой, которая генерирует сигналы покупки на основе скользящих средних кроссоверов и еженедельного индекса товарного канала (CCI) или еженедельного среднего направленного индекса (ADX). Она генерирует сигналы покупки, когда быстрая скользящая средняя пересекает медленную скользящую среднюю и когда еженедельный CCI и / или еженедельный ADX соответствуют определенным условиям.

Стратегия также позволяет динамическое повторное вхождение, что означает, что она может открыть новые длинные позиции, если цена выходит выше трех скользящих средних после выхода.

Принцип стратегии

Скрипт определяет условия для генерации сигналов покупки. Он проверяет два условия для действительного сигнала покупки:

  • Быстрый скользящий средний пересекает медленный скользящий средний
  • Пользователь может выбрать для фильтрации сделок с помощью еженедельного CCI или еженедельного ADX

Динамический повторный вход:Если нет активной длинной позиции и цена выше всех трех скользящих средних, открывается новая длинная позиция.

Условия выхода:Если цена закрытия упадет ниже третьей скользящей средней, сценарий закрывает длинную позицию.

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

Преимущества этой стратегии включают:

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

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

Риски этой стратегии включают:

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

Решения:

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

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

Эта стратегия может быть оптимизирована путем:

  1. Испытание большего количества комбинаций технических показателей для поиска лучшего времени вступления
  2. Оптимизация параметров для поиска лучших комбинаций параметров
  3. Добавление механизмов остановки потерь для контроля одиночных потерь
  4. Добавление размеров позиций для увеличения/уменьшения позиций на основе рыночных условий

Резюме

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


/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy Only Strategy with Dynamic Re-Entry and Exit", overlay=true)

// Input Parameters
fast_length = input(20, title="Fast Moving Average Length")
slow_length = input(30, title="Slow Moving Average Length")
third_ma_length = input(100, title="Third Moving Average Length")
cci_period = input(14, title="CCI Period for Weekly CCI")
use_cci = input(true, title="Use CCI for Entry")
use_adx = input(true, title="Use ADX for Entry")
adx_length = input(14, title="ADX Length")
adx_threshold = input(25, title="ADX Threshold")

// Calculate Moving Averages
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
third_ma = ta.sma(close, third_ma_length)

// Weekly Commodity Channel Index (CCI) with user-defined period
weekly_cci = request.security(syminfo.tickerid, "W", ta.cci(close,  cci_period))

// Weekly Average Directional Index (ADX)
dirmov = hlc3
plus = ta.change(dirmov) > 0 ? ta.change(dirmov) : 0
minus = ta.change(dirmov) < 0 ? -ta.change(dirmov) : 0
trur = ta.rma(ta.tr, adx_length)
plusDI = ta.rma(plus, adx_length) / trur * 100
minusDI = ta.rma(minus, adx_length) / trur * 100
sum = plusDI + minusDI
DX = sum == 0 ? 0 : math.abs(plusDI - minusDI) / sum * 100
ADX = ta.rma(DX, adx_length)

// Entry Conditions (Buy Only and Weekly CCI > 100 and/or Weekly ADX > 25)
cci_condition = use_cci ? (weekly_cci > 100) : false
adx_condition = use_adx ? (ADX > adx_threshold) : false
long_condition = ta.crossover(fast_ma, slow_ma) and (cci_condition or adx_condition)

// Exit Condition and Dynamic Re-Entry
exit_condition = close < third_ma
re_entry_condition = close > fast_ma and close > slow_ma and close > third_ma and weekly_cci > 100

// Entry and Exit Signals
strategy.entry("Long", strategy.long, when=long_condition)
strategy.close("Long", when=exit_condition)

// Dynamic Re-Entry and Exit
if strategy.position_size == 0 and re_entry_condition
    strategy.entry("Long", strategy.long)

if strategy.position_size > 0 and close < third_ma
    strategy.close("Long")

// Plot Weekly CCI and ADX for reference
plot(weekly_cci, title="Weekly CCI", color=color.orange)
plot(ADX, title="Weekly ADX", color=color.blue)


Больше