Kerap menjejaki strategi harga purata melalui


Tarikh penciptaan: 2024-01-17 17:57:58 Akhirnya diubah suai: 2024-01-17 17:57:58
Salin: 4 Bilangan klik: 605
1
fokus pada
1617
Pengikut

Kerap menjejaki strategi harga purata melalui

Gambaran keseluruhan

Idea utama strategi ini adalah untuk menjejaki harga purata rendah secara berkala selepas penurunan jangka pendek berakhir. Khususnya, strategi akan mengenal pasti ketika penurunan jangka pendek berakhir pada akhir setiap bulan, dan oleh itu menambah kedudukan secara berkala; dan juga keluar dari kedudukan pada penutupan K terakhir.

Prinsip Strategi

  1. Sinyal pengesanan berkala: setiap 24*30 K line (yang bermaksud sebulan) kemudian, ia dipastikan telah sampai ke titik pengesanan berkala dan mengeluarkan isyarat pertama.
  2. Penentuan akhir penurunan jangka pendek: Menggunakan indikator MACD untuk menilai trend, apabila MACD berbalik dan menembusi garis isyarat, penurunan jangka pendek dianggap berakhir.
  3. Peraturan kemasukan: Apabila isyarat pengesanan tetap dan isyarat pengakhiran penurunan jangka pendek dipenuhi, keluarkan isyarat pengesanan dan buka lebih banyak kedudukan.
  4. Peraturan Keluar: Keluar semua kedudukan apabila K terakhir ditutup.

Di atas adalah proses dan prinsip dasar strategi. Perlu diperhatikan bahawa strategi ini secara default menggunakan pengesanan dana \( 1,000 setiap bulan, yang akan diperluaskan kepada 33 bulan dalam backtest, iaitu sebanyak \) 33,000 secara keseluruhan.

Analisis kelebihan

Kelebihan terbesar strategi ini adalah dapat membuat simpanan secara berkala di tahap rendah, dalam jangka masa panjang dapat memperoleh kos pembelian yang lebih baik, menghasilkan kadar keuntungan yang lebih tinggi. Selain itu, penggunaan penunjuk MACD untuk mengenal pasti titik pembelian jangka pendek juga lebih dipercayai dan jelas, tidak akan tersesat di jalan buntu, yang juga dapat mengelakkan kerugian hingga tahap tertentu.

Secara keseluruhannya, ia adalah satu strategi kos-nilai yang sesuai untuk pemegang talian panjang dan sederhana yang membeli secara berkala dan mendapat pulangan yang memuaskan.

Risiko dan Penyelesaian

Risiko utama strategi ini adalah ketidakupayaan untuk menentukan dengan tepat titik akhir penurunan jangka pendek, MACD mungkin mempunyai kelewatan masa untuk menentukan akhir penurunan, yang akan menyebabkan kos tidak dapat dibeli pada optimum. Selain itu, pelaburan modal yang tersebar juga meningkatkan kos operasi.

Anda boleh mempertimbangkan untuk memasukkan lebih banyak petunjuk untuk menilai trend, seperti garis Brin, KDJ, dan lain-lain, yang dapat menentukan masa pembalikan lebih awal. Anda juga boleh mengoptimumkan jumlah modal yang dimasukkan setiap bulan untuk mengurangkan kesan kos operasi terhadap pendapatan.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Mengoptimumkan kitaran masa pengesanan berkala, seperti pengesanan berkala setiap dua bulan, dan lain-lain, untuk mengurangkan masalah transaksi yang terlalu kerap.

  2. Dengan lebih banyak petunjuk untuk menentukan kapan penurunan jangka pendek berakhir, titik beli lebih dekat dengan titik terendah.

  3. Untuk mengoptimumkan jumlah wang yang akan dibelanjakan setiap bulan, anda perlu mencari peruntukan yang optimum.

  4. Cuba untuk memasukkan strategi berhenti kerugian untuk mengelakkan kerugian akibat jatuh terlalu jauh.

  5. Uji kesan jangka masa pegangan yang berbeza terhadap pendapatan dan cari hari pegangan yang optimum.

ringkaskan

Strategi harga rata-rata lembah yang mengikuti strategi keseluruhan dengan jelas dan mudah difahami, dengan penambahan secara berkala dan penghakiman jangka pendek, harga kos yang lebih baik dapat diperoleh. Pemegang strategi ini dapat memperoleh keuntungan yang stabil, sesuai untuk pelabur yang mencari nilai pelaburan jangka panjang.

Kod sumber strategi
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © BHD_Trade_Bot

// @version=5
strategy(
 shorttitle            = 'DCA After Downtrend v2',
 title                 = 'DCA After Downtrend v2 (by BHD_Trade_Bot)',
 overlay               = true,
 calc_on_every_tick    = false,
 calc_on_order_fills   = false,
 use_bar_magnifier     = false,
 pyramiding            = 1000,
 initial_capital       = 0,
 default_qty_type      = strategy.cash,
 default_qty_value     = 1000,
 commission_type       = strategy.commission.percent,
 commission_value      = 1.1)



// Backtest Time Period
start_year   = input(title='Start year'   ,defval=2017)
start_month  = input(title='Start month'  ,defval=1)
start_day    = input(title='Start day'    ,defval=1)
start_time   = timestamp(start_year, start_month, start_day, 00, 00)

end_year     = input(title='end year'     ,defval=2050)
end_month    = input(title='end month'    ,defval=1)
end_day      = input(title='end day'      ,defval=1)
end_time     = timestamp(end_year, end_month, end_day, 23, 59)

window() => time >= start_time and time <= end_time ? true : false
h1_last_bar = (math.min(end_time, timenow) - time)/1000/60/60 < 2



// EMA
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)

// EMA_CD
emacd = ema50 - ema200
emacd_signal = ta.ema(emacd, 20)
hist = emacd - emacd_signal

// BHD Unit
bhd_unit = ta.rma(high - low, 200) * 2
bhd_upper = ema200 + bhd_unit
bhd_upper2 = ema200 + bhd_unit * 2
bhd_upper3 = ema200 + bhd_unit * 3
bhd_upper4 = ema200 + bhd_unit * 4
bhd_upper5 = ema200 + bhd_unit * 5

bhd_lower = ema200 - bhd_unit
bhd_lower2 = ema200 - bhd_unit * 2
bhd_lower3 = ema200 - bhd_unit * 3
bhd_lower4 = ema200 - bhd_unit * 4
bhd_lower5 = ema200 - bhd_unit * 5

// Count n candles after x long entries
var int nPastCandles = 0
var int entryNumber = 0
if window()
    nPastCandles := nPastCandles + 1



// ENTRY CONDITIONS

// 24 * 30 per month
entry_condition1 = nPastCandles > entryNumber * 24 * 30

// End of downtrend
entry_condition2 = emacd < 0 and hist < 0 and hist > hist[2]

ENTRY_CONDITIONS = entry_condition1 and entry_condition2


if ENTRY_CONDITIONS
    entryNumber := entryNumber + 1
    entryId = 'Long ' + str.tostring(entryNumber)
    strategy.entry(entryId, strategy.long)
    
    

// CLOSE CONDITIONS

// Last bar
CLOSE_CONDITIONS = barstate.islast or h1_last_bar

if CLOSE_CONDITIONS
    strategy.close_all()



// Draw
colorRange(src) =>
    if src > bhd_upper5
        color.rgb(255,0,0)
    else if src > bhd_upper4
        color.rgb(255,150,0)
    else if src > bhd_upper3
        color.rgb(255,200,0)
    else if src > bhd_upper2
        color.rgb(100,255,0)
    else if src > bhd_upper
        color.rgb(0,255,100)
    else if src > ema200
        color.rgb(0,255,150)
    else if src > bhd_lower
        color.rgb(0,200,255)
    else if src > bhd_lower2
        color.rgb(0,150,255)
    else if src > bhd_lower3
        color.rgb(0,100,255)
    else if src > bhd_lower4
        color.rgb(0,50,255)
    else
        color.rgb(0,0,255)
        
bhd_upper_line = plot(bhd_upper, color=color.new(color.teal, 90))
bhd_upper_line2 = plot(bhd_upper2, color=color.new(color.teal, 90))
bhd_upper_line3 = plot(bhd_upper3, color=color.new(color.teal, 90))
bhd_upper_line4 = plot(bhd_upper4, color=color.new(color.teal, 90))
bhd_upper_line5 = plot(bhd_upper5, color=color.new(color.teal, 90))

bhd_lower_line = plot(bhd_lower, color=color.new(color.teal, 90))
bhd_lower_line2 = plot(bhd_lower2, color=color.new(color.teal, 90))
bhd_lower_line3 = plot(bhd_lower3, color=color.new(color.teal, 90))
bhd_lower_line4 = plot(bhd_lower4, color=color.new(color.teal, 90))
bhd_lower_line5 = plot(bhd_lower5, color=color.new(color.teal, 90))
// fill(bhd_upper_line5, bhd_lower_line5, color=color.new(color.teal, 95))

plot(ema50, color=color.orange, linewidth=3)
plot(ema200, color=color.teal, linewidth=3)
plot(close, color=color.teal, linewidth=1)
plot(close, color=colorRange(close), linewidth=3, style=plot.style_circles)