Strategi Low-High-Trend

Penulis:ChaoZhang, Tanggal: 2023-11-23 11:03:18
Tag:

img

Gambaran umum

Strategi ini dirancang berdasarkan prinsip pasar membeli rendah dan menjual tinggi. Ini melacak harga tertinggi dan terendah selama periode tertentu, menetapkan posisi panjang ketika harga menembus harga terendah, dan menutup posisi ketika harga turun di bawah harga tertinggi atau kondisi mengambil keuntungan terpenuhi. Pada saat yang sama, strategi ini menambahkan filter tren opsional yang hanya memungkinkan pembelian ketika harga berada dalam tren naik.

Logika Strategi

Perhitungan Harga Tertinggi dan Terendah

  • Harga terendah (kriteria rendah): Panggilan fungsi ta.lowest untuk menghitung harga terendah selama periode pencarian kembali yang ditetapkan oleh pengguna (default 20 bar) dan memetakan garis harga terendah.

  • Harga tertinggi (kriteria tertinggi): Panggilan fungsi ta.highest untuk menghitung harga tertinggi selama periode pencarian kembali yang ditetapkan oleh pengguna (default 10 bar) dan memetakan garis harga tertinggi.

Sinyal masuk

Ketika harga saat ini menembus garis harga terendah, sinyal beli dipicu untuk membangun posisi panjang.

Sinyal Keluar

Dua metode keluar disediakan untuk opsi:

  1. Fixed take profit: Tutup posisi untuk mendapatkan keuntungan ketika harga mencapai tingkat profit take profit yang telah ditetapkan sebelumnya (misalnya 8% di atas harga masuk).

  2. Pembagian harga tertinggi: Tutup posisi untuk mengurangi kerugian ketika harga turun di bawah garis harga tertinggi, menilai pembalikan tren.

Filter Tren

Tambahkan garis EMA untuk menentukan arah tren. Biarkan membeli hanya ketika harga berada di atas garis EMA (kecenderungan naik). Filter ini dapat diaktifkan atau dinonaktifkan.

Analisis Keuntungan

  • Mengadopsi strategi klasik membeli rendah dan menjual tinggi, selaras dengan dasar-dasar pasar.

  • Tambahkan penilaian tren untuk menghindari pembukaan yang sering selama fluktuasi harga.

  • Berikan dua pilihan keluar untuk mengejar keuntungan tinggi atau mengurangi kerugian.

  • Parameter yang dapat disesuaikan beradaptasi dengan lebih banyak lingkungan pasar.

  • Ruang besar untuk optimasi strategi melalui pengaturan parameter, desain filter dll.

Analisis Risiko

  • Tingkat keuntungan tetap tidak dapat disesuaikan berdasarkan pergerakan pasar yang sebenarnya, sehingga menghasilkan keuntungan yang lebih dini atau target keuntungan yang tidak cukup.

  • Menjual dengan harga tertinggi dapat menghasilkan kerugian besar, tidak dapat mengendalikan kerugian secara efektif.

  • Penilaian tren EMA hanya melihat kembali periode tertentu, mungkin tertinggal dari perubahan tren yang sebenarnya.

  • Hasil backtest tidak bisa mewakili masa depan.

Arahan Optimasi

  • Tambahkan metode pengambilan keuntungan seperti trailing stop, partial exit dll untuk secara dinamis menyesuaikan tingkat mengambil keuntungan.

  • Mengoptimalkan sinyal keluar, misalnya pintu keluar parsial, menambahkan indikator lain.

  • Meningkatkan penilaian tren dengan memasukkan lebih banyak indikator atau pembelajaran mesin.

  • Optimalkan parameter dengan backtest yang lebih luas untuk menemukan set yang optimal.

  • Tambahkan metode stop loss untuk mengendalikan kerugian dengan lebih baik.

Ringkasan

Strategi ini umumnya menerapkan prinsip jual beli rendah klasik dan dapat berkinerja baik dalam kondisi tertentu. Namun masih ada ruang untuk perbaikan melalui penyesuaian parameter, optimasi keluar, mekanisme stop loss dll. Artikel ini memberikan analisis mendalam tentang logika strategi, pro, kontra dan arah optimasi, bertujuan untuk berbagi ide strategi serta mengingatkan investor tentang risiko dan perdagangan dengan hati-hati dengan strategi kuantitatif.


/*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()
    

Lebih banyak