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


Дата создания: 2023-09-14 17:03:47 Последнее изменение: 2023-09-14 17:03:47
Копировать: 0 Количество просмотров: 725
1
Подписаться
1617
Подписчики

Стратегический принцип

Эта стратегия сочетает в себе индикатор MACD и индикатор движущейся средней, чтобы совершать многоторговые сделки, когда они дают сигнала синхронизации.

Конкретная логика сделки заключается в следующем:

  1. Вычислить значение FAST MACD, обычно используя 12-дневную скользящую среднюю индекса

  2. Вычислить значение SLOW MACD, обычно с использованием 26-дневного скользящего среднего индекса

  3. MACD будет FAST минус SLOW

  4. Вычислить MACD по линии, обычно с помощью 9-дневного скользящего среднего значения

  5. Вычисление 9-дневного и 26-дневного скользящих средних

  6. Подумайте о том, чтобы сделать больше, когда вы пересекаете сигнал на MACD.

  7. Когда вы носите 9-дневную среднюю и 26-дневную среднюю, вы делаете больше.

  8. Когда MACD проходит под сигнальной линией и под 9-дневной средней линией проходит под 26-дневной средней линией, позиции равны

Эта стратегия использует в полной мере способность MACD отслеживать тенденции сверхпокупки и сверхпродажи и сбалансировать их для повышения успешности торгов.

Стратегические преимущества

  • MACD оценивает тенденцию перекупа и перепродажи, средняя линия оценивает тенденцию

  • Комбинированная проверка дает высокую вероятность многообещания

  • Правила работы понятны и просты в применении

Стратегический риск

  • Необходимо многократное тестирование для определения оптимальных параметров

  • Я не могу использовать свои свободные возможности, делая больше.

  • Повышение темпов роста может привести к увеличению потерь

Подвести итог

Эта стратегия использует преимущества MACD и среднелинейного индикатора, чтобы оценить рыночную динамику. Однако следует обратить внимание на такие вопросы, как простое увеличение и оптимизация параметров.

Исходный код стратегии
/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=4
strategy("MACD Cross+MA", overlay=true)
//@version=4
// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2019, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"


// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//plot
plot(sma(close,9),color=color.red)
plot(sma(close,26),color=color.green)
//Condition
BMacdcondition= (macd>signal)
SMacdcondition= (macd<signal)
longCondition = crossover(sma(close, 9), sma(close, 26))
shortCondition = crossunder(sma(close, 9), sma(close, 26))
//entry
if (BMacdcondition) and window()
    (longCondition)
    strategy.entry("LONG", strategy.long)
if (shortCondition) and window()
    (SMacdcondition)
    strategy.close("LONG", qty_percent=100 , comment="หนีตาย")