Strategi ini didasarkan pada sistem dasar mobile linearity, yang dioptimalkan untuk waktu masuk spesifik setelah sinyal dikirim.
Logika utama adalah:
Menghitung rata-rata bergerak untuk periode tertentu (misalnya 20 hari)
Ketika harga naik melewati garis rata-rata menghasilkan sinyal melakukan banyak, ketika turun melewati sinyal melakukan vakum
Setelah menerima sinyal, tidak segera masuk, tetapi menunggu harga yang lebih baik
Jika ada harga yang lebih baik dalam beberapa hari tertentu (misalnya 3 hari), masuklah
Jika tidak, masuk pada hari ke-5 dengan harga penutupan, jangan sampai terlewatkan
Strategi ini tidak terburu-buru masuk setelah sinyal, tetapi mencari peluang untuk kembali ke tren setelah perhitungan, sehingga dapat membangun posisi dengan harga yang lebih baik.
Optimasi untuk mendapatkan poin masuk yang lebih baik
Tetapkan waktu tunggu maksimum untuk menghindari kehilangan
Aturan sederhana, jelas, dan mudah diterapkan
Waktu tunggu dan nilai threshold yang diperlukan untuk pengujian berulang dan optimasi
Mungkin melewatkan bagian dari tren singkat
Dua syarat yang perlu diperhatikan, yaitu waktu dan harga.
Strategi ini dioptimalkan dengan masuk yang sederhana, dengan asumsi bahwa tidak ada tren yang terlewatkan, untuk mendapatkan poin masuk yang lebih baik. Namun, waktu tunggu dan kondisi masuk yang dioptimalkan sangat penting untuk efektifitas strategi.
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 1h
basePeriod: 15m
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/
// © dongyun
//@version=4
strategy("等待一个更好的入场机会", overlay=true)
period = input(20,'')
maxwait = input(3,'')
threshold = input(0.01,'')
signal = 0
trend = 0.0
newtrend = 0.0
wait = 0.0
initialentry = 0.0
trend := sma(close,period)
signal := nz(signal[1])
if trend > nz(trend[1])
signal := 1
else
if trend < nz(trend[1])
signal := -1
wait := nz(wait[1])
initialentry := nz(initialentry[1])
if signal != signal[1]
if strategy.position_size > 0
strategy.close('long',comment='trend sell')
signal := -1
else
if strategy.position_size < 0
strategy.close('short',comment='trend buy')
signal := 1
wait := 0
initialentry := close
else
if signal != 0 and strategy.position_size == 0
wait := wait + 1
// test for better entry
if strategy.position_size == 0
if wait >= maxwait
if signal > 0
strategy.entry('long',strategy.long, comment='maxtime Long')
else
if signal < 0
strategy.entry('short',strategy.short, comment='maxtime Short')
else
if signal > 0 and close < initialentry - threshold
strategy.entry('long',strategy.long, comment='delayed Long')
else
if signal < 0 and close > initialentry + threshold
strategy.entry('short',strategy.short, comment='delayed short')