This pine script is the improved version of previous script. Check here. The strategy mainly the same, except it now has StopLoss function, so you sleep soundly knowing your capital is protected.
It also includes Start and Stop timestamp. It can be useful to backtest the strategy at a shorter/specific period of time.
Strategy Technical Description: It place Buy order when price crosses up EMA line and RSI is above BUY threshold. It exits when the RSI reaches SELL threshold. The recent swing low acts as StopLoss level.
Recommended setting:
Pair: IOUSDT (Binance)
Timeframe: 5 minutes
Capital in wallet: Minimum 30 USDT
//@version=5
strategy("EMA-RSI strategy[www.capayam.com]", overlay=false, initial_capital = 10, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
// The default setting is for IOUSDT (Binance TF5)
// Adjustable Inputs
emaLength = input.int(540, title="EMA Length")
rsiLength = input.int(14, title="RSI Length")
rsiOverboughtLevel = input.int(78, title="RSI Sell Threshold")
rsiOversoldLevel = input.int(57, title="RSI Buy Threshold")
swingLowLookback = input.int(21, title="Recent Swing Low (StopLoss)")
show_time = input(true, title="---Start Stop (Optional)---")
start_year = input(2022, title="Start Year")
start_month = input(1, title="Start Month (1-12)")
start_day = input(1, title="Start Day (1-31)")
stop_year = input(2026, title="Stop Year")
stop_month = input(12, title="Stop Month (1-12)")
stop_day = input(31, title="Stop Day (1-31)")
// Create timestamps from the input dates
start_trading_date = timestamp(start_year, start_month, start_day, 0, 0)
stop_trading_date = timestamp(stop_year, stop_month, stop_day, 23, 59)
// Define the EMAs
ema = ta.ema(close, emaLength)
// Define the RSI
rsi = ta.rsi(close, rsiLength)
// Buy Condition: Price crosses above Long EMA and RSI buy Threshold
BuySignal = ta.crossover(close, ema) and rsi > rsiOversoldLevel and (time >= start_trading_date) and (time <= stop_trading_date)
SellSignal = rsi > rsiOverboughtLevel
// Define the stop loss at the recent swing low
recentSwingLow = ta.lowest(low, swingLowLookback)
stopLoss = recentSwingLow
// Plot the EMAs
plot(ema, color=color.green, title="EMA Long")
// Plot the RSI
hline(rsiOverboughtLevel, "Overbought", color=color.red)
hline(rsiOversoldLevel, "Oversold", color=color.green)
plot(rsi, title="RSI", color=color.purple)
position_size = (math.ceil((strategy.equity / close) * 1))/1
// Strategy entry with stop loss and take profit
if (BuySignal)
strategy.entry("Buy", strategy.long, qty = position_size)
strategy.exit("StopLoss", "Buy", stop=stopLoss)
if (SellSignal)
strategy.close("Buy")
If you have other recommended stettings, please do share in the comment below.
Comments
Post a Comment