
Эта стратегия позволяет автоматизировать многооборотную торговлю в течение нескольких временных рамок, используя в сочетании три показателя: Parabolic SAR, MACD и RSI. Стратегия применяется в основном для торговли в течение дня на акциях и товарных товарах.
Показатель PSAR используется для определения направления цены и точки обратного тренда. Когда количество пунктов падает, это является многоголовым сигналом, а когда количество пунктов увеличивается, это является пустым сигналом.
MACD-индикатор определяет движение цены. MACD-линия и SIGNAL-линия прорываются вверх как многоголовые сигналы, а вниз - как пустые сигналы.
RSI определяет перекуп и перепродажу. Если RSI выше, чем обесценение, то это сигнал о перезагрузке, а если он ниже, то это сигнал о перезагрузке.
Сигналы, объединенные с тремя вышеперечисленными показателями, формируют окончательное решение о многообещающем голове.
Приспосабливайтесь к использованию индекса Chop Index, чтобы отфильтровывать консолидирующие рынки и избегать whipsaws.
Применение принципа инверсионной пирамиды для динамического управления рисками и прибылью путем установления стоп-лосса и стоп-стоп.
Многопоказательная комбинация, объединяющая тенденции, динамику и характеристики перекупа и перепродажи, повышает точность принятия решений.
Приспосабливаясь к рыночным особенностям, отфильтровывая консолидирующийся рынок с помощью индекса Chop Index, чтобы избежать подтасовки.
Управление рисками и динамикой прибыли с использованием принципа обратной пирамиды для достижения активного стоп-стоп.
Настраиваемые и оптимизируемые параметры легко адаптируются к различным видам и рыночным условиям.
Поддержка нескольких временных рамок, гибкость в использовании для краткосрочных и среднесрочных транзакций.
При принятии решений в многоголовном режиме используются параметры, которые могут привести к ошибкам, если они установлены неправильно.
Существует вероятность того, что индикатор пошлет неверный сигнал, что может привести к принятию решений, противоречащих тренду.
Неправильно установленный стоп-стартер может увеличить убытки или снизить прибыль.
Необходимость частого мониторинга и корректировки параметров, большие затраты на человеческое вмешательство.
Добавление модулей проверки модели, оценки параметров и эффективности сигналов.
Добавление модулей машинного обучения для автоматической оптимизации параметров и моделей.
Доступ к большему количеству источников данных, больше возможностей для разработки и принятия решений.
Разработка автоматизированных систем мониторинга и эксплуатации, снижение затрат на человеческое вмешательство.
Повышение эффективности ретроспективных и имитационных оценок и стратегий тестирования.
Эта стратегия использует комбинацию различных технических показателей для автоматизированной количественной торговли на основе правил. Стратегия имеет большое пространство для оптимизации, обладает большой масштабируемостью и подходит для оптимизации, такой как параметрическая корректировка, расширение функций и машинное обучение.
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vikris
//@version=4
strategy("[VJ]Phoenix Force of PSAR +MACD +RSI", overlay=true, calc_on_every_tick = false,pyramiding=0)
// ********** Strategy inputs - Start **********
// Used for intraday handling
// Session value should be from market start to the time you want to square-off
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session,
defval="0915-1455", confirm=true)
// Make inputs that set the take profit % (optional)
longProfitPerc = input(title="Long Take Profit (%)",
type=input.float, minval=0.0, step=0.1, defval=3) * 0.01
shortProfitPerc = input(title="Short Take Profit (%)",
type=input.float, minval=0.0, step=0.1, defval=3) * 0.01
// Set stop loss level with input options (optional)
longLossPerc = input(title="Long Stop Loss (%)",
type=input.float, minval=0.0, step=0.1, defval=3) * 0.01
shortLossPerc = input(title="Short Stop Loss (%)",
type=input.float, minval=0.0, step=0.1, defval=3) * 0.01
// ********** Strategy inputs - End **********
// ********** Supporting functions - Start **********
// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0
// Figure out take profit price
longExitPrice = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)
// Determine stop loss price
longStopPrice = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)
// ********** Supporting functions - End **********
// ********** Strategy - Start **********
// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)
// Trade only if intraday session is active
//=================Strategy logic goes in here===========================
psar = sar(0.02,0.02,0.2)
c1a = close > psar
c1v = close < psar
malen = input(50, title="MA Length")
mm200 = sma(close, malen)
c2a = close > mm200
c2v = close < mm200
fast = input(12, title="MACD Fast EMA Length")
slow = input(26, title="MACD Slow EMA Length")
[macd,signal,hist] = macd(close, fast,slow, 9)
c3a = macd >= 0
c3v = macd <= 0
rsilen = input(7, title="RSI Length")
th = input(50, title="RSI Threshold")
rsi14 = rsi(close, rsilen)
c4a = rsi14 >= th
c4v = rsi14 <= th
chopi = input(7, title="Chop Index lenght")
ci = 100 * log10(sum(atr(1), chopi) / (highest(chopi) - lowest(chopi))) / log10(chopi)
buy = c1a and c2a and c3a and c4a ? 1 : 0
sell = c1v and c2v and c3v and c4v ? -1 : 0
//Final Long/Short Condition
longCondition = buy==1 and ci <50
shortCondition = sell==-1 and ci <50
//Long Strategy - buy condition and exits with Take profit and SL
if (longCondition and intradaySession)
stop_level = longStopPrice
profit_level = longExitPrice
strategy.entry("My Long Entry Id", strategy.long)
strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level, limit=profit_level)
//Short Strategy - sell condition and exits with Take profit and SL
if (shortCondition and intradaySession)
stop_level = shortStopPrice
profit_level = shortExitPrice
strategy.entry("My Short Entry Id", strategy.short)
strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level)
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")
// ********** Strategy - End **********