
Эта стратегия использует пересечение движущегося среднего между 20-дневной и 60-дневной линией, чтобы сформировать сигнал о покупке и продаже. Когда цена поднимается, она пробивает 20-дневную линию, и делает больше; когда цена падает, она пробивает 20-дневную линию, и делает меньше.
Стратегический принцип
- Вычислите 20-дневную простую подвижную среднюю и 60-дневную простую подвижную среднюю
- Когда цена на акции выходит за 20-дневную линию, делайте больше.
- Когда цены закрытия упали и пересекли 20-дневную линию, позиции были сброшены.
- Когда цены на криптовалюту выходят за 60-дневную линию, делайте больше.
- Когда конечная цена упала и прошла 60-дневную линию, она была сброшена.
Выше приведены торговые сигналы и правила, которые формируют эту стратегию. Когда цена превышает среднюю, это означает, что началась тенденция, и можно следить за тенденцией; когда цена падает ниже средней, это означает, что тенденция закончилась, и тогда это правильный выбор.
Стратегические преимущества
- Двойные скользящие средние, используемые в комбинации, делают стратегию более стабильной. 20-дневная линия позволяет быстрее улавливать краткосрочные трендовые возможности; 60-дневная линия фильтрует часть краткосрочного рыночного шума, блокируя среднесрочные и долгосрочные тенденции.
- С 2018 года был выбран тайваньский фондовый рынок, где система торговли была более совершенной, чем на материковой части, и более эффективно отражала стратегический эффект.
- Установлен разумный контроль за стоп-страхами и позициями, чтобы максимально контролировать риск.
Стратегический риск
- Стратегии, основанные только на показателях скользящих средних, при отсутствии явных тенденций на рынке, приводят к большему количеству вихря и разрыва.
- Стратегия не оптимизирована для количества покупок/продаж и позиций, что не позволяет максимально использовать средства.
- Эта стратегия реагирует на повышение и снижение цены симметрично и не может реагировать на изменения в рынке.
Решение риска:
- Можно добавить другие пакеты индикаторов, такие как KDJ, MACD и т. Д., чтобы создать многократную проверку и избежать ошибочных сделок.
- Оптимизация позиций и эффективность использования торговых средств в зависимости от таких факторов, как рыночная стоимость, волатильность.
- Можно использовать асимметричную операцию в зависимости от различных этапов индекса большого рынка, уменьшить торговлю при шок-корректировке и увеличить позиции при четкой тенденции.
Направление оптимизации стратегии
- Оптимизация количества покупок и продаж. Количество позиций может быть скорректировано в зависимости от динамики стоп-информации.
- Оптимизация параметров суточных скользящих средних. Лучшие параметры могут быть найдены с помощью методов пошаговой оптимизации, случайной оптимизации и т. д.
- Увеличение стратегии стоп-лосса. Перемещение стоп-лосса или установка стоп-лосса может лучше защитить прибыль.
- Повышение управляемой позиции. Динамическая корректировка позиции по отдельным сделкам в зависимости от размера капитала и рыночной стоимости.
Подвести итог
Эта стратегия в целом является типичной двумя движущимися средними кросс-стратегиями. Основная идея заключается в том, чтобы отслеживать тенденцию и устанавливать позицию тренда, когда цена превышает среднюю. Стратегия проста, практична и легко реализуема.
Исходный код стратегии
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © Astorhsu
//@version=5
strategy("Astor SMA20/60 TW", overlay=true, margin_long=100, margin_short=100)
backtest_year = input(2018, title='backtest_year') //回測開始年分
backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份
backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31) //回測開始日期
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00) //回測開始的時間函數
//Indicators
sma20 = ta.sma(close,20)
sma60 = ta.sma(close,60)
plot(sma20, color=color.green, title="sma(20)")
plot(sma60, color=color.red, title="sma(60)")
//進場條件
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition) and time >= start_time
strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")
shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition) and time >= start_time
strategy.close("open long20",comment="跌破m20平倉", qty=1)
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1) and time >= start_time
strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")
shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1) and time >= start_time
strategy.close("open long60",comment="跌破m60平倉", qty=1)