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


Дата создания: 2024-02-18 14:25:04 Последнее изменение: 2024-02-18 14:25:04
Копировать: 0 Количество просмотров: 456
1
Подписаться
1166
Подписчики

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

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

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

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

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

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

  3. Trend Indicator A-V2 определяет тренд, рассчитывая положение EMA, где быстрая линия выше медленной.

При определении направления рынка, когда SuperTrend является позитивным, а QQE определяет, что это не перепродажа, а A-V2 является позитивным, выпускается сигнал о покупке; когда 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")