Эта стратегия основана на уникальном расчете двухлетней новой высокой цены и скользящей средней стоимости акций. Она генерирует сигнал покупки, когда цена акции отступает к 13-дневной экспоненциальной скользящей средней после достижения двухлетнего максимума.
Основная логика этой стратегии основана на следующих уникальных расчетах:
Когда цена акций достигает нового максимума за последние два года, она образует краткосрочный пик. Это критический уровень цены.
Когда цена отступает от этого нового максимума и возвращается к 13-дневной экспоненциальной скользящей средней, это представляет хорошую возможность покупки.
Кроме того, когда запускается сигнал покупки, цена акций должна находиться в пределах 10% от двухлетнего максимума, не слишком далеко.
Для открытых позиций, если цена превысит 5-процентную отметку ниже 21-дневной линии MA или снизится на 20% от двухлетнего максимума, позиция будет остановлена для получения прибыли.
Это долгосрочная стратегия выхода с такими преимуществами:
Уникальная двухлетняя высокая цена может эффективно выявить потенциальные возможности для изменения тенденции.
13-дневная линия EMA служит фильтром входа, чтобы избежать сбоев и определить более сильный импульс.
Уникальные расчеты генерируют сигналы, основанные на ценовом движении, избегая субъективного вмешательства.
Разумная стоп-лосс позволяет зафиксировать большую часть прибыли.
Существуют также некоторые риски, в основном следующие:
Рынки могут испытывать глубокие снижения, не в состоянии остановиться вовремя.
Большие разрывы за одну ночь могут предотвратить идеальную остановку потери.
13-дневная линия может плохо отфильтровывать консолидации, генерируя чрезмерные ложные сигналы.
Новые высокие цены могут не работать хорошо для определения изменений тренда.
Есть возможности для дальнейшей оптимизации:
Включить другие инструменты для оценки общих рыночных условий, избегая ненужных позиций.
Добавьте индикаторы импульса, чтобы лучше избежать диапазонов випса.
Оптимизировать параметры скользящей средней, чтобы лучше улавливать ценовые модели.
Использование машинного обучения для динамической оптимизации параметра двухлетнего максимума для большей гибкости.
В целом, это уникальная долгосрочная стратегия прорыва, ключевым моментом которой является двухлетний высокий уровень цен и 13-дневная линия EMA, служащая фильтром входа.
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-25 00:00:00 period: 1h basePeriod: 15m 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/ // © Part Timer //This script accepts from and to date parameter for backtesting. //This script generates white arrow for each buying signal //@version=4 strategy("AMRS_LongOnly_PartTimer", overlay = true) //i_endTime = input(defval = timestamp("02 Jun 2021 15:30 +0000"), title = "End Time", type=input.time) StartYear=input(defval = 2000, title ="Start Year", type=input.integer) StartMonth=input(defval = 01, title ="Start Month", type=input.integer) StartDate=input(defval = 01, title ="Start Date", type=input.integer) endYear=input(defval = 2021, title ="End Year", type=input.integer) endMonth=input(defval = 06, title ="End Month", type=input.integer) endDate=input(defval = 03, title ="End Date", type=input.integer) ema11=ema(close,11) ema13=ema(close,13) ema21=ema(close,21) afterStartDate = true //g=bar_index==1 //ath()=> //a=0.0 //a:=g ? high : high>a[1] ? high:a[1] //a = security(syminfo.tickerid, 'M', ath(),lookahead=barmerge.lookahead_on) newHigh = (high > highest(high,504)[1]) //plot down arrows whenever it's a new high plotshape(newHigh, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.tiny) b=highest(high,504)[1] VarChk=((b-ema13)/b)*100 TrigLow = (low <= ema13) and (low >= ema21) and (VarChk <= 10) plotshape(TrigLow, style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny) ExitPrice=(ema21 - (ema21*0.05)) DrawPrice=(b - (b*0.20)) stopprice=0.0 if (close <= ExitPrice) stopprice := ExitPrice if (close <= DrawPrice) stopprice := DrawPrice if (TrigLow and afterStartDate) strategy.entry("Long", strategy.long) strategy.exit("exit","Long", stop=stopprice) //beforeEndDate = (time < i_endTime) beforeEndDate = (time >= timestamp(syminfo.timezone,endYear, endMonth, endDate, 0, 0)) if (beforeEndDate) strategy.close_all()