重力中心のバックテスト トレーディング戦略

作者: リン・ハーンチャオチャン,日付: 2023年12月12日 16:56:51
タグ:

img

概要

重力中心バックテストの取引戦略は,移動平均値に基づいた取引戦略である.価格の中心,すなわち重力の中心位置を計算し,資産のコートのための走廊として価格チャネルを構築する.戦略は,入力設定で長から短に変更することができます.

戦略原則

この戦略は,線形回帰関数によって重力の中心位置を計算する.具体的には,長度期間の閉値の線形回帰値を計算する.これは価格の中心である. 価格チャネルは,このベースで%を上下移動することによって構築される. 価格チャネルの上下境界はそれぞれ長と短信号として機能する. 価格が上線を突破すると,ロング;価格が下線を下線を突破すると,ショート. SignalLineパラメータは,最初のチャネルまたは第2チャネルの上下線を取引信号として使用するかどうかを選択するために使用される. 逆パラメータは,長と短を逆転するために使用される.

利点分析

これは非常にシンプルな脱出戦略で,次の主な利点があります:

  1. この考えは明確で 分かりやすく 実行できます
  2. 良いバックテスト結果と 具体的な実現可能性が
  3. 柔軟なパラメータ設定により 異なる市場環境に対応できます
  4. 設定可能な逆転取引,両方向操作に適しています.

リスク分析

この戦略にはいくつかのリスクもあります:

  1. バックテストプロセスでは過剰なフィットメントリスクがある可能性があります. リアルトレードのためにパラメータを再最適化する必要があります.
  2. 失敗した脱出は 大きな損失をもたらす
  3. 取引頻度は比較的高いため,資本利用比を制御する必要があります.

バンド,長さ,などのパラメータを調整することでリスクを制御できます.最大損失を制限するためにストップロスを設定することもできます.

オプティマイゼーションの方向性

この戦略は,次の方法でさらに最適化できます.

  1. トレンドインジケーターと組み合わせてシグナルをフィルタリングし,トレンドに反する取引を避ける.
  2. ストップ・ロストメカニズムを追加します
  3. パラメータ設定を最適化して 利益率を上げる
  4. リスクを減らすために位置制御を追加します.

概要

Center of Gravity バックテスト・トレード戦略は,シンプルなブレークアウト戦略です. 明確な論理,良い実行可能性,柔軟なパラメータ設定があります. 同時に,適切に最適化および制御する必要がある特定のリスクもあります. 戦略は,ライブトレードと最適化のための基本的な戦略として適しており,初心者の学習にも非常に適しています.


/*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")

もっと