Strategi manajemen posisi berdasarkan kurva modal


Tanggal Pembuatan: 2024-01-16 15:06:39 Akhirnya memodifikasi: 2024-01-16 15:06:39
menyalin: 1 Jumlah klik: 738
1
fokus pada
1617
Pengikut

Strategi manajemen posisi berdasarkan kurva modal

Tinjauan Strategi

Inti dari strategi ini adalah untuk menyesuaikan ukuran posisi secara dinamis sesuai dengan pergerakan kurva modal, meningkatkan posisi ketika menguntungkan, mengurangi posisi ketika rugi, untuk mengendalikan risiko keseluruhan. Strategi ini menggabungkan indikator momentum Chande, indikator SuperTrend, dan indikator momentum untuk mengidentifikasi sinyal perdagangan.

Prinsip Strategi

Strategi ini menggunakan dua cara untuk menentukan apakah kurva modal berada dalam tren turun: 1) menghitung rata-rata bergerak sederhana cepat dan lambat pada kurva modal, dan menilai sebagai turun jika SMA cepat lebih rendah dari SMA lambat; 2) menghitung kurva modal dengan rata-rata bergerak sederhana dari periode yang lebih lama dari dirinya sendiri, dan menilai sebagai turun jika kurva modal lebih rendah dari rata-rata bergerak tersebut.

Ketika menilai kurva modal turun, posisi akan berkurang atau meningkat sesuai dengan pengaturan proporsi tertentu. Misalnya, jika pengaturan berkurang 50%, posisi 10% akan berkurang menjadi 5%. Strategi ini membuat ukuran posisi besar ketika menguntungkan, dan mengurangi ukuran posisi ketika rugi, untuk mengendalikan risiko keseluruhan.

Keunggulan Strategis

  • Menggunakan kurva modal untuk menilai kerugian sistem secara keseluruhan, posisi yang disesuaikan secara dinamis membantu mengendalikan risiko
  • Menggabungkan beberapa indikator untuk menilai masuk, dapat meningkatkan probabilitas keuntungan
  • Parameter yang dapat disesuaikan untuk penyesuaian posisi sesuai dengan preferensi risiko yang berbeda

Risiko Strategis

  • Posisi yang lebih besar akan meningkatkan kerugian.
  • Setting parameter yang tidak tepat dapat menyebabkan perubahan posisi yang terlalu radikal
  • Manajemen posisi tidak dapat sepenuhnya menghindari risiko sistemik

Optimalkan Pikiran

  • Uji efek dari parameter penyesuaian posisi yang berbeda
  • Cobalah kombinasi indikator lain untuk menentukan pergerakan kurva modal
  • Optimalkan persyaratan masuk, tingkatkan keberhasilan

Meringkaskan

Strategi ini secara keseluruhan ide yang jelas, menggunakan modal kurva dinamika untuk menyesuaikan posisi, dapat mengontrol risiko secara efektif, layak untuk tes lebih lanjut dan optimasi. Pengaturan parameter dan strategi stop loss juga perlu dipertimbangkan untuk menghindari risiko yang dibawa oleh operasi yang radikal.

Kode Sumber Strategi
/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 3m
basePeriod: 1m
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/
// © shardison
//@version=5

//EXPLANATION
//"Trading the equity curve" as a risk management method is the 
//process of acting on trade signals depending on whether a system’s performance
//is indicating the strategy is in a profitable or losing phase.
//The point of managing equity curve is to minimize risk in trading when the equity curve is  in a downtrend. 
//This strategy has two modes to determine the equity curve downtrend:
//By creating two simple moving averages of a portfolio's equity curve - a short-term
//and a longer-term one - and acting on their crossings. If the fast SMA is below
//the slow SMA, equity downtrend is detected (smafastequity < smaslowequity).
//The second method is by using the crossings of equity itself with the longer-period SMA (equity < smasloweequity).
//When "Reduce size by %" is active, the position size will be reduced by a specified percentage
//if the equity is "under water" according to a selected rule. If you're a risk seeker, select "Increase size by %"
//- for some robust systems, it could help overcome their small drawdowns quicker.

strategy("Use Trading the Equity Curve Postion Sizing", shorttitle="TEC", default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital = 100000)

//TRADING THE EQUITY CURVE INPUTS
useTEC           = input.bool(true, title="Use Trading the Equity Curve Position Sizing")
defulttraderule  = useTEC ? false: true
initialsize      = input.float(defval=10.0, title="Initial % Equity")
slowequitylength = input.int(25, title="Slow SMA Period")
fastequitylength = input.int(9, title="Fast SMA Period")
seedequity = 100000 * .10
if strategy.equity == 0
    seedequity
else
    strategy.equity
slowequityseed   = strategy.equity > seedequity ? strategy.equity : seedequity
fastequityseed   = strategy.equity > seedequity ? strategy.equity : seedequity
smaslowequity    = ta.sma(slowequityseed, slowequitylength)
smafastequity    = ta.sma(fastequityseed, fastequitylength)
equitycalc       = input.bool(true, title="Use Fast/Slow Avg", tooltip="Fast Equity Avg is below Slow---otherwise if unchecked uses Slow Equity Avg below Equity")
sizeadjstring    = input.string("Reduce size by (%)", title="Position Size Adjustment", options=["Reduce size by (%)","Increase size by (%)"])
sizeadjint       = input.int(50, title="Increase/Decrease % Equity by:")
equitydowntrendavgs = smafastequity < smaslowequity
slowequitylessequity = strategy.equity < smaslowequity

equitymethod = equitycalc ? equitydowntrendavgs : slowequitylessequity

if sizeadjstring == ("Reduce size by (%)")
    sizeadjdown = initialsize * (1 - (sizeadjint/100))
else
    sizeadjup = initialsize * (1 + (sizeadjint/100))
c = close
qty = 100000 * (initialsize / 100) / c
if useTEC and equitymethod
    if sizeadjstring == "Reduce size by (%)"
        qty := (strategy.equity * (initialsize / 100) * (1 - (sizeadjint/100))) / c
    else
        qty := (strategy.equity * (initialsize / 100) * (1 + (sizeadjint/100))) / c
    
//EXAMPLE TRADING STRATEGY INPUTS
CMO_Length = input.int(defval=9, minval=1, title='Chande Momentum Length')
CMO_Signal = input.int(defval=10, minval=1, title='Chande Momentum Signal')

chandeMO = ta.cmo(close, CMO_Length)
cmosignal = ta.sma(chandeMO, CMO_Signal)

SuperTrend_atrPeriod = input.int(10, "SuperTrend ATR Length")
SuperTrend_Factor = input.float(3.0, "SuperTrend Factor", step = 0.01)
Momentum_Length = input.int(12, "Momentum Length")
price = close

mom0 = ta.mom(price, Momentum_Length)
mom1 = ta.mom( mom0, 1)
[supertrend, direction] = ta.supertrend(SuperTrend_Factor, SuperTrend_atrPeriod)
stupind = (direction < 0 ? supertrend : na)
stdownind = (direction < 0? na : supertrend)

//TRADING CONDITIONS
longConditiondefault = ta.crossover(chandeMO, cmosignal) and (mom0 > 0 and mom1 > 0 and close > stupind) and defulttraderule
if (longConditiondefault)
    strategy.entry("DefLong", strategy.long, qty=qty)

shortConditiondefault = ta.crossunder(chandeMO, cmosignal) and (mom0 < 0 and mom1 < 0 and close < stdownind) and defulttraderule
if (shortConditiondefault)
    strategy.entry("DefShort", strategy.short, qty=qty)
    
longCondition = ta.crossover(chandeMO, cmosignal) and (mom0 > 0 and mom1 > 0 and close > stupind) and useTEC
if (longCondition)
    strategy.entry("AdjLong", strategy.long, qty = qty)

shortCondition = ta.crossunder(chandeMO, cmosignal) and (mom0 < 0 and mom1 < 0 and close < stdownind) and useTEC
if (shortCondition)
    strategy.entry("AdjShort", strategy.short, qty = qty)
plot(strategy.equity)
plot(smaslowequity, color=color.new(color.red, 0))
plot(smafastequity, color=color.new(color.green, 0))