
Эта стратегия оптимизирует обычную стратегию пересечения скользящих средних, устанавливает скользящие средние с тремя различными периодами, использует скользящие средние с 9 циклами, 50 циклами и 100 циклами, чтобы создать форк-офф, в условиях, когда средне-длинная средняя линия находится в восходящем тренде, и на короткой средней линии через среднюю среднюю линию образуется сигнал покупки-покупа. Название стратегии называется “Оптимизированная торговая стратегия пересечения скользящих средних”.
Стратегия использует три движущихся средних из 9 циклов, 50 циклов и 100 циклов. Из них 9 циклов - это краткосрочная средняя, 50 - средняя и 100 - долгосрочная средняя. Торговые сигналы стратегии исходят из пересечения краткосрочной средней и средней средней.
По сравнению с обычной стратегией скрещивания двойных скользящих средних линий, эта стратегия добавляет условия для определения среднесрочного и долгосрочного тренда до появления торгового сигнала, что позволяет эффективно отфильтровывать часть неэффективных сигналов. В случае неопределенности долгосрочных тенденций стратегия не будет генерировать сигналы, что позволяет избежать подтасовки. В то же время эта стратегия подходит для захвата трендовых действий в краткосрочной и среднесрочной перспективе, что снижает вероятность попадания в рынок.
Эта стратегия требует корректировки циклической комбинации средней линии при установке параметров, и различные циклические комбинации могут повлиять на эффективность стратегии. Если циклическая параметры установлены неправильно, рискуется создать слишком много ложных сигналов. Кроме того, трейдеру необходимо быть бдительным к потенциальному систематическому риску и вовремя остановить убытки, чтобы избежать риска.
Можно рассмотреть возможность установления более строгих условий входа в рынок в сочетании с другими индикаторами, такими как MACD, BOLL и т. Д., или в сочетании с показателями волатильности для построения адаптивных скользящих средних, которые позволяют автоматически корректировать параметры в соответствии с рыночной обстановкой и далее оптимизировать стратегию.
Эта стратегия, основанная на обычном перекрестке двойных движущихся средних, добавляет долгосрочные усредненные суждения и фильтрующие условия, эффективно фильтрует ложные сигналы, подходит для захвата краткосрочных среднесрочных тенденций, является простой практической стратегией отслеживания тенденций. Но трейдеры все еще должны обращать внимание на оптимизацию параметров и системный риск, разрабатывать научную стратегию управления капиталом.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
// Input
switch1=input(true, title="Enable Bar Color?")
switch2=input(false, title="Show Fast Moving Average")
switch3=input(true, title="Show Slow Moving Average")
//Calculate Moving Averages
movingaverage_fast = sma(close, input(9))
movingaverage_slow = sma(close, input(100))
movingaverage_normal= sma(close, input(50))
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// Calculation
bullish_cross = crossover(movingaverage_fast, movingaverage_normal)
bearish_cross = crossunder(movingaverage_fast, movingaverage_normal)
//Entry and Exit
if bullish_cross and window() and movingaverage_slow > movingaverage_normal
strategy.entry("long", strategy.long)
strategy.close("long", when = bearish_cross and window())
// Colors
bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue
barcolor(switch1?bartrendcolor:na)
// Output
plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)
bgcolor(color = showDate and window() ? color.gray : na, transp = 90)