MoonFlag MACD Momentum StochRSI Торговая стратегия

Автор:Чао Чжан, Дата: 2024-02-23 15:06:59
Тэги:

img

Обзор

MoonFlag MACD Momentum StochRSI Trading Strategy является количественной торговой стратегией, которая использует индикаторы MACD, импульс и StochRSI для суждения.

Логика стратегии

В стратегии используются следующие ключевые показатели для оценки:

  1. Индикатор MACD: быстрый период SMA - 50 и медленный период SMA - 200, представляющий собой широко используемую 50-дневную линию и 200-дневную линию на рынке.

  2. Индикатор импульса: по существу похож на индикатор Stoch, используемый для оценки краткосрочного направления импульса рынка.

  3. Индикатор StochRSI: оценивает силу и уровень перекупленности/перепроданности рынка.

Для того, чтобы выйти на длинный рынок, он должен соответствовать трем условиям: MACD>0 (представляет рост средне-долгосрочной тенденции), индивидуальный индикатор импульса >0 (представляет рост краткосрочной импульса) и цена закрытия выше предыдущего закрытия (представляет текущую восходящую тенденцию).

Закрытие длинного сигнала немного сложнее, требуя одновременного выполнения MACD<0, индивидуального индикатора импульса <0, ценой закрытия ниже предыдущего закрытия и StochRSI>20.

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

Преимущества стратегии

  1. Всеобъемлющая оценка нескольких показателей позволяет избежать создания ложных сигналов

  2. При выборе параметра MACD учитывается важная 50-дневная линия и 200-дневная линия на рынке.

  3. После того, как параметры каждого показателя были проверены на изменение, эффективность стратегии незначительно изменилась, избегая риска перенастройки

  4. Проверено с достаточным количеством данных с высокой надежностью

Риски стратегии

  1. Брейк-аут-системы склонны к арбитражу, что может увеличить количество сделок и расходы на скольжение.

  2. Высокая сложность с всеобъемлющим суждением по нескольким показателям, трудности с настройкой и оптимизацией параметров

  3. Высокие краткосрочные риски торговли внутри суток

Руководство по оптимизации

  1. Включить анализ большего количества показателей, таких как объем торговли

  2. Увеличить алгоритмы машинного обучения для оптимизации динамических параметров

  3. Более низкая частота торговли, преобразование в более высокую периодичность для суждений

Резюме

MoonFlag MACD Momentum StochRSI Trading Strategy всесторонне оценивает рыночные тенденции и силу с помощью нескольких индикаторов, имеет хорошие результаты обратных тестов и высокую надежность, подходящую для опытных количественных трейдеров для применения и оптимизации на качественных криптовалютах.


/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// // © MoonFlag
//@version=5
strategy("MoonFlag 1D MACD Momentum StochRSI Strategy", max_bars_back=500, overlay=false, initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=80, pyramiding=0, calc_on_order_fills=true)


d(gaps_1, data)=>
    float out = 0.
    out :=(ta.wma(ta.wma(ta.wma(data,  math.round(((1 * gaps_1) - math.round((1 * gaps_1) / 3)) / 2)), math.round((1 * gaps_1) / 3)) , int(((1 * gaps_1) - math.round((1 * gaps_1) / 3)) / 2)))
    out
MoonFlagAverage(gaps_1,data)=>
    float out = 0.
    out:=d(gaps_1,d(gaps_1, d(gaps_1, data)))
    out

fastLength = input.int(50,  "MACD SMA Fast Length")
slowlength = input.int(200, "MACD SMA Slow Length")
MACDLength = 9//input.int(9,   "MACD Length")

MACD  = ta.ema(close, fastLength) - ta.ema(close, slowlength)
aMACD = ta.sma(MACD, MACDLength)
MACDdelta = MACD - aMACD

//plot (MACD, "MACD1", color.red)
//plot (aMACD, "aMACD1", color.green)
//plot (delta, "MACD delta", color.white)

fastLength2 = input.int(12, "MoonFlag Momentum Length")
slowlength2 = 2*fastLength2//input.int(50, "MoonFlag Momentum Slow Length")
MACDLength2 = 20//input.int(20, "Momentum Delta")

MoonFlag_MACD2 = MoonFlagAverage(fastLength2, close) - MoonFlagAverage(slowlength2,close)
MoonFlag_aMACD2 = MoonFlagAverage(MACDLength2, MoonFlag_MACD2)

MoonFlag_delta = MoonFlag_MACD2 - MoonFlag_aMACD2
MoonFlag_delta_line=0
if MoonFlag_delta < 0
    MoonFlag_delta_line:=-100
else
    MoonFlag_delta_line:=100
//plot (MoonFlag_MACD2, "MoonFlag Momentum Fast Length", color.red)
//plot (MoonFlag_aMACD2, "MoonFlag Momentum Slow Length", color.green)
//plot (MoonFlag_delta2, "MoonFlag Delta", color.white)

uptrend   = (close + high)/(close[1] + high[1])
downtrend =  (close + low)/(close[1] + low[1])

lineColor = color.green
if uptrend > 1
    lineColor := color.green
if downtrend < 1
    lineColor := color.red

smoothK     = 2//input.int(2, minval=1, title="K smoothing Stoch RSI")
smoothD     = 3//input.int(3, minval=1, title= "D smoothing for Stoch RSI")
lengthRSI   = 7//input.int(7, minval=1, title="RSI Length")
lengthStoch = 8//input.int(8, minval=1, title="Stochastic Length")
src = close//input(close, title="RSI Source")

rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
StochRSI = ta.sma(k, smoothD)

MACDdirection_line = 0
MACDdirection_line := MACDdirection_line[1]
if (MACDdelta > 0) 
    MACDdirection_line := 50
if (MACDdelta < 0) 
    MACDdirection_line := -50

useStochRSI = input.bool(true,"Include Condition (StochRSI > 20) with Exit Long/Enter Short")
StochRSI_val = 20//input.int(20,"StochRSI greater than to exit short")
h1 = hline(StochRSI_val)

StochRSIGreaterThanSetValue = true
if useStochRSI
    if  (StochRSI > StochRSI_val)
        StochRSIGreaterThanSetValue := true
    else
        StochRSIGreaterThanSetValue := false

stoch20 = lineColor
if StochRSI < StochRSI_val
    stoch20 := color.white

yearin = input.int(2019, title="Start backtesting from year:")

includeShorts = false//input.bool(false, "Include Shorts")

plot(MoonFlag_delta_line,"MoonFlag Momentum Direction", color.white)
plot(MACDdirection_line,"MACD Direction", color = color.orange)
plot(StochRSI, "StochRSI", color=lineColor)

if  (year>=yearin)
    if (MACDdelta > 0) and (uptrend > 1)   and MoonFlag_delta_line > 0
        strategy.entry("buy2", strategy.long, comment="buy")
    if (MACDdelta < 0) and (downtrend < 1) and MoonFlag_delta_line < 0 and StochRSIGreaterThanSetValue
        if includeShorts    
            strategy.entry("sell", strategy.short, comment="sell")
        else
            strategy.close("buy2", comment = "sell")



Больше