Strategi pembalikan jangka pendek garis positif berterusan


Tarikh penciptaan: 2023-10-08 13:56:39 Akhirnya diubah suai: 2023-10-08 13:56:39
Salin: 1 Bilangan klik: 767
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini adalah berdasarkan kepada strategi dagangan jangka pendek yang klasik, di mana apabila terdapat banyak garisan sinar matahari berturut-turut, garisan sinar akan kosong; apabila terdapat banyak garisan sinar matahari berturut-turut, garisan sinar akan kosong. Secara khusus, strategi ini menggunakan pengesanan ketinggian dan warna entiti garisan K untuk menentukan bahawa terdapat banyak garisan K berturut-turut dengan warna yang sama, dan kemudian menggunakan indikator RVI untuk menentukan sama ada pembalikan masuk ke dalam permainan. Secara keseluruhan, ini adalah strategi yang menggunakan ciri-ciri garisan K berturut-turut jangka pendek dengan kombinasi indikator RVI untuk mencapai perdagangan pembalikan jangka pendek.

Prinsip Strategi

Logik utama strategi ini merangkumi:

  1. Mengesan sama ada ketinggian entiti K melebihi had ketinggian minimum, untuk menyaring turun naik yang terlalu kecil.

  2. Periksa sama ada dua garis K pertama sama warna, jika ya, ia mungkin memberi peluang untuk pembalikan harga dalam jangka pendek.

  3. Setelah menentukan bahawa dua baris K terdahulu sama warna, jika garis K semasa berbeza dengan warna dua baris K terdahulu, maka akan dihasilkan isyarat perdagangan. Iaitu, satu baris terang muncul selepas dua baris terang berturut-turut dan satu baris terang muncul selepas dua baris terang berturut-turut.

  4. Selepas perdagangan masuk, arah memegang kedudukan diukur melalui penyambungan pelbagai ruang penunjuk RVI. Penunjuk RVI dapat menentukan titik balik jangka pendek. Apabila garis penunjuk RVI melintasi garis isyarat, kedudukan ditapis.

  5. Secara keseluruhannya, strategi ini mengambil kira ciri-ciri garis K dan indikator RVI untuk membentuk sistem perdagangan yang berbalik dalam jangka pendek.

Analisis kelebihan

Strategi ini mempunyai beberapa kelebihan utama:

  1. Menangkap ketidaksamaan harga jangka pendek. Apabila terdapat banyak garisan positif berturut-turut atau banyak garisan negatif berturut-turut, menunjukkan ketidaksamaan harga dalam jangka pendek, maka operasi terbalik diharapkan dapat memperoleh hasil yang lebih baik.

  2. Penunjuk RVI membantu penghakiman. Penunjuk RVI dapat menentukan titik balik jangka pendek dengan berkesan, membentuk saling melengkapi dengan ciri K-line, meningkatkan kestabilan sistem.

  3. Frekuensi operasi yang lebih tinggi, sesuai untuk operasi garis pendek. Kes-kes yang sering berlaku dengan garis K berturut-turut, dengan penunjuk RVI, strategi ini dapat memberikan lebih banyak peluang perdagangan.

  4. Risiko boleh dikawal. Menggunakan nombor perdagangan tetap dan menetapkan stop loss.

  5. Logiknya jelas dan mudah. Ia mudah difahami dan dilaksanakan, operasi cakera tidak sukar.

Analisis risiko

Strategi ini juga mempunyai risiko yang perlu diperhatikan:

  1. Peralihan jangka pendek tidak semestinya berlaku. Dalam keadaan trend yang berterusan, isyarat pembalikan jangka pendek mungkin tidak berfungsi, menghasilkan salah masuk.

  2. Indikator RVI mungkin menghantar isyarat yang salah. Indikator RVI juga mungkin tidak berfungsi kerana keadaan khas.

  3. Pengaturan yang tidak betul untuk penangguhan kerugian boleh meningkatkan kerugian. Perlu menetapkan titik penangguhan yang munasabah.

  4. Kaedah K yang berturut-turut dengan warna yang sama adalah terlalu kaku. Anda boleh mempertimbangkan untuk mengoptimumkan nisbah K dengan warna yang sama sebanyak X% dalam N akar K.

  5. Perhatian perlu diberikan kepada saiz tangan yang diperdagangkan. Nombor tangan tetap tidak dapat mengawal risiko keseluruhan, dan perdagangan tangan besar mudah pecah.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Mengoptimumkan logik penentuan sama warna K baris berturut-turut, menggunakan kaedah statistik dan bukannya akar tetap yang tetap.

  2. Mengoptimumkan parameter RVI untuk mencari kombinasi parameter terbaik.

  3. Tambah strategi trailing stop loss yang bergerak mengikut turun naik pasaran.

  4. Tambah modul pengurusan kedudukan, menyesuaikan jumlah transaksi secara dinamik mengikut kadar penggunaan dana.

  5. Menambah lebih banyak syarat penapisan untuk meningkatkan kestabilan sistem, seperti gabungan indikator seperti saluran, trend, dan sebagainya.

  6. Optimumkan parameter untuk pelbagai jenis dan meningkatkan adaptasi.

  7. Memperkenalkan pembelajaran mesin untuk melatih data sejarah, dinamik mengoptimumkan parameter sistem.

ringkaskan

Strategi ini secara keseluruhannya adalah tipikal strategi perdagangan berbalik jangka pendek berdasarkan ketidaksamaan K-Line jangka pendek dengan penunjuk RVI. Ia mempunyai kelebihan tertentu, tetapi juga terdapat risiko yang mungkin. Dengan terus mengoptimumkan parameter dan membina sistem yang lebih ketat, kestabilan dan keuntungan strategi dapat ditingkatkan.

Kod sumber strategi
/*backtest
start: 2022-10-07 00:00:00
end: 2023-10-07 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//This is part of a series of strategies developed automatically by a online software. I cannot share the site url, which is not related to me in any way, because it is against the TV reules.
//
//This strategy was optimized for GBPUSD, timeframe 1D, fixed lots 0.1, initial balance 1000€
//LOGIC:
//- LONG ENTRY when previous candle is bear
//- LONG EXIT: RVI > signal line
//- SHORT ENTRY when previous candle is bull
//- SHORT EXIT: RVI <  signal line
//
//NOTE: I considered the open of actual candle instead of close otherwise there will be a back shift of 1 candle in pine script
//
//Take profit = no
//Stop loss = no

// strategy("Expert studio strategy 1 - GBPUSD", overlay=false, precision=6, initial_capital=1000,calc_on_every_tick=true, pyramiding=0, default_qty_type=strategy.fixed, default_qty_value=10000, currency=currency.EUR)

//INPUTS
src = input(close, "source")
min_body_height = input(42, "Minimum body height", type=input.float)
//bars_back=input(2, "Consecutive bars of same color")
rvi_period = input(55, "RVI period")

//CALCULATIONS_____________________________
//candle color
body_height = abs(open - close) / syminfo.mintick
body_color = open > close ? color.red : color.green

//da migliorare for i=0 to bars_back-1

//RVI -------- thanks to hecate
p = rvi_period

CO = close - open
HL = high - low

value1 = (CO + 2 * CO[1] + 2 * CO[2] + CO[3]) / 6
value2 = (HL + 2 * HL[1] + 2 * HL[2] + HL[3]) / 6

num = sum(value1, p)
denom = sum(value2, p)

RVI = denom != 0 ? num / denom : 0

RVIsig = (RVI + 2 * RVI[1] + 2 * RVI[2] + RVI[3]) / 6

plot(RVI, color=color.green, style=plot.style_line, linewidth=1)
plot(RVIsig, color=color.red, style=plot.style_line, linewidth=1)

//----------------------------------

longCondition = body_height[1] >= min_body_height and body_color[1] == color.red and 
   body_height[0] >= min_body_height and body_color[0] == color.red and 
   RVIsig > RVI
exitLong = RVI > RVIsig

shortCondition = body_height[1] >= min_body_height and body_color[1] == color.green and 
   body_height[0] >= min_body_height and body_color[0] == color.green and 
   RVIsig < RVI
exitShort = RVI < RVIsig

if longCondition and strategy.opentrades == 0
    strategy.entry("Long", strategy.long)

strategy.close("Long", when=exitLong)

if shortCondition and strategy.opentrades == 0
    strategy.entry("Short", strategy.short)

strategy.close("Short", when=exitShort)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(10, "Backtest Start Month")
testStartDay = input(7, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()