장기 및 단기 모두에 대한 포괄적인 선물 자동 거래 전략

저자:차오장, 날짜: 2024-02-18 14:25:04
태그:

img

이 전략은 혁신적인장기 및 단기 모두에 대한 포괄적인 선물 자동 거래 전략. 슈퍼 트렌드, QQE 및 트렌드 인디케이터 A-V2를 통합하여 자동으로 거래 신호를 발견하고 긴 / 짧은 거래를합니다. 이 전략은 주요 시장 추세를 식별하고 좋은 위험 통제로 안정적인 이익을 달성하는 것을 목표로합니다.

전략 원칙

이 전략은 세 가지 주요 부분으로 구성됩니다.

  1. 슈퍼트렌드 지표는 시장의 주요 추세를 결정합니다. 가격이 상승 추세선 이상으로 돌파하면 상승 추세를 나타냅니다. 가격이 하락 추세선 아래로 돌파하면 하락 추세를 나타냅니다.

  2. QQE 지표는 RSI를 결합하여 과잉 구매/ 과잉 판매 상태를 식별합니다. 역동적 과잉 구매/ 과잉 판매 수준은 RSI 평균과 표준편차를 기반으로 계산됩니다. 상위 레벨 이상의 RSI는 과잉 구매 신호를 나타냅니다. 하위 레벨 이하의 RSI는 과잉 판매 신호를 나타냅니다.

  3. 트렌드 인디케이터 A-V2는 빠른 EMA와 느린 EMA를 비교하여 트렌드를 판단합니다. 빠른 EMA가 느린 EMA보다 높을 때 구매 신호를 발송합니다.

시장 방향을 판단 할 때, 슈퍼 트렌드가 상승 추세를 보이고, 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")


더 많은