Strategi mengikut arah aliran berdasarkan sistem purata bergerak SMA


Tarikh penciptaan: 2024-02-23 12:29:51 Akhirnya diubah suai: 2024-02-23 12:29:51
Salin: 0 Bilangan klik: 613
1
fokus pada
1617
Pengikut

Strategi mengikut arah aliran berdasarkan sistem purata bergerak SMA

Gambaran keseluruhan

Strategi ini dinamakan strategi trend-tracking yang berpusat pada sistem rata-rata SMA, dan idea utamanya adalah untuk membina isyarat perdagangan menggunakan rata-rata SMA dengan panjang parameter yang berbeza, untuk masuk pada titik pecah, sambil menggabungkan risiko kawalan mekanisme hentian.

Prinsip Strategi

Strategi ini menggunakan dua garis rata-rata SMA, iaitu SMA1 dan SMA2. Di antaranya, panjang SMA1 adalah 1, dan panjang SMA2 adalah 3. Dengan mengira kedua-dua garis rata-rata SMA, strategi ini menghasilkan isyarat beli ketika melewati SMA2 di SMA1 dan menghasilkan isyarat jual ketika melewati SMA2 di bawah SMA1 untuk menangkap trend harga.

Khususnya, strategi menilai hubungan penembusan rata-rata SMA melalui fungsi ta.crossover dan ta.crossunder, yang menghasilkan pembolehubah longCondition dan shortCondition. Apabila longCondition benar, ia menghasilkan isyarat beli; apabila shortCondition benar, ia menghasilkan isyarat jual. Strategi akan masuk pada titik isyarat, sambil mengemas kini pembolehubah profitAccumulated dan lastTradeProfit untuk mengesan keuntungan akumulasi.

Untuk mengawal risiko, strategi juga menetapkan mekanisme penangguhan berdasarkan bilangan titik tetap. Bermula dari titik masuk, jika harga mencapai titik penangguhan yang ditetapkan, maka akan mencetuskan kedudukan kosong untuk pesanan penangguhan.

Kelebihan Strategik

Kelebihan terbesar strategi ini adalah dengan menggunakan fungsi trend pengesanan garis rata SMA, untuk menangkap perubahan trend harga dengan berkesan. Berbanding dengan strategi garis rata tunggal, strategi garis rata dua dapat menggunakan hubungan silang antara garis rata untuk menentukan arah trend, sehingga menghasilkan isyarat perdagangan. Selain itu, strategi ini menyertakan mekanisme hentikan kerugian yang dapat mengawal kerugian tunggal dengan berkesan.

Analisis risiko

Risiko utama strategi ini adalah bahawa strategi garis rata mudah menghasilkan isyarat palsu. Apabila harga bergolak, garis rata SMA mungkin sering berselisih, menyebabkan isyarat perdagangan yang tidak perlu.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Menyesuaikan parameter SMA untuk mencari kombinasi panjang garis purata yang terbaik. Parameter yang paling baik boleh diperoleh dengan mengkaji semula.

  2. Menambah syarat penapisan, menetapkan syarat penembusan harga berhampiran titik persilangan garis rata, untuk mengelakkan isyarat palsu.

  3. Pelbagai jenis penangguhan boleh diuji, seperti penangguhan bergerak, penangguhan tunggal, dan sebagainya.

  4. Meningkatkan kawalan saiz kedudukan dan mengoptimumkan penggunaan dana.

ringkaskan

Strategi ini secara keseluruhannya adalah strategi pengesanan trend yang tipikal. Ia menggunakan hubungan pecah pada garis rata-rata SMA untuk menentukan arah trend harga dan masuk pada titik perubahan trend.

Kod sumber strategi
/*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"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cesarpieres72

//@version=5
strategy("Estrategia SMA y Ganancias Acumuladas con Stop Loss", shorttitle="SMA_Ganancias", overlay=true)

// Definir las variables de las medias móviles
sma1_length = input(1, title="SMA 1 Longitud")
sma2_length = input(3, title="SMA 2 Longitud")

// Calcular las medias móviles
sma1 = ta.sma(close, sma1_length)
sma2 = ta.sma(close, sma2_length)

// Condiciones para las señales de compra y venta
longCondition = ta.crossover(sma1, sma2)
shortCondition = ta.crossunder(sma1, sma2)

// Acumular las ganancias
var float profitAccumulated = 0.0
var float lastTradeProfit = na

if (longCondition)
    strategy.entry("Buy", strategy.long)
    lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
    profitAccumulated := strategy.netprofit

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
    profitAccumulated := strategy.netprofit

// Mostrar las señales en el gráfico
plot(sma1, color=color.blue, title="SMA 1")
plot(sma2, color=color.red, title="SMA 2")

// Añadir stop loss
stopLossPips = input(5000, title="Stop Loss (en pips)")
stopLossPrice = strategy.position_avg_price * (1 - stopLossPips * syminfo.mintick)
strategy.exit("SL", "Buy", stop=stopLossPrice)