Комплексная автоматизированная стратегия торговли фьючерсами как на длинный, так и на короткий срок

Автор:Чао Чжан, Дата: 2024-02-18 14:25:04
Тэги:

img

Эта стратегия является инновационнойКомплексная автоматизированная стратегия торговли фьючерсами как на длинный, так и на короткий срок. Он интегрирует SuperTrend, QQE и Trend Indicator A-V2 для автоматического обнаружения торговых сигналов и совершения длинных/коротких сделок. Эта стратегия направлена на выявление основных рыночных тенденций и достижение стабильной прибыли с хорошим контролем рисков.

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

Стратегия состоит из трех основных частей:

  1. Индикатор SuperTrend определяет основную тенденцию рынка. Когда цена превышает линию восходящего тренда, это указывает на восходящий тренд. Когда цена превышает линию нисходящего тренда, это указывает на нисходящий тренд.

  2. Индикатор QQE объединяет RSI для определения статуса перекупленности/перепроданности. Динамические уровни перекупленности/перепроданности рассчитываются на основе среднего и стандартного отклонения RSI. RSI выше верхнего уровня указывает на сигнал перекупленности, а RSI ниже нижнего уровня указывает на сигнал перепроданности.

  3. Индикатор тренда A-V2 оценивает тренд путем сравнения линий быстрой и медленной EMA.

При оценке направления рынка длинные сигналы запускаются, когда SuperTrend показывает восходящий тренд, QQE не перепродан и происходит сигнал покупки A-V2. Короткие сигналы запускаются, когда возникают противоположные условия.

Преимущества

  1. Использование нескольких индикаторов повышает надежность и уменьшает ложные сигналы.

  2. Автоматическое обнаружение сигнала без ручного вмешательства уменьшает человеческие ошибки.

  3. Органическое сочетание индикаторов обеспечивает эффективный контроль рисков при обнаружении торговых возможностей.

  4. Настраиваемые параметры для удовлетворения потребностей пользователей.

  5. Поддерживать как только длинную, так и длинную/короткую торговлю для обеспечения гибкости.

Риски и решения

  1. Индикаторы могут генерировать ложные сигналы при экстремальных рыночных условиях.

  2. Оптимизируйте с помощью стоп-лосса/прибыли.

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

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

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

  2. Включите больше факторов микроструктуры рынка, таких как объем, чтобы обнаружить лучшие сигналы.

  3. Используйте высокочастотные торговые методы для автоматического отправления заказов.

Заключение

Стратегия сочетает в себе индикаторы для оценки структуры рынка и достижения устойчивой прибыли при контроле рисков. Она учитывает как направление тренда, так и статус перекупа/перепродажи для подробных торговых решений.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//author:盧振興 芙蓉中華中學畢業 育達科技大學畢業碩士
//參考資料 : QQE MOD By:Mihkel00 ,SuperTrend By:KivancOzbilgic , TrendIndicator A-V2 By:Dziwne

strategy("綜合交易策略", shorttitle="Comprehensive Strategy", overlay=true)

// 添加單邊或多空參數
OnlyLong = input(true, title="單邊")

// SuperTrend 参数
PeriodsST = input(9, title="ST ATR Period")
MultiplierST = input(3.9, title="ST ATR Multiplier")
srcST = input(hl2, title="ST Source")

atrST = atr(PeriodsST)
upST = srcST - (MultiplierST * atrST)
upST := close[2] > upST[1] ? max(upST, upST[1]) : upST
dnST = srcST + (MultiplierST * atrST)
dnST := close[2] < dnST[1] ? min(dnST, dnST[1]) : dnST
trendST = 1
trendST := nz(trendST[1], trendST)
trendST := trendST == -1 and close[2] > dnST[1] ? 1 : trendST == 1 and close[2] < upST[1] ? -1 : trendST

// QQE 参数
RSI_PeriodQQE = input(6, title='QQE RSI Length')
SFQQE = input(5, title='QQE RSI Smoothing')
QQE = input(3, title='QQE Fast Factor')
ThreshHoldQQE = input(3, title="QQE Thresh-hold")
srcQQE = input(close, title="QQE RSI Source")

Wilders_PeriodQQE = RSI_PeriodQQE * 2 - 1

RsiQQE = rsi(srcQQE, RSI_PeriodQQE)
RsiMaQQE = ema(RsiQQE, SFQQE)
AtrRsiQQE = abs(RsiMaQQE[1] - RsiMaQQE)
MaAtrRsiQQE = ema(AtrRsiQQE, Wilders_PeriodQQE)
darQQE = ema(MaAtrRsiQQE, Wilders_PeriodQQE) * QQE

basisQQE = sma(RsiMaQQE - 50, 50)
devQQE = 0.35 * stdev(RsiMaQQE - 50, 50)
upperQQE = basisQQE + devQQE
lowerQQE = basisQQE - devQQE

qqeCondition = RsiMaQQE[1] - 50 > upperQQE[1] ? true : RsiMaQQE[1] - 50 < lowerQQE[1] ? false : na

// Trend Indicator A-V2 参数
ma_periodA_V2 = input(52, title="TIA-V2 EMA Period")
oA_V2 = ema(open, ma_periodA_V2)
cA_V2 = ema(close, ma_periodA_V2)
trendIndicatorAV2Condition = cA_V2[1] >= oA_V2[1] ? true : false

// 综合交易逻辑
longCondition = trendST == 1 and qqeCondition and trendIndicatorAV2Condition
shortCondition = trendST == -1 and not qqeCondition and not trendIndicatorAV2Condition

// 针对多单的开平仓逻辑
if (OnlyLong)
    if (longCondition)
        strategy.entry("Buy", strategy.long)        
    else
        strategy.close("Buy")

// 多空都做时的逻辑
if (not OnlyLong)
    if (longCondition)
        strategy.entry("Buy", strategy.long)
    else if (shortCondition)
        strategy.entry("Sell",strategy.short)

    // 添加多空平仓逻辑
    if (not longCondition)
        strategy.close("Buy")
    if (not shortCondition)
        strategy.close("Sell")

// 可视化信号
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition and not OnlyLong, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")


Больше