Trend Sistem SMA Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2024-02-23 12:29:51
Tag:

img

Ringkasan

Strategi ini dinamakan SMA System Trend Following Strategy. Idea utamanya adalah untuk membina isyarat perdagangan berdasarkan garis SMA dengan panjang parameter yang berbeza dan memasuki pasaran pada titik putus, dengan mekanisme stop loss untuk mengawal risiko.

Prinsip Strategi

Strategi ini menggunakan dua garis SMA, SMA1 dan SMA2. Panjang SMA1 adalah 1 dan panjang SMA2 adalah 3. Dengan mengira dua garis SMA ini, apabila SMA1 melintasi di atas SMA2, isyarat beli dihasilkan. Apabila SMA1 melintasi di bawah SMA2, isyarat jual dihasilkan. Ini bertujuan untuk menangkap trend harga.

Secara khusus, strategi menilai hubungan silang antara garis SMA melalui fungsi ta.crossover dan ta.crossunder, menghasilkan pembolehubah longCondition dan shortCondition boolean. Apabila longCondition benar, isyarat beli dihasilkan. Apabila shortCondition benar, isyarat jual dihasilkan. Strategi akan memasuki pasaran pada titik isyarat dan mengemas kini profitAccumulated dan lastTradeProfit pembolehubah untuk mengesan keuntungan terkumpul.

Untuk kawalan risiko, strategi juga menetapkan mekanisme stop loss berdasarkan titik tetap. Jika harga mencapai titik stop loss yang ditetapkan dari titik masuk, ia akan mencetuskan penutupan pesanan stop loss.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah bahawa ia menggunakan keupayaan penjejakan trend garis SMA untuk menangkap perubahan dalam trend harga dengan berkesan. Berbanding dengan strategi garis tunggal, strategi garis ganda dapat menggunakan hubungan silang antara garis untuk menentukan arah trend dan dengan itu menghasilkan isyarat perdagangan. Di samping itu, mekanisme stop loss dapat mengawal kerugian tunggal dengan berkesan.

Analisis Risiko

Risiko utama strategi ini adalah bahawa strategi purata bergerak cenderung menghasilkan isyarat palsu. Apabila harga berayun, garis SMA mungkin sering melintasi, mengakibatkan isyarat perdagangan yang tidak perlu. Pada ketika ini, kerugian besar mungkin berlaku tanpa kerugian berhenti yang berkesan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Sesuaikan parameter SMA untuk mencari kombinasi terbaik panjang purata bergerak melalui backtesting.

  2. Meningkatkan keadaan penapisan dan menetapkan keadaan kejayaan harga berhampiran titik persilangan purata bergerak untuk mengelakkan isyarat palsu.

  3. Pelbagai jenis kaedah stop loss boleh diuji, seperti stop loss mudah alih, pending order stop loss, dll.

  4. Tambah kawalan saiz kedudukan untuk mengoptimumkan kecekapan penggunaan modal.

Kesimpulan

Secara keseluruhan, ini adalah strategi trend berikut yang tipikal. Ia menggunakan hubungan terobosan antara garis SMA untuk menentukan arah trend harga dan memasuki titik perubahan trend. Pada masa yang sama, strategi ini mempunyai fungsi stop loss tetap untuk mengawal risiko. Strategi ini mudah, mudah difahami, tetapi masih memerlukan ujian dan pengoptimuman mendalam sebelum membuat keuntungan yang stabil dalam perdagangan sebenar.


/*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)


Lebih lanjut