Стратегия отслеживания тренда с использованием скользящей средней множественной разницы


Дата создания: 2024-01-04 17:43:17 Последнее изменение: 2024-01-04 17:43:17
Копировать: 0 Количество просмотров: 630
1
Подписаться
1619
Подписчики

Стратегия отслеживания тренда с использованием скользящей средней множественной разницы

Обзор

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

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

  1. Построение многократных временных рамок на основе 9-дневной, 100-дневной и 200-дневной средних линий.
  2. Сигнал покупателя появляется, когда средняя краткосрочная линия пересекает среднюю долгосрочную линию снизу вверх
  3. При использовании 7-уровневого отклонения от позиции, каждый раз, когда открывается новая позиция, определяется, заполнена ли предыдущая позиция, и если уже есть 6 позиций, не добавляется позиция.
  4. На каждой позиции устанавливается фиксированная стоп-стоп на уровне 3%, проводится контроль риска.

Вот основная логика этой стратегии.

Стратегические преимущества

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

Стратегические риски и решения

  1. Существует риск быть прекращенным. Если ситуация изменится, невозможно вовремя остановить убыток и выйти, возможно, столкнуться с огромными потерями. Решение заключается в сокращении среднелинейного цикла и ускорении остановки убытка.
  2. Существует риск позиции. Если внезапные события приводят к потере больше, чем можно вынести, есть риск дополнительной гарантии или разрыва позиции. Решение - это соответствующее уменьшение доли первоначальной позиции.
  3. Существует риск чрезмерного убытка. Если рыночная ситуация резко снизится, разница в уровне может превратиться в пустоту, может быть потеря до 700% или более. Решение заключается в увеличении фиксированного стоп-процента, ускорении стоп-скорости.

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

  1. Можно тестировать среднелинейные комбинации различных параметров, чтобы найти наиболее оптимальные.
  2. Количество позиций, которые можно оптимизировать для создания позиций.
  3. Можно проверить настройки фиксированного стоп-стоп. Увеличьте стоп-диапазон, чтобы добиться более высокой доходности.

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

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

Исходный код стратегии
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 1m
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/
    // © Coinrule
    
//@version=3
strategy(shorttitle='Pyramiding Entry On Early Trends',title='Pyramiding Entry On Early Trends (by Coinrule)', overlay=false, pyramiding= 7, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.1)
    
    
//Backtest dates
fromMonth = input(defval = 1,  title = "From Month")     
fromDay   = input(defval = 10,    title = "From Day")       
fromYear  = input(defval = 2020, title = "From Year")       
thruMonth = input(defval = 1,    title = "Thru Month")     
thruDay   = input(defval = 1,    title = "Thru Day")     
thruYear  = input(defval = 2112, title = "Thru Year")       
    
showDate  = input(defval = true, title = "Show Date Range")
    
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"
    
    
//MA inputs and calculations
inSignal=input(9, title='MAfast')
inlong1=input(100, title='MAslow')
inlong2=input(200, title='MAlong')
    
MAfast= sma(close, inSignal)
MAslow= sma(close, inlong1)
MAlong= sma(close, inlong2)
    
    
Bullish = crossover(close, MAfast) 
    
longsignal = (Bullish and MAfast > MAslow and MAslow < MAlong and window())
    
//set take profit
    
ProfitTarget_Percent = input(3)
Profit_Ticks = (close * (ProfitTarget_Percent / 100)) / syminfo.mintick
    
//set take profit
    
LossTarget_Percent = input(3)
Loss_Ticks = (close * (LossTarget_Percent / 100)) / syminfo.mintick
    
    
//Order Placing
    
strategy.entry("Entry 1", strategy.long, when = (strategy.opentrades == 0) and longsignal)
    
strategy.entry("Entry 2", strategy.long, when = (strategy.opentrades == 1) and longsignal)
        
strategy.entry("Entry 3", strategy.long, when = (strategy.opentrades == 2) and longsignal)
    
strategy.entry("Entry 4", strategy.long, when = (strategy.opentrades == 3) and longsignal)
    
strategy.entry("Entry 5", strategy.long, when = (strategy.opentrades == 4) and longsignal)
        
strategy.entry("Entry 6", strategy.long, when = (strategy.opentrades == 5) and longsignal)
        
strategy.entry("Entry 7", strategy.long, when = (strategy.opentrades == 6) and longsignal)
    
    
    
if (strategy.position_size > 0)
    strategy.exit(id="Exit 1", from_entry = "Entry 1", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry = "Entry 2", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry = "Entry 3", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry = "Entry 4", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry = "Entry 5", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry = "Entry 6", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry = "Entry 7", profit = Profit_Ticks, loss = Loss_Ticks)