長期と短期の両方のための包括的な先物自動取引戦略

作者: リン・ハーンチャオチャン開催日:2024年2月18日 14:25:04
タグ:

img

この戦略は革新的な長期と短期の両方のための包括的な先物自動取引戦略. この戦略は,スーパートレンド,QQEおよびトレンドインジケーターA-V2を統合し,自動で取引信号を発見し,ロング/ショートトレードを行う.この戦略は,主要な市場トレンドを特定し,良好なリスク制御で安定した利益を達成することを目的としています.

戦略原則

戦略は主に3つの部分で構成されています.

  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")


もっと