
Strategi ini berdasarkan reka bentuk pemikiran pembelian rendah dan penjualan tinggi di pasaran. Ia menjejaki harga tertinggi dan terendah dalam tempoh tertentu yang lalu, membina kedudukan berbilang kepala apabila harga melampaui harga terendah, melonggarkan apabila harga jatuh di bawah harga tertinggi atau mencapai keadaan berhenti.
Harga terendah ((lowcriteria): Panggilan fungsi ta.lowest, berdasarkan kitaran semakan semula yang ditetapkan oleh pengguna ((gambar 20 K default) untuk mengira harga terendah dalam tempoh tertentu yang lalu, dan melukis garis harga terendah.
Harga tertinggi ((highcriteria): Panggilan fungsi ta.highest, berdasarkan kitaran semakan semula yang ditetapkan oleh pengguna ((10 K baris lalai) mengira harga tertinggi dalam tempoh tertentu yang lalu, dan melukis garis harga tertinggi
Apabila harga semasa menembusi garis harga terendah, isyarat beli dikeluarkan dan kedudukan berlebih ditubuhkan.
Terdapat dua pilihan untuk bermain:
Hentikan Tetap: Apabila harga mencapai tahap hentikan yang ditetapkan (jika melebihi 8%) daripada harga masuk, anda akan melakukan penarikan.
Penembusan harga tertinggi: Apabila harga jatuh di bawah garis harga tertinggi, menilai trend berbalik, dan menghentikan kerugian.
Menambah EMA untuk menentukan arah trend, hanya akan membeli apabila harga lebih tinggi daripada EMA (dikenali sebagai trend naik). Filter ini boleh dipilih untuk menghidupkan atau mematikan.
Menggunakan strategi untuk membeli melalui paras rendah dan menjual melalui paras tinggi, sesuai dengan peraturan asas pasaran.
Menambah mekanisme penilaian trend untuk mengelakkan pembukaan dagangan yang kerap apabila harga turun naik.
Terdapat dua pilihan keluar, untuk mencapai penamatan tinggi dan mengurangkan kerugian.
Parameter yang boleh disesuaikan untuk menyesuaikan diri dengan persekitaran pasaran yang lebih luas
Terdapat banyak ruang untuk mengoptimumkan strategi, yang boleh diperbaiki dengan penyesuaian parameter, reka bentuk penapis dan sebagainya.
Hentian tetap tidak dapat disesuaikan dengan pergerakan sebenar pasaran, yang boleh menyebabkan hentian awal atau kenaikan yang terlalu kecil.
Apabila harga teratas dijual, kerugian yang besar mungkin telah dihasilkan dan tidak dapat dikawal dengan berkesan.
EMA menilai trend hanya dari jangka masa sejarah tertentu, dan mungkin tertinggal daripada perubahan trend sebenar.
Data pengesanan tidak dapat mewakili masa depan, dan kesan yang pasti tidak dapat dipastikan.
Tambah cara penangguhan: seperti penangguhan bergerak, penangguhan selisih peringkat, dan lain-lain, membolehkan tahap penangguhan disesuaikan secara langsung dengan pergerakan pasaran.
Optimumkan isyarat berlepas: seperti berlepas secara beransur-ansur, atau tambah penilaian penunjuk lain.
Penghakiman trend yang optimum: seperti penambahan lebih banyak indikator, atau penghakiman pembelajaran mesin.
Parameter pengoptimuman: Mencari kombinasi parameter yang terbaik melalui tinjauan yang lebih luas.
Meningkatkan kaedah penangguhan kerugian: membuat kawalan kerugian lebih fleksibel dan berkesan.
Strategi ini secara keseluruhan menggunakan prinsip beli rendah dan jual tinggi klasik, dalam keadaan tertentu dapat mencapai hasil yang lebih baik. Tetapi strategi itu sendiri masih mempunyai ruang untuk pengoptimuman, dengan penyesuaian parameter, pengoptimuman keluar, penambahbaikan cara menghentikan kerugian dan sebagainya dapat memperoleh keuntungan yang lebih stabil.
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// @version=5
// Author = TradeAutomation
strategy(title="Low-High-Trend Strategy", shorttitle="Low-High-Trend Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_order, commission_value=1, slippage=3, initial_capital = 25000, margin_long=50, margin_short=50, default_qty_type=strategy.percent_of_equity, default_qty_value=110)
// Backtest Date Range Inputs //
StartTime = input(defval=timestamp('01 Jan 2000 05:00 +0000'), title='Start Time')
EndTime = input(defval=timestamp('01 Jan 2099 00:00 +0000'), title='End Time')
InDateRange = true
// Strategy Calculations //
lowcriteria = ta.lowest(close, input(20, "Lowest Price Lookback", tooltip="The strategy will BUY when the price crosses over the lowest it has been in the last X amount of bars"))[1]
highcriteria = ta.highest(close, input(10, "Highest Price Lookback", tooltip="If Take-Profit is not checked, the strategy will SELL when the price crosses under the highest it has been in the last X amount of bars"))[1]
plot(highcriteria, color=color.green)
plot(lowcriteria, color=color.red)
// Take Profit //
TakeProfitInput = input(true, "Sell with Take-Profit % intead of highest price cross?")
TakeProfit = ta.crossover(close,strategy.position_avg_price*(1+(.01*input.float(8, title="Take Profit %", step=.25))))
// Operational Functions //
TrendFilterInput = input(true, "Only buy when price is above EMA trend?")
ema = ta.ema(close, input(200, "EMA Length"))
TrendisLong = (close>ema)
plot(ema)
// Entry & Exit Functions//
if (InDateRange and TrendFilterInput==true)
strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria) and TrendisLong)
if (InDateRange and TrendFilterInput==false)
strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria))
if (InDateRange and TakeProfitInput==true)
strategy.close("Long", when = TakeProfit)
if (InDateRange and TakeProfitInput==false)
strategy.close("Long", when = ta.crossunder(close, highcriteria))
if (not InDateRange)
strategy.close_all()