Стратегия креста смерти Золотого Креста


Дата создания: 2023-10-11 16:33:18 Последнее изменение: 2023-10-11 16:33:18
Копировать: 0 Количество просмотров: 676
1
Подписаться
1617
Подписчики

Обзор

Эта стратегия применяет принципы золотых крестов и мертвых винтов простых движущихся средних, чтобы осуществить длинные и короткие позиции на акции. Когда быстрая линия прорывает медленную линию с нижнего направления, делайте больше; когда быстрая линия падает с верхнего направления и прорывает медленную линию, делайте больше.

Стратегический принцип

Эта стратегия сначала определяет время начала и окончания отсчета, а затем устанавливает параметры вычисления для двух средних, включая тип средних и длину цикла.

Вычислить значение двух средних значений с помощью функции getMAType ((), где fastMA - это среднее значение короткого периода, а slowMA - среднее значение длительного периода.

Основная логика этой стратегии заключается в следующем:

  • При использовании быстрого МА на медленном МА выделяется многосигнал long;

  • Когда fastMA проходит через slowMA, появляется сигнал short.

В конце концов, в течение периода отсчета, при наличии сигнала “сделай больше” следует использовать стратегию “продолжай” и при наличии сигнала “сделай меньше” - стратегию “сделай больше”.

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

  • Стратегическая концепция ясна, проста и понятна.
  • Используется широкий принцип равнолинейного пересечения, применяемый для большинства видов акций.
  • Настраиваемые типы и параметры средних значений.
  • Применение структуры стратегии в виде гипсокартона, с четкой функцией каждой части, что позволяет оптимизировать ее позже.

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

  • В среднелинейных перекрестках есть определенная задержка, и некоторые возможности для торговли могут быть упущены.
  • В результате, они не могут эффективно отфильтровывать колебания рынка и легко поддаются обману.
  • Оптимизация параметров не является достаточно всеобъемлющей системой.
  • отсутствие эффективного контроля над рисками и убытками, связанными с одной сделкой;

В зависимости от риска, можно оптимизировать следующие аспекты:

  1. Добавить фильтры для других технических показателей, чтобы определить тенденции.

  2. Повышение стратегии сдерживания убытков, контроль одноразовых потерь.

  3. Введение количественных показателей энергии и т.д., чтобы избежать арбитража на колеблющихся рынках.

  4. Создание механизмов оптимизации параметров, автоматическое поиск оптимальных комбинаций параметров

Направление оптимизации

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

  1. Добавление стратегий остановки убытков, таких как установка фиксированной точки остановки убытков или отслеживание остановки убытков, контроль убытков.

  2. Добавление стратегий управления позициями, таких как фиксированные позиции, динамические позиции, контроль риска торгов.

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

  4. Оптимизация параметров, поиск оптимальных параметров с помощью методов сетчатого поиска, линейного регрессирования и т. д.

  5. Расширяйте стратегию торговли, используя множество дискортирующих стратегий, таких как дебилизация, реверсирование, строительство опционов по партиям и т. Д.

  6. Повышение энергопоказателей, чтобы избежать попадания в ловушку при землетрясении.

  7. Повышение ассортимента сделок, расширение до более широкого спектра, включая фондовые индексы, фьючерсы, валюту и цифровые валюты.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy("Golden X BF Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2010, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() =>  true

///////////// MA Params /////////////
source1 = input(title="MA Source 1", defval=close)
maType1 = input(title="MA Type 1", defval="sma", options=["sma", "ema", "swma", "wma"])
length1 = input(title="MA Length 1", defval=50)

source2 = input(title="MA Source 2", defval=close)
maType2 = input(title="MA Type 2", defval="sma", options=["sma", "ema", "swma", "wma"])
length2 = input(title="MA Length 2", defval=200)

///////////// Get MA Function /////////////
getMAType(maType, sourceType, maLen) => 
    res = sma(close, 1)
    
    if maType == "ema"
        res := ema(sourceType, maLen)
    if maType == "sma"
        res := sma(sourceType, maLen)
    if maType == "swma"
        res := swma(sourceType)
    if maType == "wma"
        res := wma(sourceType, maLen)
    res
    
///////////// MA /////////////
fastMA = getMAType(maType1, source1, length1)
slowMA = getMAType(maType2, source2, length2)

long = crossover(fastMA, slowMA)
short = crossunder(fastMA, slowMA)

/////////////// Plotting /////////////// 
checkColor() => fastMA > slowMA
colCheck = checkColor() ? color.lime : color.red
p1 = plot(fastMA, color = colCheck, linewidth=1)
p2 = plot(slowMA, color = colCheck, linewidth=1)
fill(p1, p2, color = checkColor() ? color.lime : color.red)
bgcolor(long ? color.lime : short ? color.red : na, transp=20)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long", strategy.long, when=long)
    strategy.entry("Short", strategy.short, when=short)