Strategy · Pine Script v5 · On the chart

12/26-IT Strategy

by hasnocool· code credited to AbdulRahimShama

This strategy executes trades based on crossovers between a 12-period and a 26-period exponential moving average (EMA).

View on GitHub

GitHub stars106on the repository
Pine versionv5runs as is
Lines of code105
Settings21inputs
LicenceGPL-3.0
Last update2 years ago18 Sep 2024

Add It to Your TradingView Chart

  1. 1Copy the scriptPress Copy script above, or the copy button on the code below.
  2. 2Open the Pine EditorOpen a TradingView chart and choose Pine Editor at the bottom of the screen.
  3. 3Paste over the templateCreate a new strategy, select all of the template text and paste. Press Save and give it a name.
  4. 4Add it to the chartPress Add to chart. The trades and results appear in the Strategy Tester tab; adjust the settings with the gear icon.

Source Code

105 lines of Pine Script v5 from 12-26-IT strategy.pine, published under GPL-3.0. Keep the author's credit and licence lines when you reuse it.

12-26-IT strategy.pine
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © AbdulRahimShama
//@version=5
strategy('12/26-IT strategy', overlay=true,initial_capital = 100000, calc_on_order_fills = true, pyramiding = 10)
Show_Only_12_26_Crossover_Entry             = input.bool(true, group = "Entry_Exit Criteria")
Show_12_26_Crossover_and_resistance_Entry   = input.bool(false, group = "Entry_Exit Criteria")
Show_MA_StopLoss                            = input.bool(false, group = "Entry_Exit Criteria", tooltip = "update values as per your requirement in MA section")
Show_TSL_StopLoss                           = input.bool(false, group = "Entry_Exit Criteria")
Show_Crossdown_StopLoss                     = input.bool(true, group = "Entry_Exit Criteria")
////////////////////////////////////////////////
////////////////TARGETS INPUT
////////////////////////////////////////////////
////////Target1
TargetPerc1         = input.float(title="Target (%)", minval=0,defval=5, group="Target-1") / 100
TargetPrice1        = strategy.position_avg_price * (1 + TargetPerc1)
Target1_exit_qty    = input.int(50, group="Target-1",tooltip = "% qty to sell when Target1 is reached")
////////Target2
TargetPerc2         = input.float(title="Target (%)", minval=0,defval=10, group="Target-2") / 100
TargetPrice2        = strategy.position_avg_price * (1 + TargetPerc2)
Target2_exit_qty    = input.int(100, group="Target-2",tooltip = "% qty to sell when Target2 is reached")
////////////////////////////////////////////////
////////////////TRAILING STOP LOSS
////////////////////////////////////////////////
TSLsource           = input(low, title="TSL Source", group="Trailing StopLoss")
longTrailPerc       = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=1, group="Trailing StopLoss") * 0.01
TrailStopPrice = 0.0
TrailStopPrice := if strategy.position_size > 0
    sPIVOT_highValue = TSLsource * (1 - longTrailPerc)
    math.max(sPIVOT_highValue, TrailStopPrice[1])
else
    0
TSL                 = close < TrailStopPrice
plot(series=strategy.position_size > 0 and Show_TSL_StopLoss ? TrailStopPrice : na, color=color.new(color.fuchsia, 0), style=plot.style_linebr, linewidth=2, title='Trailing StopLoss')
////////////////////////////////////////////////
////////////////Moving Averages
////////////////////////////////////////////////
SLmaLength          = input.int(21, group="StopLoss MA")
SLmaSource          = input(low, group="StopLoss MA")
ma(SLmaSource, length, type) =>
    switch type
        "SMA" => ta.sma(SLmaSource, SLmaLength)
        "EMA" => ta.ema(SLmaSource, SLmaLength)
SLmaType            = input.string("EMA", title="StopLoss MA", options=["SMA", "EMA"], group="StopLoss MA")
SL_MA =             ma(SLmaSource, SLmaLength, SLmaType)
plot(Show_MA_StopLoss ? SL_MA : na, "StopLoss for MA", color=color.rgb(255, 0, 0))
EMA_12              =ta.ema(close, 12)
EMA_26              =ta.ema(close, 26)
EMA_21              =ta.ema(close,21)
plot(EMA_12, title="EMA_12", color=color.rgb(0, 255, 0), offset=0, linewidth=1)
plot(EMA_26, title="EMA_26", color=color.rgb(0, 0, 255), offset=0, linewidth=2)
plot(Show_MA_StopLoss ? SL_MA : na, "StopLoss for MA", color=color.rgb(255, 0, 0))
////////////////////////////////////////////////
////////////////RESISTANCE INPUT and PLOTTING
////////////////////////////////////////////////
CrossOverLookbackCandles    = input.int(10, group= "RESISTANCE")
resistanceSRC               = input(high, group= "RESISTANCE")
resistanceLEFT              = input(10, group= "RESISTANCE")
resistanceRIGHT             = input(10, group= "RESISTANCE")
hih = ta.pivothigh(resistanceSRC, resistanceLEFT, resistanceRIGHT)
top = ta.valuewhen(hih, resistanceSRC[resistanceRIGHT], 0)
res = plot(top, color=top != top[1] ? na : color.new(#00ff00, 50), offset=-resistanceLEFT, linewidth=2, title="Resistance Line")
EMA_12_Low = ta.lowest(EMA_12, CrossOverLookbackCandles)
EMA_26_Low = ta.lowest(EMA_26, CrossOverLookbackCandles)
////////////////////////////////////////////////
////////////////RSI INPUT and PLOTTING
////////////////////////////////////////////////
RSI                 = ta.rsi(close, 14)
RSILowerRange       = input.int(45, tooltip = "RSI value should be ABOVE this value for entry", group = "RSI")
RSIUpperRange       = input.int(70, tooltip = "RSI value should be BELOW this value for entry", group = "RSI")
////////////////////////////////////////////////
////////////////MACD
////////////////////////////////////////////////
fast_length         = 12
slow_length         = 26
MACD_src            = close
signal_length       = 9
fast_ma             = ta.ema(MACD_src, fast_length)
slow_ma             = ta.ema(MACD_src, slow_length)
macd                = fast_ma - slow_ma
signal              = ta.ema(macd, signal_length)
hist                = macd - signal
////////////////////////////////////////////////
////////////////ENTRY CRITERIA
////////////////////////////////////////////////
BUYVALUE        = input(100000, tooltip = "Buy qty displayed on chart will be based on this value")
BASEENTRY       = macd > signal and RSI > RSILowerRange and RSI < RSIUpperRange and close > EMA_21 and close > ta.sma(close, 7)
Entry           = ta.crossover(EMA_12, EMA_26) and BASEENTRY
Entry2          = ta.crossover(close, top) and EMA_12_Low < EMA_26_Low and EMA_12 > EMA_26 and RSI < 80
////////////////////////////////////////////////
////////////////BUY SELL STRATEGY
////////////////////////////////////////////////
if ((Entry and Show_Only_12_26_Crossover_Entry))
    strategy.entry("buy", strategy.long, qty=BUYVALUE/close)
if (Entry2 and Show_12_26_Crossover_and_resistance_Entry)
    strategy.entry("buy", strategy.long, qty=BUYVALUE/close)
strategy.exit("Tg1", "buy", limit=TargetPrice1, qty_percent = Target1_exit_qty)
strategy.exit("Tg2", "buy", limit=TargetPrice2, qty_percent = Target2_exit_qty)
if TSL and Show_TSL_StopLoss and close < EMA_12 
    strategy.close_all ("sl")
if ta.crossunder(EMA_12, EMA_26) and Show_Crossdown_StopLoss
    strategy.close_all ("sl")
if ta.crossunder(close, SL_MA) and Show_MA_StopLoss
    strategy.close_all ("sl")
bgcolor(color=((Entry and Show_Only_12_26_Crossover_Entry)) ? color.new(color.blue, 0) : na)
Expand (171 lines)

Overview

Long positions can be filtered by pivot resistance breakouts and RSI boundary ranges. For trade management, it provides two configurable partial profit targets and multiple exit mechanisms, including a trailing stop, a dedicated stop-loss moving average, or an EMA crossdown. It plots the moving averages and trailing stop levels directly on the price chart.

Details

Published by

hasnocool on GitHub

Code credit

AbdulRahimShama, as written in the script's header

Type

Strategy, Pine Script v5

Draws

On the price chart

Category

Trend, Moving averages, Breakout

Markets

Any symbol

Timeframes

Any timeframe

Risk Notes

  • The strategy can add several entries in the same direction
  • The strategy enters trades without a stop loss

Topics

analysisbtcusdtcryptocurrencydatapandaspythonsimulationtradingtradingview

Settings

The inputs you can change from the gear icon on the chart. Defaults are the author's.

SettingTypeDefaultVariable
Show_Only_12_26_Crossover_EntrybooltrueShow_Only_12_26_Crossover_Entry
Show_12_26_Crossover_and_resistance_EntryboolfalseShow_12_26_Crossover_and_resistance_Entry
Show_MA_StopLossboolfalseShow_MA_StopLoss
Show_TSL_StopLossboolfalseShow_TSL_StopLoss
Show_Crossdown_StopLossbooltrueShow_Crossdown_StopLoss
Target (%)float5TargetPerc1
Target1_exit_qtyint50Target1_exit_qty
Target (%)float10TargetPerc2
Target2_exit_qtyint100Target2_exit_qty
TSL SourcesourcelowTSLsource
Trail Long Loss (%)float1longTrailPerc
SLmaLengthint21SLmaLength
Show all 21 settings
SettingTypeDefaultVariable
SLmaSourcesourcelowSLmaSource
StopLoss MAstringEMASLmaType
CrossOverLookbackCandlesint10CrossOverLookbackCandles
resistanceSRCsourcehighresistanceSRC
resistanceLEFTint10resistanceLEFT
resistanceRIGHTint10resistanceRIGHT
RSILowerRangeint45RSILowerRange
RSIUpperRangeint70RSIUpperRange
BUYVALUEint100000BUYVALUE
Third-party code. ForexR did not write, test or endorse this script, and the summary above was generated automatically from its code and README. Indicators describe the past, and a strategy's backtest can look better than live trading, especially when a script repaints. Check it in the Strategy Tester and on a demo account before you rely on it.

Similar Pine Scripts

257 stars

This strategy plots running pivot highs as red R circles and pivot lows as blue S circles directly on the price chart. It computes an EMA 3 and a Cto trend line from close prices, then generates long signals on upward EMA-Cto crossovers combined with price pos

Strategy v6 TrendMoving averages Repaints
Updated 6 weeks ago · None stated GitHub repository of Best Chart 1m Strategy Candle Bar

均线突破交易系统

by tangly1024
76 stars

This strategy trades long breakouts of a fast and a slow moving average on the price chart. It opens a long position when price crosses above either average, using a percentage of equity as size. It reduces the position by a set share when the high reaches the

Strategy v5 TrendMoving averages
Updated 4 months ago · None stated GitHub repository of 均线突破交易系统
43 stars

This strategy executes trades on short-term cryptocurrency charts using a combination of pivot support and resistance levels and a multi-pole smoothed trend filter. Entries trigger when price crosses the smoothed trend line and confirms above or below a short-

Strategy v5 TrendBreakout Repaints
Updated 2 years ago · None stated GitHub repository of SOL 1m - Strategy Candle Bar

ADA4H Optuna Strategy

by skywalker0803r
42 stars

This strategy trades longs and shorts on the price chart. Long entries require a close above the prior Donchian high, a close above a long-term SMA, and RSI above a threshold, with size set as a percentage of equity. Long exits use a stop at the prior Donchian

Strategy v5 TrendOscillators & momentum
Updated 2 months ago · None stated GitHub repository of ADA4H Optuna Strategy
16 stars

This strategy plots Donchian channels, trailing stops, and profit targets directly on the price chart. It enters breakout trades using a 55-bar Donchian channel and sizes positions according to an ATR-based risk percentage per unit. The system adds units as pr

Strategy v6 TrendBreakout
Updated 11 months ago · None stated GitHub repository of Seykota Alt 10: Profit Targets

More strategys

Trade Your Charts With a Regulated Broker

Compare brokers that connect to TradingView, with spreads, minimum deposits and leverage side by side.

Compare brokers