Aliran dinamik berikutan pelbagai penunjuk strategi perdagangan pengambilan untung kelompok

EMA MACD RSI ATR
Tarikh penciptaan: 2025-02-10 14:49:11 Akhirnya diubah suai: 2025-02-10 14:49:11
Salin: 2 Bilangan klik: 378
1
fokus pada
1617
Pengikut

Aliran dinamik berikutan pelbagai penunjuk strategi perdagangan pengambilan untung kelompok

Gambaran keseluruhan

Ini adalah strategi perdagangan kuantitatif yang menggabungkan trend mengikuti dan analisis teknikal. Strategi ini mengesahkan isyarat perdagangan melalui pelbagai petunjuk teknikal, menggunakan mekanisme pengendalian posisi berturut-turut dan dinamik, yang bertujuan untuk menangkap trend utama di pasaran sambil mengawal risiko. Strategi ini mengintegrasikan beberapa petunjuk teknikal seperti EMA, MACD dan RSI untuk mengenal pasti peluang perdagangan yang berpotensi melalui persilangan dan perpindahan antara petunjuk.

Prinsip Strategi

Logik perdagangan strategi ini adalah berdasarkan kepada beberapa elemen utama:

  1. Isyarat masuk menggunakan penapisan pelbagai petunjuk teknikal: EMA pantas dengan penyambungan EMA perlahan, isyarat MACD Goldfork / Deadfork dan isyarat RSI overbought dan oversold. Masuk ke banyak kepala memerlukan EMA pantas melalui EMA perlahan, MACD Goldfork dan RSI lebih rendah daripada 70; masuk ke kosong memerlukan EMA pantas melalui EMA perlahan, MACD Deadfork dan RSI lebih tinggi daripada 30.
  2. Kawalan risiko menggunakan stop loss peratusan tetap, yang ditetapkan pada 5% daripada harga pembukaan.
  3. Mekanisme penutupan sekumpulan: penutupan pertama terletak pada 8% dan penutupan kedua terletak pada 12%, menyesuaikan kedudukan penutupan kedua secara dinamik untuk menyesuaikan diri dengan turun naik pasaran.
  4. Pengurusan kedudukan berdasarkan pengiraan ATR dinamik, risiko maksimum tunggal dikawal pada 5%, kedudukan maksimum tidak melebihi 40% daripada kepentingan hak akaun.

Kelebihan Strategik

  1. “Multiple technical indicators cross-verification” (Pengesahan silang pelbagai petunjuk teknikal) akan menapis isyarat palsu dan meningkatkan kualiti transaksi.
  2. Menggunakan mekanisme penangguhan kumpulan, ia boleh mengunci sebahagian daripada keuntungan, tetapi ia tidak akan terlepas sepenuhnya daripada keuntungan yang diperoleh.
  3. Sistem pengurusan kedudukan dinamik dapat menyesuaikan skala perdagangan secara automatik mengikut turun naik pasaran, dan mengawal risiko dengan berkesan.
  4. Sistem kawalan angin yang baik, termasuk berhenti tetap, kedudukan dinamik dan had maksimum memegang, memastikan kestabilan jangka panjang strategi.
  5. Logik strategi jelas, parameter boleh disesuaikan, mudah untuk dioptimumkan mengikut keadaan pasaran yang berbeza.

Risiko Strategik

  1. Dalam pasaran yang berubah-ubah dengan cepat, anda mungkin sering menghadapi masalah berhenti rugi, perlu berhati-hati untuk menyesuaikan parameter atau menangguhkan perdagangan apabila kadar turun naik pasaran terlalu tinggi.
  2. Oleh itu, ia disyorkan untuk menambah mekanisme penghakiman horizontal.
  3. Penapisan pelbagai indikator boleh menyebabkan kehilangan sebahagian daripada pasaran, dan mungkin kurang baik dalam pasaran yang kuat berbanding dengan strategi satu indikator.
  4. Mekanisme penutupan sekatan sekatan mungkin tidak dapat menyelesaikan kedudukan dalam masa yang tepat dalam pasaran yang berbalik dengan cepat, dan perlu dipertimbangkan untuk menambah keputusan isyarat berbalik.

Arah pengoptimuman strategi

  1. Pertimbangkan untuk memperkenalkan mekanisme penapisan kadar turun naik pasaran, mengurangkan kedudukan atau menangguhkan dagangan jika kadar turun naik terlalu tinggi.
  2. Anda boleh meningkatkan penilaian kekuatan trend, menyesuaikan kedudukan hentian semasa trend kuat untuk mendapatkan lebih banyak keuntungan trend.
  3. Mengoptimumkan sistem pengurusan kedudukan, pertimbangkan untuk memasukkan penyesuaian kedudukan dinamik berdasarkan kadar keuntungan dan kerugian.
  4. Menambah mekanisme penilaian keadaan pasaran, menggunakan kombinasi parameter yang berbeza dalam keadaan pasaran yang berbeza.
  5. Pertimbangkan untuk menambah petunjuk kuantiti transaksi untuk meningkatkan kebolehpercayaan isyarat perdagangan.

ringkaskan

Strategi ini membina sistem perdagangan yang agak sempurna dengan penggunaan gabungan pelbagai petunjuk teknikal, digabungkan dengan penghadaman berturut-turut dan pengurusan kedudukan yang dinamik. Kelebihan strategi ini adalah kawalan risiko yang komprehensif, kebolehpercayaan isyarat perdagangan yang tinggi, tetapi ada kelemahan yang mungkin terlepas beberapa situasi. Dengan pengoptimuman berterusan dan penyesuaian parameter, strategi ini dijangka mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran.

Kod sumber strategi
/*backtest
start: 2024-02-10 00:00:00
end: 2025-02-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Hang Strategy Aggressive", overlay=true, initial_capital=1000, currency=currency.USDT, default_qty_type=strategy.cash, default_qty_value=100)

// === 参数设置 ===
fastLength = input.int(5, "快速EMA长度")
slowLength = input.int(15, "慢速EMA长度")
rsiLength = input.int(7, "RSI长度")
atrPeriod = input.int(10, "ATR周期")
leverageMultiple = input.float(3.0, "杠杆倍数", minval=1.0, step=0.5)

// === 止盈止损参数 ===
stopLossPercent = input.float(5.0, "止损百分比", minval=1.0, step=0.5)
firstTakeProfitPercent = input.float(8.0, "第一止盈点百分比", minval=1.0, step=0.5)
secondTakeProfitPercent = input.float(12.0, "第二止盈点百分比", minval=1.0, step=0.5)
firstTakeProfitQtyPercent = input.float(50.0, "第一止盈仓位百分比", minval=1.0, maxval=100.0, step=5.0)

// === 技术指标 ===
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
superFastEMA = ta.ema(close, 3)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrPeriod)

// === 趋势判断 ===
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
macdCross = (macdLine > signalLine) and (macdLine[1] < signalLine[1])
macdCrossDown = (macdLine < signalLine) and (macdLine[1] > signalLine[1])

// === 交易信号 ===
longCondition = (fastEMA > slowEMA) and macdCross and (rsi < 70)
shortCondition = (fastEMA < slowEMA) and macdCrossDown and (rsi > 30)

// === 平仓信号 ===
exitLong = shortCondition or (fastEMA < slowEMA)
exitShort = longCondition or (fastEMA > slowEMA)

// === 仓位管理 ===
maxRiskPerTrade = 0.05
basePosition = strategy.equity * maxRiskPerTrade
atrAmount = atr * close
riskPosition = basePosition / atrAmount * leverageMultiple
positionSize = math.min(riskPosition, strategy.equity * 0.4 / close)

// === 交易状态变量 ===
var isLong = false
var isShort = false
var partialTpTriggered = false
var float stopPrice = na
var float firstTpPrice = na
var float secondTpPrice = na
var float firstTpQty = na

// === 交易执行 ===
// 多头入场
if (longCondition and not isLong and not isShort)
    strategy.entry("多", strategy.long, qty=positionSize)
    isLong := true
    partialTpTriggered := false

// 空头入场
if (shortCondition and not isShort and not isLong)
    strategy.entry("空", strategy.short, qty=positionSize)
    isShort := true
    partialTpTriggered := false

// === 止盈止损逻辑 ===
if (strategy.position_size > 0)  // 多仓
    stopPrice := strategy.position_avg_price * (1 - stopLossPercent/100)
    firstTpPrice := strategy.position_avg_price * (1 + firstTakeProfitPercent/100)
    // 只在未触发第一止盈时计算第二止盈价格
    if not partialTpTriggered
        secondTpPrice := strategy.position_avg_price * (1 + secondTakeProfitPercent/100)
    
    if (close[1] <= stopPrice or low <= stopPrice)
        strategy.close_all("多止损")
        isLong := false
        partialTpTriggered := false
    
    if (not partialTpTriggered and (close[1] >= firstTpPrice or high >= firstTpPrice))
        strategy.order("多第一止盈", strategy.short, qty=firstTpQty)
        partialTpTriggered := true
        // 在这里重新计算第二止盈价格
        secondTpPrice := high * (1 + 0.04)  // 基于当前最高价再上涨4%
    
    if (close[1] >= secondTpPrice or high >= secondTpPrice)
        strategy.close_all("多第二止盈")
        isLong := false
        partialTpTriggered := false

if (strategy.position_size < 0)  // 空仓
    stopPrice := strategy.position_avg_price * (1 + stopLossPercent/100)
    firstTpPrice := strategy.position_avg_price * (1 - firstTakeProfitPercent/100)
    // 只在未触发第一止盈时计算第二止盈价格
    if not partialTpTriggered
        secondTpPrice := strategy.position_avg_price * (1 - secondTakeProfitPercent/100)
    
    if (close[1] >= stopPrice or high >= stopPrice)
        strategy.close_all("空止损")
        isShort := false
        partialTpTriggered := false
    
    if (not partialTpTriggered and (close[1] <= firstTpPrice or low <= firstTpPrice))
        strategy.order("空第一止盈", strategy.long, qty=firstTpQty)
        partialTpTriggered := true
        // 在这里重新计算第二止盈价格
        secondTpPrice := low * (1 - 0.04)  // 基于当前最低价再下跌4%
    
    if (close[1] <= secondTpPrice or low <= secondTpPrice)
        strategy.close_all("空第二止盈")
        isShort := false
        partialTpTriggered := false

// === 其他平仓条件 ===
if (exitLong and isLong)
    strategy.close_all("多平仓")
    isLong := false
    partialTpTriggered := false

if (exitShort and isShort)
    strategy.close_all("空平仓")
    isShort := false
    partialTpTriggered := false

// === 绘图 ===
plot(fastEMA, "快速EMA", color=color.blue)
plot(slowEMA, "慢速EMA", color=color.red)
plot(superFastEMA, "超快EMA", color=color.green)

// 绘制止盈止损线
plot(strategy.position_size != 0 ? strategy.position_avg_price : na, "开仓价", color=color.yellow)
plot(strategy.position_size != 0 ? stopPrice : na, "止损线", color=color.red)
plot(strategy.position_size != 0 ? firstTpPrice : na, "第一止盈线", color=color.green)
plot(strategy.position_size != 0 ? secondTpPrice : na, "第二止盈线", color=color.blue)