0bps

Strategy vault / Breakout

Multi Indicator Short Term Algorithmic Trading Strategy

This article introduces in detail a short-term algorithmic trading strategy combining multiple indicators. It utilizes a group of powerful technical indicators to generate trading signals on lower timeframes such as…

Author
ChaoZhang
Complexity
Intermediate · 70 lines
Parameters
11
Backtest bar
4h · intraday
Tested on
BTC/USDT · futures

This article introduces in detail a short-term algorithmic trading strategy combining multiple indicators. It utilizes a group of powerful technical indicators to generate trading signals on lower timeframes such as the 15-minute chart.

I. Strategy Logic

The core of this strategy is using a combination of multiple indicators, mainly including:

(1) Dual Moving Average system: Calculates one fast and one slow Hull Moving Average and judges the trend based on their crossover.

(2) Ichimoku system: Calculates the conversion and base lines among others, and determines the trend and support/resistance levels based on the Ichimoku cloud.

(3) Donchian Channel: Constructs a channel using highest and lowest prices to identify price breakouts.

(4) MACD: Calculates the MACD and signal line, making trades based on their crossover.

Only when these indicators reach a consensus on the trend judgment will reliable trading signals be generated. The specific logic is:

Take long positions when fast Hull MA crosses above slow Hull MA, AND Ichimoku lines cross above the cloud, AND Donchian Channel breaks out, AND MACD crosses above signal line. Reverse conditions for short trades.

Daily bar closing prices are also incorporated to avoid being trapped in reversals.

In addition, the strategy contains stop loss and take profit logic to control risk and reward for each trade.

II. Advantages of the Strategy

The biggest advantage of this strategy is the complementarity of indicator combinations, which improves signal quality. Different indicators judge the trend from multiple angles, only agreeing unanimously to generate signals, avoiding the limitations of single indicators.

Secondly, the multi-timeframe combination is also a significant advantage. The auxiliary judgment from the daily bars can filter out the risk of being trapped in short-term cycles.

Lastly, the stop loss and take profit mechanism also ensures controllable risks per trade.

III. Potential Risks

Despite the sound strategy design, trading risks should also be noted:

Firstly, the multiple indicator combination increases optimization difficulty. Improper tuning can lead to overfitting.

Secondly, stop losses may be hit in strong trending moves, leading to unnecessary losses.

Finally, multi-timeframe judgments can also introduce confusing situations that are hard to decipher.

Overall, the strategy combines indicators in a scientific manner, and can become an effective short-term algorithmic trading system through parameter testing and optimization.

IV. Summary

In summary, this article has introduced in detail a short-term algorithmic trading strategy combining multiple indicators. It uses a combination of dual moving averages, Ichimoku, Donchian Channel, MACD and more to improve signal quality. It also utilizes multi-timeframe analysis and stop loss/take profit logic to control risks. With optimization, this strategy can become an efficient system for short-term systematic trading.

Parameters

NameDefaultWhat it controls
v_input_114Double HullMA
v_input_20.001Decision Threshold (0.001)
v_input_3-500Stop Loss in $
v_input_425000Target Point in $
v_input_59Conversion Line Periods
v_input_626Base Line Periods
v_input_752Lagging Span 2 Periods
v_input_826Displacement
v_input_99MACD_Length
v_input_1012MACD_fastLength
v_input_1126MACD_slowLength

Source Pine Script

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

//@version=2
// Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend
strategy("Custom 15m strat",overlay=true)
keh=input(title="Double HullMA",defval=14, minval=1)
dt = input(defval=0.0010, title="Decision Threshold (0.001)", step=0.0001)`
SL = input(defval=-500.00, title="Stop Loss in $", step=1)
TP = input(defval=25000.00, title="Target Point in $", step=1)
ot=1
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green
confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1])
conversionPeriods = input(9, minval=1, title="Conversion Line Periods")
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
LS=close, offset = -displacement
MACD_Length = input(9)
MACD_fastLength = input(12)
MACD_slowLength = input(26)
MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength) //macd
aMACD = ema(MACD, MACD_Length) //signal
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD
if (shortCondition)
    strategy.entry("Short",strategy.short)

a1=plot(n1,color=c)
a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4)
plot(conversionLine, color=#0496ff, title="Conversion Line")
plot(baseLine, color=#991515, title="Base Line")
//plot(longCondition == true ? 4000:4100,title="long")
plot(close, offset = -displacement, color=#459915, title="Lagging Span")
p1=plot (leadLine1, offset = displacement, color=green,  title="Lead 1")
p2=plot (leadLine2, offset = displacement, color=red,  title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)
// remove the "//" from before the plot script if want to see the indicators on chart

Published by ChaoZhang on the FMZ strategy square · last modified 2023-09-14. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.

Build this with AgenKit

A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.

in Claude Code, Cursor, Codex & 4 more
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Multi-Indicator-Short-Term-Algorithmic-Trading-Strategy.md
  1. npx agenkit install engineering-kit in your project
  2. Paste the command into your agent and approve each phase
  3. Get tests, backtest, risk controls and a paper-trading switch

Understand it first

Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.

Related specs

esc

Try , , or .

↑↓ move↵ open