Strategi ini berdasarkan idea perdagangan jangka pendek klasik - pergi pendek selepas lilin bullish berturut-turut dan pergi lama selepas lilin bearish berturut-turut. Khususnya, strategi ini mengesan ketinggian badan dan warna lilin untuk menentukan kejadian lilin berturut-turut dengan warna yang sama, dan kemudian menggunakan penunjuk RVI untuk menentukan sama ada pembalikan harus berlaku. Secara keseluruhan, ini adalah strategi yang menggabungkan corak lilin dan penunjuk RVI untuk melaksanakan perdagangan pembalikan jangka pendek. Ia bertujuan untuk menangkap peluang pembalikan apabila tingkah laku harga jangka pendek yang tidak normal berlaku.
Logik teras strategi ini termasuk:
Periksa sama ada ketinggian badan lilin melebihi ambang minimum untuk menapis pergerakan menaik / menurun yang tidak penting.
Tentukan sama ada dua candlestick sebelumnya mempunyai warna yang sama, yang mungkin menunjukkan potensi pembalikan jangka pendek.
Jika lilin semasa mempunyai warna yang berbeza daripada dua yang sebelumnya, isyarat perdagangan dihasilkan. iaitu pergi lama selepas dua lilin menaiki dan satu menaiki, pergi pendek selepas dua lilin menaiki dan satu menaiki.
Selepas memasuki perdagangan, persilangan garis RVI dan garis isyarat digunakan untuk menentukan kedudukan keluar.
Ringkasnya, strategi ini menggabungkan corak lilin dan penunjuk RVI untuk mewujudkan sistem pembalikan purata jangka pendek, menangkap pembalikan yang menguntungkan dari tingkah laku harga jangka pendek yang tidak normal.
Kelebihan utama strategi ini termasuk:
Mengesan anomali harga jangka pendek. lilin berturut-turut dengan warna yang sama sering menunjukkan anomali yang bersedia untuk pembalikan.
Penunjuk RVI membantu penentuan pembalikan, melengkapi corak candlestick untuk isyarat yang lebih stabil.
Frekuensi perdagangan yang agak tinggi untuk perdagangan jangka pendek. lilin berwarna yang sama berturut-turut sering berlaku, yang membolehkan peluang perdagangan yang banyak.
Risiko yang boleh dikawal daripada saiz perdagangan tetap dan stop loss/profit taking.
Logik yang mudah dan jelas yang mudah difahami dan dilaksanakan untuk perdagangan langsung.
Beberapa risiko yang perlu diperhatikan:
Pembalikan jangka pendek tidak dijamin semasa trend yang kuat apabila isyarat mungkin gagal.
RVI boleh menghasilkan isyarat yang salah dalam keadaan pasaran khas.
Tetapan stop loss yang tidak mencukupi boleh menyebabkan kerugian besar.
Kriteria lilin berturut-turut terlalu kaku. Pertimbangkan untuk mengoptimumkan peratusan yang diperlukan lilin warna yang sama dalam tempoh N.
Saiz perdagangan tetap tidak boleh mengawal risiko kedudukan keseluruhan.
Beberapa cara untuk mengoptimumkan lagi strategi:
Mengoptimumkan logik candlestick berturut-turut menggunakan statistik dan bukannya tempoh tetap.
Mengoptimumkan parameter RVI untuk mencari kombinasi terbaik.
Tambahkan stop loss mengikut turun naik pasaran.
Tambah saiz kedudukan berdasarkan penggunaan akaun.
Tambah lebih banyak penapis seperti saluran, trend untuk meningkatkan kestabilan sistem.
Penyesuaian parameter untuk produk yang berbeza.
Pembelajaran mesin pada data sejarah untuk mengoptimumkan parameter secara dinamik.
Ringkasnya, ini adalah strategi pembalikan purata jangka pendek yang biasa berdasarkan corak lilin dan RVI. Ia mempunyai kelebihan tetapi juga risiko. Pengoptimuman lebih lanjut pada parameter dan ketahanan dapat meningkatkan kestabilan dan keuntungan. Walau bagaimanapun, tidak ada strategi yang menghilangkan kerugian sepenuhnya. Pedagang mesti tetap berdisiplin dalam pengurusan risiko.
/*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()