Berdasarkan strategi klasik Larry Connors


Tarikh penciptaan: 2023-10-27 16:32:19 Akhirnya diubah suai: 2023-10-27 16:32:19
Salin: 1 Bilangan klik: 660
1
fokus pada
1617
Pengikut

Berdasarkan strategi klasik Larry Connors

Gambaran keseluruhan

Strategi ini adalah berdasarkan kepada idea strategi klasik Larry Connors, menggunakan sistem dua hala yang sama untuk menangkap pergerakan garis tengah dan pendek di pasaran, untuk melaksanakan strategi operasi yang aman di kawasan yang terlalu banyak dibeli dan dijual.

Prinsip Strategi

  1. Gunakan RSI 2 kitaran untuk menentukan sama ada harga saham berada di kawasan oversold.

  2. Menggunakan garis purata jangka panjang ((200 kitaran) untuk menentukan arah trend besar. Hanya pertimbangkan untuk membuat kedudukan apabila harga lebih tinggi daripada garis purata jangka panjang.

  3. Apabila harga lebih tinggi daripada purata jangka panjang dan RSI berada di bawah garis oversold, anda boleh mengambil lebih banyak kedudukan dengan harga pasaran.

  4. Apabila kenaikan harga menembusi garis purata kitaran pendek ((5 kitaran), ia akan berhenti dengan harga pasaran yang rata.

Selain itu, ia juga menyediakan pilihan konfigurasi seperti berikut:

  • Parameter RSI: Panjang kitaran, kedudukan overbought dan oversold.

  • Parameter garis purata: jangka masa garis purata yang panjang dan pendek.

  • Saringan RSI rata-rata: Tambah penghakiman rata-rata RSI untuk mengelakkan indikator RSI bergoyang terlalu kuat.

  • Tetapan Stop Loss: Anda boleh memilih untuk menambah Stop Loss.

Analisis kelebihan

  1. Menggunakan sistem dua baris yang sama, ia dapat mengesan trend garis panjang dengan berkesan.

  2. Indeks RSI mengelakkan kehilangan peluang terbaik untuk memasuki pasaran dalam keadaan tertekan.

  3. Ia boleh dikonfigurasikan secara fleksibel untuk mengoptimumkan parameter yang berbeza.

  4. Taktik rundown yang mudah untuk dirobohkan.

Analisis risiko

  1. Strategi dua hala adalah sensitif kepada parameter dan perlu mengoptimumkan parameter untuk mencapai kesan terbaik.

  2. Pengaturan tanpa kerugian mempunyai risiko peningkatan kerugian. Perlu pengurusan dana yang berhati-hati, mengawal saiz kedudukan tunggal.

  3. Penyelesaian palsu dalam keadaan gegaran mungkin mempunyai risiko kerugian. Anda boleh mempertimbangkan untuk mengoptimumkan kitaran rata-rata atau menambah syarat lain sebagai penapis.

  4. Risiko penyesuaian data pengulangan. Perlu mengesahkan strategi yang kukuh dalam jangka masa yang panjang di pelbagai pasaran.

Arah pengoptimuman

  1. Uji optimum RSI dan garis purata untuk mencari parameter terbaik.

  2. Uji syarat penapisan masuk yang berbeza, seperti peningkatan jumlah transaksi, untuk mengurangkan isyarat palsu.

  3. Tambah tracking stop loss untuk mengawal kerugian tunggal. Perlu menilai kesan tetapan stop loss terhadap keuntungan keseluruhan.

  4. Menilai kesan jangka masa pegangan yang berbeza terhadap keuntungan dan mencari tempoh pegangan yang optimum.

  5. Uji kebolehan strategi dalam tempoh masa yang lebih lama (seperti tahap sunset).

ringkaskan

Strategi ini mengintegrasikan trend trend binari dan RSI yang lebih baik daripada RSI, dan merupakan sistem penembusan yang tipikal. Dengan pengoptimuman parameter, pengurusan wang yang ketat dan pengesahan kehandalan, strategi ini boleh menjadi alat yang kuat untuk perdagangan kuantitatif. Tetapi pedagang perlu berjaga-jaga untuk mengesan masalah yang sesuai dan terus menyesuaikan dan menyempurnakan strategi di pasaran yang berubah-ubah.

Kod sumber strategi
/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("RSI Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//Starter Parameters

length = input(title="RSI Lenght", defval=2)
overBoughtRSI = input(title="OverBought Level for RSI",  defval=10)
shortLength = input(title="Short MA Length",  defval=5)
longLength = input(title="Long MA Length",  defval=200)

RuleMRSI=input(title="RSI Moving Average Filter", defval= true)
lengthmrsi=input(title="RSI Moving Average Length",  defval=4)
overBoughtMRSI=input(title="OverBought Level for the Moving Average of the RSI",  defval=30)

Rulestop=input(title="Apply Stop Loss", defval=false)
stop_percentual=input(title="% Stop Loss",  defval=10)

//RSI

vrsi = rsi(close, length)

//Moving Averages

longma = sma(close,longLength)
shortma = sma(close,shortLength)
mrsi=sma(vrsi,lengthmrsi)

//Stop Loss

stop_level = strategy.position_avg_price*((100-stop_percentual)/100)

//Backtest Period
testStartYear = input(2009, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true
    
//Strategy

if testPeriod() and (not na(vrsi))
    if  (RuleMRSI==false) and (Rulestop==false)
        if (vrsi<overBoughtRSI) and (close>longma)
            strategy.entry("RsiLE", strategy.long , comment="Open")
        if (close>shortma)
            strategy.close_all()

    if (RuleMRSI==true) and (Rulestop==false)
        if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI)
            strategy.entry("RsiLE", strategy.long , comment="Open")
        if (close>shortma)
            strategy.close_all()

    if (RuleMRSI==false) and (Rulestop==true)
        if (vrsi<overBoughtRSI) and (close>longma)
            strategy.entry("RsiLE", strategy.long , comment="Open")
            strategy.exit("RsiLE", stop = stop_level)
        if (close>shortma)
            strategy.close_all()

    if (RuleMRSI==true) and (Rulestop==true)
        if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI)
            strategy.entry("RsiLE", strategy.long , comment="Open")
            strategy.exit("RsiLE", stop = stop_level)
        if (close>shortma)
            strategy.close_all()