Strategi perdagangan pembalikan berdasarkan penunjuk RSI


Tarikh penciptaan: 2024-01-30 17:06:45 Akhirnya diubah suai: 2024-01-30 17:06:45
Salin: 0 Bilangan klik: 642
1
fokus pada
1617
Pengikut

Strategi perdagangan pembalikan berdasarkan penunjuk RSI

Gambaran keseluruhan

Strategi ini menggunakan indikator RSI untuk mengenal pasti keadaan pasaran di mana saham lebih banyak membeli dan lebih banyak menjual, membuat pemotongan mati di kawasan yang lebih banyak membeli, dan membuat pemotongan emas di kawasan yang lebih banyak menjual, merupakan strategi perdagangan berbalik berdasarkan indikator. Strategi ini digabungkan dengan trend tracking stop loss, dan stop loss tetap, dapat mengawal risiko perdagangan dengan berkesan.

Prinsip Strategi

Isyarat perdagangan strategi ini dihasilkan berdasarkan garpu emas dan garpu mati RSI. Indeks RSI biasanya menggunakan 30 sebagai garpu jual-beli dan 70 sebagai garpu beli-beli. Apabila garpu jual-beli di atas RSI, ia menghasilkan isyarat beli; apabila garpu jual-beli di bawah RSI, ia menghasilkan isyarat jual-beli.

Selepas masuk, strategi ini menggunakan peratusan untuk mengesan hentian, dengan terus-menerus mengemas kini harga tertinggi atau terendah, dan meninggalkan peratusan tertentu sebagai titik hentian. Ia juga menggunakan jarak hentian yang tetap, berhenti apabila mencapai keuntungan sasaran atau kerugian maksimum. Kombinasi ini dapat mengawal risiko perdagangan dengan baik.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan indikator RSI untuk menentukan kawasan overbought dan oversold adalah teknik perdagangan yang lebih matang yang dapat menangkap titik-titik perubahan pasaran dengan lebih tepat.

  2. Menggunakan kaedah “Gold Fork Dead Fork”, ia boleh menyaring sebahagian daripada isyarat perdagangan bising, menjadikan perdagangan lebih dipercayai.

  3. Gabungan dengan trend tracking stop loss, anda boleh memaksimumkan keuntungan, tetapi anda juga boleh berhenti dengan cepat, mengurangkan kerugian tunggal.

  4. Jarak henti-henti dan henti-rugi yang tetap juga dapat mengawal risiko perdagangan tunggal.

  5. Secara keseluruhannya, peraturan strategi ini jelas, mudah difahami dan dilaksanakan, dan sesuai untuk pelajar pemula yang ingin belajar tentang perdagangan kuantitatif.

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Indeks RSI mudah menghasilkan isyarat yang salah, kemungkinan besar pecah bentuk teknikal, yang boleh menyebabkan stop loss dicetuskan.

  2. Jarak hentian pegangan tetap tidak boleh disesuaikan dengan turun naik pasaran, dan boleh menyebabkan hentian terlambat atau pelepasan yang lebih besar.

  3. Peratusan Tracking Stop Loss hanya mengesan harga tertinggi atau terendah, dan mungkin terlalu radikal, sehingga tidak menguntungkan.

  4. Risiko kecocokan data. Parameter strategi ini mungkin dioptimumkan untuk data sejarah, dan mungkin kurang baik dalam aplikasi sebenar.

  5. Frekuensi dagangan mungkin terlalu tinggi, meningkatkan kos dagangan dan risiko tergelincir.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Mengoptimumkan parameter RSI, mencari kombinasi parameter penunjuk terbaik, meningkatkan kualiti isyarat.

  2. Menambah penapis indikator lain, membentuk resonansi pelbagai indikator, meningkatkan ketepatan isyarat.

  3. Mempunyai mekanisme penangguhan stop loss yang menyesuaikan diri, menyesuaikan penangguhan stop loss secara automatik mengikut turun naik pasaran.

  4. Menambah modul kawalan frekuensi transaksi, mengurangkan jumlah transaksi, mengurangkan kos transaksi.

  5. Menambah modul pengurusan wang, mengawal saiz transaksi tunggal, mengurangkan kerugian tunggal.

  6. Uji ulang dalam tempoh masa yang lebih lama untuk memeriksa kestabilan parameter.

ringkaskan

Strategi ini secara keseluruhannya adalah strategi perdagangan terbalik yang tipikal, menggunakan indikator RSI untuk menentukan kawasan yang terlalu banyak dibeli dan terlalu banyak dijual, menggunakan cara garpu mati untuk menghasilkan isyarat perdagangan. Dan menggunakan trend tracking stop loss dan stop loss tetap untuk mengawal risiko.

Kod sumber strategi
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// LOVE JOY PEACE PATIENCE KINDNESS GOODNESS FAITHFULNESS GENTLENESS SELF-CONTROL 
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Author: © JoshuaMcGowan
// Taken from https://www.tradingview.com/script/GbZGYi6l-Adding-some-essential-components-to-a-prebuilt-RSI-strategy/
// Just updated to compile in version 4. 

//@version=4

strategy("Adding some essential components to a prebuilt RSI strategy", overlay=true)

/////////////// Component Code Start ///////////////

testStartYear = input(2011, "Backtest Start Year") 
testStartMonth = input(8, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2100, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(29, "Backtest Stop Day")
// testStopDay = testStartDay + 1
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
    
/////////////// Component Code Stop ///////////////

// Replace RSI Component, Long/Short, and Long Signal/Short Signal conditions with your trade setup components.
///////////// RSI component /////////////

length = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close

vrsi = rsi(price, length)
notna = not na(vrsi)

/////////////// STRATEGY ///////////////

ts = input(99999, "Trailing Stop") / 100
tp = input(99999, "Take Profit") / 100
sl = input(99999, "Stop Loss") / 100

// Update this with your setup. 
long = notna and crossover(vrsi, overSold)
short = notna and crossunder(vrsi, overBought)

last_long = 0
last_short = 0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

// Update this to reflect your setup. 
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

float last_open_long_signal = 0
float last_open_short_signal = 0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = 0
last_short_signal = 0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

float last_high = 0
float last_low = 0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

long_ts = not na(last_high) and high <= (last_high - ts) //and high >= last_open_long_signal
short_ts = not na(last_low) and low >= (last_low + ts) //and low <= last_open_short_signal

long_tp = high >= (last_open_long_signal + tp)
short_tp = low <= (last_open_short_signal - tp)

long_sl = low <= (last_open_long_signal - sl)
short_sl = high >= (last_open_short_signal + sl)

leverage = input(200, "Leverage")
long_call = last_open_long_signal - (0.8 + 0.2 * (1/leverage)) / leverage * last_open_long_signal
short_call = last_open_short_signal + (0.78 + 0.2 * (1/leverage)) / leverage * last_open_short_signal
long_call_signal = low <= long_call
short_call_signal = high >= short_call

if testPeriod()
    strategy.entry("Long", strategy.long, when=long_signal)
    strategy.entry("Short", strategy.short, when=short_signal)

    // plot(long_call, color=color.red)
    // plot(short_call, color=color.green)
    strategy.close("Long", when=long_call_signal)
    strategy.close("Short", when=short_call_signal)
    strategy.close("Long", when=long_tp)
    strategy.close("Short", when=short_tp)
    strategy.close("Long", when=long_sl)
    strategy.close("Short", when=short_sl)
    strategy.close("Long", when=long_ts)
    strategy.close("Short", when=short_ts)