Тенденция абсолютного ценового осциллятора в соответствии со стратегией

Автор:Чао Чжан, Дата: 21 сентября 2023 года 15:27:59
Тэги:

Обзор

Эта стратегия использует индикатор абсолютного ценового осциллятора (APO) для генерации торговых сигналов и отслеживания тенденций.

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

  • APO состоит из более быстрой и более медленной EMA, принимая разницу между ними.

  • Когда APO пересекает зону покупки (по умолчанию 3), перейдите в длинную зону. Когда он пересекает зону продажи (по умолчанию -3), перейдите в короткую.

  • Опция обратного сигнала - пересечение выше продает, пересечение ниже покупает.

  • Кривая показывает импульс цены, может найти отклонения на дивергенции.

Оптимизированные параметры могут отслеживать среднесрочные тенденции.

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

  • Простая реализация с использованием базовой комбинации скользящих средних.

  • APO измеряет динамику и направление цены.

  • Параметры по умолчанию генерируют среднесрочные устойчивые сигналы, избегая чрезмерной торговли.

  • Может обнаруживать изменение тренда на основе дивергенции цены/показателя.

Риски

  • Склонны к ложным сигналам и провалам на различных рынках.

  • Сигналы задержки могут пропустить быстрые обратные действия.

  • Нет стоп-лосса или размеров позиций, неполный риск-менеджмент.

Уменьшение последствий:

  • Оптимизировать параметры и испытывать различные комбинации по каждому инструменту.

  • Добавьте фильтры, чтобы избежать торговли в нестабильных условиях.

  • Внедрять стоп-лосс, например, стоп-остановку.

Возможности для расширения

  • Оптимизация параметров для каждого инструмента для поиска идеальных пар.

  • Дополнительные фильтры на движение цены или объем для уменьшения ложных сигналов.

  • Динамическое размещение позиций на основе волатильности или процента счета.

  • Оптимизированы для получения прибыли, такие как отслеживание остановки, чтобы следовать тенденциям.

  • ML для оценки вероятности успешных сигналов дивергенции.

Заключение

Эта кроссоверная система EMA с использованием APO обеспечивает прочную основу для следования трендам. Благодаря оптимизации параметров, управления рисками и фильтров она может стать эффективной количественной стратегией.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/09/2018
// The Absolute Price Oscillator displays the difference between two exponential 
// moving averages of a security's price and is expressed as an absolute value.
// How this indicator works
//    APO crossing above zero is considered bullish, while crossing below zero is bearish.
//    A positive indicator value indicates an upward movement, while negative readings 
//      signal a downward trend.
//    Divergences form when a new high or low in price is not confirmed by the Absolute Price 
//      Oscillator (APO). A bullish divergence forms when price make a lower low, but the APO 
//      forms a higher low. This indicates less downward momentum that could foreshadow a bullish 
//      reversal. A bearish divergence forms when price makes a higher high, but the APO forms a 
//      lower high. This shows less upward momentum that could foreshadow a bearish reversal.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Absolute Price Oscillator (APO) Backtest 2.0", shorttitle="APO")
LengthShortEMA = input(10, minval=1)
LengthLongEMA = input(20, minval=1)
BuyZone = input(3, step = 0.01)
SellZone = input(-3, step = 0.01)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
hline(0, color=gray, linestyle=line)
xPrice = close
xShortEMA = ema(xPrice, LengthShortEMA)
xLongEMA = ema(xPrice, LengthLongEMA)
xAPO = xShortEMA - xLongEMA
pos = iff(xAPO > BuyZone, 1,
       iff(xAPO < SellZone, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )  
plot(xAPO, color=blue, title="APO")

Больше