Strategi ini menggunakan purata bergerak sebagai isyarat perdagangan dan menggabungkannya dengan stop loss dan mengambil keuntungan yang ditakrifkan pengguna untuk melaksanakan strategi stop loss dan mengambil keuntungan yang didorong penunjuk lengkap.
Logik teras strategi ini ialah:
Menggunakan 3 tempoh SMA sebagai isyarat dagangan, pergi panjang apabila SMA melintasi di atas 0, dan pergi pendek apabila SMA melintasi di bawah 0.
Selepas memasuki perdagangan, pengguna boleh menyesuaikan stop loss dan mengambil nisbah keuntungan.
Berdasarkan harga kemasukan dan nisbah stop loss yang ditetapkan oleh pengguna, atur garis stop loss secara automatik.
Berdasarkan harga kemasukan dan mengambil nisbah keuntungan yang ditetapkan oleh pengguna, secara automatik menetapkan mengambil garis keuntungan.
Apabila harga menyentuh barisan stop loss, berhenti secara automatik.
Selepas menutup kedudukan, secara automatik membatalkan stop loss dan mengambil pesanan keuntungan.
Khususnya, strategi mengira SMA 3-periode menggunakan fungsi sma dan menetapkannya kepada pembolehubah ma.
Kemudian ia mengira panjang baris entri panjang, yang ma tambah ma% daripada lo. lo adalah parameter pengguna yang boleh diselaraskan untuk offset baris entri panjang.
Apabila ma melintasi di atas 0, ia menandakan entri panjang. Strategi memasuki panjang menggunakan fungsi strategi.entry dengan harga masuk ditetapkan untuk panjang.
Pada masa yang sama, harga stop loss dan mengambil keuntungan ditetapkan. Harga stop loss adalah harga masuk dikurangkan harga masuk% sl. sl adalah parameter nisbah stop loss yang boleh disesuaikan oleh pengguna. Harga mengambil keuntungan adalah harga masuk ditambah harga masuk% tp. tp adalah parameter nisbah mengambil keuntungan yang boleh disesuaikan oleh pengguna.
Fungsi strategi.entry menetapkan perintah stop loss dan mengambil keuntungan secara berasingan. Apabila harga menyentuh garis stop loss, ia akan berhenti secara automatik. Apabila harga menyentuh garis keuntungan, ia akan mengambil keuntungan secara automatik.
Selepas penutupan kedudukan, perintah stop loss dan mengambil keuntungan dibatalkan secara automatik menggunakan fungsi strategi.cancel.
Kelebihan strategi ini:
Tahap automatik yang tinggi, tidak memerlukan gangguan manual, sesuai untuk perdagangan algoritma.
Stop loss yang boleh disesuaikan dan mengambil nisbah keuntungan untuk mengawal risiko
Isyarat perdagangan datang dari penunjuk, mengelakkan pecah palsu.
Menggambarkan stop loss dan mengambil keuntungan, intuitif.
Logik strategi yang mudah dan jelas, mudah difahami dan dilaksanakan.
Terdapat juga beberapa risiko dengan strategi ini:
Risiko isyarat palsu dari penunjuk. penyelesaian adalah untuk mengoptimumkan parameter untuk memastikan penunjuk yang boleh dipercayai.
Penyelesaian adalah untuk menyesuaikan nisbah untuk pasaran yang berbeza.
Penyelesaian adalah untuk menapis isyarat masuk dengan trend, jumlah dan lain-lain.
Penyelesaian adalah untuk mengurangkan saiz kedudukan atau menggunakan stop loss.
Beberapa arah untuk mengoptimumkan strategi:
Mengoptimumkan parameter purata bergerak untuk kebolehpercayaan.
Mengoptimumkan keadaan kemasukan untuk mengelakkan pecah palsu, menambah pengesahan jumlah dan lain-lain.
Mengoptimumkan stop loss dan mengambil keuntungan, menggunakan stop loss dinamik atau trailing dll.
Mengoptimumkan pengurusan risiko, menyesuaikan saiz kedudukan, mengurangkan risiko perdagangan tunggal.
Mengoptimumkan masa kemasukan, menggabungkan dengan trend, sokongan / rintangan dll.
Tambah piramid untuk keuntungan gabungan.
Pengoptimuman parameter untuk produk tertentu.
Strategi ini menyediakan rangka kerja teknikal yang mudah dan boleh dipercayai untuk stop loss yang didorong penunjuk dan mengambil keuntungan dengan kelebihan seperti automasi dan kawalan risiko. Ia sesuai untuk perdagangan algoritma. Terdapat juga banyak aspek yang boleh diperbaiki dan dioptimumkan, seperti parameter penunjuk, penapis kemasukan, strategi stop loss / mengambil keuntungan, pengurusan risiko dll. Dengan lanjutan dan pengoptimuman, ia boleh menjadi strategi perdagangan yang lebih kuat.
/*backtest start: 2023-01-01 00:00:00 end: 2023-11-09 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("example for panel signals", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //https://www.tradingview.com/script/m2a04xmb-noro-s-shiftma-tp-sl-strategy/ //Settings lo = input(-5.0, title = "Long-line, %") tp = input(5.0, title = "Take-profit") sl = input(2.0, title = "Stop-loss") //SMA ma = sma(ohlc4, 3) long = ma + ((ma / 100) * lo) //Orders avg = strategy.position_avg_price if ma > 0 strategy.entry("Long", strategy.long, limit = long) strategy.entry("Take", strategy.short, 0, limit = avg + ((avg / 100) * tp)) strategy.entry("Stop", strategy.short, 0, stop = avg - ((avg / 100) * sl)) //Cancel order if strategy.position_size == 0 strategy.cancel("Take") strategy.cancel("Stop") //Lines plot(long, offset = 1, color = color.black, transp = 0) take = avg != 0 ? avg + ((avg / 100) * tp) : long + ((long / 100) * tp) stop = avg != 0 ? avg - ((avg / 100) * sl) : long - ((long / 100) * sl) takelinecolor = avg == avg[1] and avg != 0 ? color.lime : na stoplinecolor = avg == avg[1] and avg != 0 ? color.red : na plot(take, offset = 1, color = takelinecolor, linewidth = 3, transp = 0) plot(stop, offset = 1, color = stoplinecolor, linewidth = 3, transp = 0) // disp_panels = input(true, title="Display info panels?") h=high info_label_off = input(20, title="Info panel offset") info_label_size = input(size.large, options=[size.tiny, size.small, size.normal, size.large, size.huge], title="Info panel label size") info_panel_x = timenow + round(change(time)*info_label_off) info_panel_y = h info_title= "-=-=-=-=- Info Panel -=-=-=-=-" info_div = "\n\n------------------------------" a = "\n\ Long : " + tostring(long) b = "\n\ Stop loss : " + tostring(stop) c = "\n\ TP : " + tostring(take) // info_text = a+c+b // info_panel = disp_panels ? label.new(x=info_panel_x, y=info_panel_y, text=info_text, xloc=xloc.bar_time, yloc=yloc.price, color=color.yellow, style=label.style_labelup, textcolor=color.black, size=info_label_size) : na // label.delete(info_panel[1])