
Стратегия основана на многократном временном отклонении от средней линии, отслеживает тенденцию средней длинной линии, использует модель отслеживания позиции отклонения от средней длинной линии, чтобы достичь индексированного роста капитала. Наибольшее преимущество стратегии заключается в том, что она может улавливать тенденцию средней длинной линии, проводить поэтапное отслеживание, что позволяет получать дополнительную прибыль.
Вот основная логика этой стратегии.
В целом, эта стратегия очень подходит для захвата долгосрочных тенденций в рынке, используя поэтапный отслеживание по партиям, чтобы получить чрезмерную прибыль, которая очень высока по сравнению с риском и прибылью. В то же время существует определенный операционный риск, который необходимо контролировать методом корректировки параметров, чтобы найти баланс между прибылью и риском.
/*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)