Эта статья подробно объясняет тенденцию следующей стратегии с использованием кроссовера EMA для генерации торговых сигналов.
I. Логика стратегии
Основные правила:
Установите быструю EMA и медленную EMA, с быстрой EMA для чувствительности к изменению цен и медленной EMA для тренда.
Пройти длинный курс на быстрой пересечении EMA выше медленной EMA и короткий курс на пересечении ниже.
Установите отношение EMA, когда медленный период ≥ 3 раза быстрый период, чтобы уменьшить ложные сигналы.
Опцион на длинный режим исключительно для избежания контратендентных сделок.
Настраиваемый период обратного тестирования для оптимизации параметров.
Настраивая параметры EMA, чувствительность и стабильность могут быть сбалансированы, чтобы извлечь выгоду из тенденций.
II. Преимущества стратегии
Наибольшее преимущество заключается в простоте использования, подходящей для трейдеров с ограниченным временем.
Еще одним преимуществом является способность уменьшать пробки с помощью оптимизации параметров.
Наконец, длинный только режим избегает контра-тенд торгов и подходит для определенных рынков, таких как акции.
III. Потенциальные недостатки
Однако существуют некоторые проблемы:
Во-первых, EMA по своей сути имеют отстающие вопросы, что приводит к пропущенным оптимальным записям.
Во-вторых, неправильные настройки могут перефильтровывать, вызывая пропущенные сделки.
Наконец, необходимо улучшить механизмы сдерживания потерь и получения прибыли.
IV. Резюме
В этой статье объясняется следующая стратегия, основанная на перекрестном использовании EMA. Она направлена на улучшение надежности путем настройки параметров EMA. С помощью простых и ясных правил ее легко реализовать, но риски, такие как отставание EMA, необходимо предотвратить.
/*backtest start: 2023-08-15 00:00:00 end: 2023-09-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © gregoirejohnb // // Moving average crossover systems measure drift in the market. They are great strategies for time-limited people. // So, why don't more people use them? // // I think it's due to poor choice in choosing EMA lengths: Market Wizard Ed Seykota has a guideline for moving average crossovers: the slow line should be at least 3x the fast line. // This removes a lot of the whipsaws inherent in moving average systems, which means greater profitability. // His other piece of advice: long-only strategies are best in stock markets where there's a lot more upside potential. // // Using these simple rules, we can reduce a lot of the whipsaws and low profitability trades! This strategy was made so you can see for yourself before trading. // // === HOW TO USE THIS INDICATOR === // 1) Choose your market and timeframe. // 2) Choose the length. // 3) Choose the multiplier. // 4) Choose if the strategy is long-only or bidirectional. // // Don't overthink the above! We don't know the best answers, that's why this strategy exists! We're going to test and find out. // After you find a good combination, set up an alert system with the default Exponential Moving Average indicators provided by TradingView. // // === TIPS === // Increase the multiplier to reduce whipsaws (back and forth trades). // Increase the length to take fewer trades, decrease the length to take more trades. // Try a Long-Only strategy to see if that performs better. // strategy(title="EMA Crossover Strategy", shorttitle="EMA COS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=10, currency=currency.USD,commission_type=strategy.commission.percent,commission_value=0.1) // === GENERAL INPUTS === //strategy start date start_year = input(defval=2020, title="Backtest Start Year") // === LOGIC === length = input(type=input.integer,defval=20,minval=1,title="Length") ratio = input(type=input.integer,defval=3,title="Multiplier (3x length, 4x length, etc)",options=[3,4,5,6,7,8,9,10]) longOnly = input(type=input.bool,defval=false,title="Long Only") fast = ema(hl2,length) slow = ema(hl2,length * ratio) plot(fast,linewidth=2,color=color.orange,title="Fast") plot(slow,linewidth=2,color=color.blue,title="Slow") longEntry = crossover(fast,slow) shortEntry = crossunder(fast,slow) plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle") plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle") plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign") // === STRATEGY - LONG POSITION EXECUTION === enterLong() => crossover(fast,slow) and time > timestamp(start_year, 1, 1, 01, 01) exitLong() => longOnly and crossunder(fast,slow) strategy.entry(id="Long", long=strategy.long, when=enterLong()) strategy.close(id="Long", when=exitLong()) // === STRATEGY - SHORT POSITION EXECUTION === enterShort() => not longOnly and crossunder(fast,slow) and time > timestamp(start_year, 1, 1, 01, 01) exitShort() => false strategy.entry(id="Short", long=strategy.short, when=enterShort()) strategy.close(id="Short", when=exitShort())