Strategi ini menggunakan panjang badan lilin untuk menentukan arah panjang dan pendek. Ia mengira panjang badan purata 30 lilin baru-baru ini. Apabila panjang badan lilin bullish lebih besar daripada purata, ia pergi panjang. Apabila panjang badan lilin bearish lebih besar daripada purata, ia pergi pendek.
Strategi ini mula-mula mengira panjang badan candlestick dan panjang badan purata 30 candlestick sbody terkini.
Apabila candlestick hari ini menurun (bar==-1) dan panjang badan lebih besar daripada panjang badan purata, ia membuka kedudukan panjang (ke atas1).
Apabila candlestick hari ini bullish (bar==1) dan panjang badan lebih besar daripada panjang badan purata, ia membuka kedudukan pendek (dn1).
Selepas membuka long, jika candlestick hari ini bullish (bar==1) dan kedudukan semasa menguntungkan, ia menutup kedudukan panjang.
Selepas membuka pendek, jika lilin hari ini menurun (bar==-1) dan kedudukan semasa menguntungkan, ia menutup kedudukan pendek.
Strategi ini dengan mudah dan berkesan menggunakan panjang badan candlestick untuk menentukan trend pasaran. semakin lama badan, semakin kuat trend. jadi ia menggunakan panjang badan sebagai kriteria untuk panjang dan pendek.
Kelebihan strategi ini:
Logiknya mudah dan jelas, mudah difahami dan dilaksanakan.
Menggunakan panjang badan candlestick untuk menentukan trend, mengelakkan gangguan bunyi.
Mengambil kiraan purata dinamik, boleh menyesuaikan diri dengan perubahan pasaran.
Tetapkan syarat keluar yang menguntungkan untuk meningkatkan keuntungan.
Parameter yang boleh dikonfigurasi, dapat disesuaikan dengan persekitaran pasaran yang berbeza.
Risiko strategi ini:
Badan panjang tidak semestinya mewakili trend yang kuat, boleh menjadi turun naik normal.
Jendela masa panjang badan yang tidak betul boleh kehilangan peluang perdagangan.
Peristiwa Black Swan boleh menyebabkan kerugian.
Menyimpan kedudukan terlalu lama boleh meningkatkan kerugian.
Penyelesaian:
Gabungkan dengan penunjuk lain untuk menentukan trend, elakkan perdagangan yang salah.
Uji nilai parameter yang berbeza, optimumkan pengiraan panjang badan purata.
Tetapkan stop loss untuk mengawal kehilangan tunggal.
Mengoptimumkan masuk dan keluar logik untuk mengelakkan memegang terlalu lama.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Gabungkan MACD, RSI untuk menentukan trend, mengelakkan isyarat yang salah dari turun naik biasa.
Uji parameter tetingkap masa panjang badan purata yang berbeza untuk mencari set parameter optimum.
Tambah logik kawalan saiz kedudukan, secara beransur-ansur mengurangkan saiz kedudukan apabila mengalami kerugian.
Tetapkan sasaran stop loss atau keuntungan untuk mengawal peratusan kerugian tunggal.
Mengoptimumkan syarat masuk dan keluar untuk mengelakkan perdagangan yang tidak berkesan.
Elakkan berdagang pada tempoh tertentu atau sekitar pelepasan data penting untuk mengawal kerugian akibat turun naik.
Strategi ini mempunyai logik yang jelas dan mudah difahami untuk membandingkan badan lilin dengan panjang purata untuk masa kemasukan. Ruang yang besar untuk pengoptimuman dari pelbagai dimensi untuk menyesuaikan dengan lebih baik untuk persekitaran pasaran yang berbeza. Secara keseluruhan strategi perdagangan kuant pengenalan yang mudah dan boleh dipercayai yang sesuai untuk digunakan dan dipelajari oleh pedagang pemula. Lebih lanjut menggabungkan lebih banyak penunjuk dan mengoptimumkan untuk meningkatkan keuntungan dan ketahanan.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's ColorBar Strategy v1.0", shorttitle = "ColorBar str v1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usebody = input(true, defval = true, title = "Use body") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Signals bar = close > open ? 1 : close < open ? - 1 : 0 body = abs(close - open) sbody = ema(body, 30) up1 = bar == -1 and (body > sbody or usebody == false) dn1 = bar == 1 and (body > sbody or usebody == false) plus = (close > strategy.position_avg_price and strategy.position_size > 0) or (close < strategy.position_avg_price and strategy.position_size < 0) exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and plus if up1 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00))) if dn1 strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00))) if time > timestamp(toyear, tomonth, 31, 00, 00) or exit strategy.close_all()