Центр гравитации Бактестинг Торговая стратегия

Автор:Чао Чжан, Дата: 2023-12-12 16:56:51
Тэги:

img

Обзор

Центр тяжести (англ. Center of Gravity backtesting trading strategy) - торговая стратегия, основанная на скользящих средних. Он рассчитывает center цены, то есть положение центра тяжести, и строит ценовые каналы как коридоры для котировок активов. Стратегия может меняться от длинного к короткому в настройках ввода.

Принцип стратегии

Стратегия рассчитывает центр тяжести через линейную регрессию. В частности, она рассчитывает значение линейной регрессии цены закрытия за период длины, который является center цены. На этой основе ценные каналы строятся, двигаясь вверх и вниз %. Верхние и нижние границы ценового канала служат как длинные и короткие сигналы соответственно. Когда цена проходит через верхний рельс, перейдите в длинный; когда цена проходит ниже нижнего рельса, перейдите в короткий. Параметр SignalLine используется для выбора, следует ли использовать первый канал или верхние и нижние рельсы второго канала в качестве торговых сигналов.

Анализ преимуществ

Это очень простая стратегия выхода с следующими основными преимуществами:

  1. Идея ясна и легко понять и реализовать.
  2. Хорошие результаты обратных испытаний с определенной практической целесообразностью.
  3. Гибкие параметры для адаптации к различным условиям рынка.
  4. Конфигурируемая обратная торговля, подходящая для двусторонней работы.

Анализ рисков

Стратегия также сопряжена с некоторыми рисками:

  1. В процессе обратного тестирования могут возникнуть риски перенастройки. Параметры должны быть повторно оптимизированы для реального трейдинга.
  2. Неудачные побеги могут привести к большим потерям.
  3. Частота торгов может быть относительно высокой, поэтому необходимо контролировать коэффициент использования капитала.

Риски можно контролировать путем корректировки параметров, таких как полосы, длина и т. Д. Стоп-лосс также можно установить для ограничения максимального убытка.

Руководство по оптимизации

Стратегия может быть дополнительно оптимизирована следующими способами:

  1. Комбинируйте с индикаторами тренда для фильтрации сигналов и избегайте торговли против тренда.
  2. Добавьте механизм остановки.
  3. Оптимизируйте параметры, чтобы увеличить коэффициент прибыли.
  4. Добавьте управление положением, чтобы уменьшить риск.

Резюме

Центр гравитационного бэкстетинга - это простая стратегия выхода на рынок. Она имеет четкую логику, хорошую практичность и гибкие параметры. В то же время есть определенные риски, которые необходимо правильно оптимизировать и контролировать. Стратегия подходит в качестве базовой стратегии для живой торговли и оптимизации, а также очень подходит для обучения новичков.


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

Больше