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


Дата создания: 2023-12-19 13:37:33 Последнее изменение: 2023-12-19 13:37:33
Копировать: 0 Количество просмотров: 683
1
Подписаться
1621
Подписчики

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

Обзор

Эта стратегия оптимизирует обычную стратегию пересечения скользящих средних, устанавливает скользящие средние с тремя различными периодами, использует скользящие средние с 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)