Center of Gravity Backtesting Strategi Perdagangan

Penulis:ChaoZhang, Tanggal: 2023-12-12 16:56:51
Tag:

img

Gambaran umum

Center of Gravity backtesting trading strategy adalah strategi trading yang didasarkan pada moving average. Hal ini menghitung center harga, yaitu posisi pusat gravitasi, dan membangun saluran harga sebagai koridor untuk kutipan aset. Strategi dapat berubah panjang ke pendek di Input Settings.

Prinsip Strategi

Strategi ini menghitung pusat posisi gravitasi melalui fungsi regresi linier. Secara khusus, ini menghitung nilai regresi linier harga penutupan selama periode Panjang, yang merupakan center harga. Saluran harga kemudian dibangun dengan bergerak ke atas dan ke bawah Persen% atas dasar ini. Batas atas dan bawah saluran harga berfungsi sebagai sinyal panjang dan pendek masing-masing. Ketika harga menembus rel atas, pergi panjang; ketika harga menembus rel bawah, pergi pendek. Parameter SignalLine digunakan untuk memilih apakah akan menggunakan saluran pertama atau saluran kedua rel atas dan bawah sebagai sinyal perdagangan. Parameter terbalik digunakan untuk membalikkan panjang dan pendek.

Analisis Keuntungan

Ini adalah strategi breakout yang sangat sederhana dengan keuntungan utama berikut:

  1. Ide ini jelas dan mudah dipahami dan diterapkan.
  2. Hasil backtest yang baik dengan kelayakan praktis tertentu.
  3. Pengaturan parameter yang fleksibel untuk beradaptasi dengan lingkungan pasar yang berbeda.
  4. Trading reversal yang dapat dikonfigurasi, cocok untuk operasi dua arah.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Mungkin ada risiko overfit dalam proses backtest. parameter perlu dioptimalkan kembali untuk perdagangan langsung.
  2. Kegagalan melarikan diri dapat menyebabkan kerugian besar.
  3. Frekuensi perdagangan mungkin relatif tinggi, sehingga rasio penggunaan modal perlu dikendalikan.

Risiko dapat dikendalikan dengan menyesuaikan parameter seperti Band, Panjang, dll. Stop loss juga dapat diatur untuk membatasi kerugian maksimum.

Arahan Optimasi

Strategi dapat dioptimalkan lebih lanjut dengan cara berikut:

  1. Gabungkan dengan indikator tren untuk menyaring sinyal dan menghindari perdagangan melawan tren.
  2. Tambahkan mekanisme stop loss.
  3. Mengoptimalkan pengaturan parameter untuk meningkatkan rasio keuntungan.
  4. Tambahkan kontrol posisi untuk mengurangi risiko.

Ringkasan

Strategi perdagangan backtesting Center of Gravity adalah strategi breakout yang sederhana. Strategi ini memiliki logika yang jelas, kepraktisan yang baik, dan pengaturan parameter yang fleksibel. Pada saat yang sama, ada juga risiko tertentu yang perlu dioptimalkan dan dikendalikan dengan benar. Strategi ini cocok sebagai strategi dasar untuk perdagangan langsung dan optimasi, dan juga sangat cocok untuk pemula untuk belajar.


/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/03/2018
// The indicator is based on moving averages. On the basis of these, the 
// "center" of the price is calculated, and price channels are also constructed, 
// which act as corridors for the asset quotations.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Center Of Gravity Backtest", shorttitle="CFO", overlay = true)
Length = input(20, minval=1)
m = input(5, minval=0)
Percent = input(1, minval=0)
SignalLine = input(1, minval=1, maxval = 2, title = "Trade from line (1 or 2)")
reverse = input(false, title="Trade reverse")
xLG = linreg(close, Length, m)
xLG1r = xLG + ((close * Percent) / 100)
xLG1s = xLG - ((close * Percent) / 100)
xLG2r = xLG + ((close * Percent) / 100) * 2
xLG2s = xLG - ((close * Percent) / 100) * 2
xSignalR = iff(SignalLine == 1, xLG1r, xLG2r)
xSignalS = iff(SignalLine == 1, xLG1s, xLG2s)
pos = iff(close > xSignalR, 1,
       iff(close < xSignalS, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xLG, color=blue, title="CFO")
plot(xLG1r, color=green, title="LG1r")
plot(xLG2r, color=green, title="LG2r")
plot(xLG1s, color=red, title="LG1s")
plot(xLG2s, color=red, title="LG2s")

Lebih banyak