Strategi Pengesanan Harga Purata Dinamik

Penulis:ChaoZhang, Tarikh: 2024-01-29 15:28:53
Tag:

img

Ringkasan

Idea utama strategi ini ialah apabila harga saham jatuh kepada peratusan tertentu, kedudukan boleh ditingkatkan secara beransur-ansur untuk menurunkan kos purata kedudukan pegangan.

Prinsip Strategi

Apabila harga saham pertama kali melintasi di atas purata bergerak mudah 20 hari, pergi lama untuk membuka kedudukan. Jika stok kemudian jatuh oleh peratusan kerugian sasaran yang ditetapkan, seperti 10%, tambah kepada kedudukan pada peratusan yang ditentukan, seperti 50% dari kedudukan semasa. Ini menurunkan kos purata kedudukan pegangan. Apabila harga saham mencapai titik keuntungan yang ditetapkan, seperti 10% di atas kos pegangan purata, tutup semua kedudukan untuk mengambil keuntungan.

Secara khusus, fungsi strategi menetapkan parameter seperti membenarkan sehingga 4 pembelian tambahan, dengan saiz kedudukan ditetapkan sebagai peratusan ekuiti, dan saiz kedudukan awal pada 10% ekuiti. Ia mendapat garis purata bergerak mudah 20 hari. Apabila harga penutupan melintasi di atas purata itu dan tidak ada kedudukan semasa, ia membuka kedudukan panjang. Kemudian ia mengira peratusan keuntungan / kerugian terapung kedudukan. Jika ia mencapai peratusan kerugian sasaran, ia terus berpiramid pada peratusan pembelian tambahan sasaran sehingga saham bangkit semula untuk mencapai sasaran keuntungan.

Analisis Kelebihan

Kelebihan terbesar strategi jenis ini adalah bahawa apabila keadaan pasaran tidak menguntungkan, kos purata kedudukan pegangan boleh dikurangkan melalui pembelian tambahan piramid. Ini membolehkan keuntungan yang lebih besar diperoleh apabila keadaan pasaran bertambah baik, mencapai kesan kehilangan kurang, memperoleh lebih banyak. Berbanding dengan kerugian berhenti mudah, strategi ini dapat menangkap pergerakan pasaran dengan lebih baik daripada dipaksa untuk menghentikan kerugian apabila harga terus jatuh.

Pada masa yang sama, strategi ini membolehkan beberapa pembelian tambahan, memanfaatkan perbezaan masa dalam pembalikan pasaran untuk menyesuaikan kedudukan secara beransur-ansur.

Analisis Risiko

Sudah tentu, jika harga terus jatuh, strategi ini juga menghadapi risiko kerugian besar. Terutamanya di pasaran beruang, tahap penurunan harga mungkin jauh melebihi imaginasi kita. Oleh itu, perkadaran dan bilangan pembelian tambahan mesti ditetapkan dengan munasabah untuk mengawal risiko dalam julat yang boleh diterima.

Pada masa yang sama, kita mesti menyedari bahawa jika semua pelabur mengamalkan strategi seperti itu, apabila banyak pelabur mencapai sasaran peratusan kerugian mereka, mungkin akan ada senario penambahan kolektif kepada kedudukan. Ini akan mendorong harga naik dan membentuk pemulihan jangka pendek yang tidak rasional. Jika kita gagal menilai keadaan dengan betul, kita mungkin salah menilai trend pasaran dan terus meningkatkan kedudukan kita. Hasilnya akan menjadi kerugian yang lebih besar apabila harga merosot lagi.

Arahan pengoptimuman

Terdapat beberapa cara untuk mengoptimumkan strategi ini:

  1. Sesuaikan peratusan pembelian tambahan secara dinamik. Ini boleh diselaraskan dalam masa nyata berdasarkan keadaan pasaran.

  2. Sertakan penunjuk kuantitatif. Sebagai contoh, memantau lonjakan dalam jumlah untuk mengesahkan isyarat pembalikan dan mengelakkan isyarat palsu.

  3. Menggunakan penangguhan kerugian yang tertinggal. Selepas pembelian tambahan, gunakan sistem penangguhan kerugian progresif untuk memastikan kerugian disimpan dalam julat tertentu.

Ringkasan

Strategi pengesanan harga purata dinamik menggunakan kesan harga purata dengan menyesuaikan kedudukan melalui pembelian tambahan. Dalam premis mempunyai sokongan modal yang mencukupi, ia dapat secara berkesan menangkap pulangan di atas purata apabila harga terbalik. Kuncinya adalah menilai masa dan perkadaran dengan betul untuk menjaga risiko dalam julat yang boleh diterima. Jika digunakan dengan betul, ini boleh menjadi kaedah yang sangat berkesan dalam perdagangan kuantitatif.


/*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"}]
*/

//@version=3

// ########################################################################## // 
//
// This scipt is intended to demonstrate how pyramiding can be used to average
// down a position.
//
// We will buy when a stock closes above its 20 day MA and Average down if
// the trade does not go in our favor. We will hold until a profit is made. 
// (which could mean we hold forever)
//
// ########################################################################## //

strategy("Average Down", overlay=true )

// Date Ranges
from_month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
from_day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
from_year  = input(defval = 2010, title = "From Year")
to_month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
to_day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = true
// Strategy Inputs
target_perc = input(-10, title='Target Loss to Average Down (%)', maxval=0)/100
take_profit = input(10, title='Target Take Profit', minval=0)/100
target_qty  = input(50, title='% Of Current Holdings to Buy', minval=0)/100 
sma_period  = input(20, title='SMA Period') 

// Get our SMA, this will be used for our first entry 
ma = sma(close,sma_period)

// Calculate our key levels
pnl = (close - strategy.position_avg_price) / strategy.position_avg_price
take_profit_level = strategy.position_avg_price * (1 + take_profit)

// First Position
first_long = crossover(close, ma) and strategy.position_size == 0 and window
if (first_long)
    strategy.entry("Long", strategy.long)

// Average Down!
if (pnl <= target_perc)
    qty = floor(strategy.position_size * target_qty)
    strategy.entry("Long", strategy.long, qty=qty)

// Take Profit!
strategy.exit("Take Profit", "Long", limit=take_profit_level)

// Plotting
plot(ma, color=blue, linewidth=2, title='SMA')
plot(strategy.position_avg_price, style=linebr, color=red, title='Average Price')

Lebih lanjut