This is a special script that has been tested longest compared to previous script. Another indicator is added from the previous script which is the Fibonacci retracement level. Stop Loss also available based on previous low candles lookback. StopLoss is very important to protect your capital.
Strategy description: It places BUY order when price crosses up Fibonacci retracement line and when price above long EMA line and RSI is above Buy Threshold. It closes order when the RSI reached Sell Threshold, OR when the price hit StopLoss on previous low lookback.
Recommended setting:
Pair: ARKUSDT (Binance)
Time frame: 5min
Min capital in wallet: 50 USDT
//@version=5
strategy(ARK(Binance)TF5[www.capayam.com]", overlay=true, initial_capital=25, 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 ARKUSDT (Binance TF5min).
// Adjustable Inputs
emaLength = input.int(535, title="EMA Length")
rsiLength = input.int(18, title="RSI Length")
rsiOverboughtLevel = input.int(72, title="RSI Sell Threshold")
rsiOversoldLevel = input.int(59, title="RSI Buy Threshold")
swingLowLookback = input.int(22, title="Recent Swing Low (StopLoss)")
fibLevel = input(0.539, title="Fibonacci Level")
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)
// Identifying the Swing High and Swing Low
var float swingHigh = na
var float swingLow = na
if ta.highestbars(high, 5) == 0
swingHigh := high
if ta.lowestbars(low, 5) == 0
swingLow := low
// Fibonacci Retracement Level
fibRetracement = swingHigh - fibLevel * (swingHigh - swingLow)
// Buy Condition:
BuySignal = ta.crossover(close, fibRetracement) and 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
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")
// Plotting on price chart
plot(ema, title="EMA", color=color.blue) // Ensures EMA is plotted on the price chart
plot(fibRetracement, title="Fibonacci", color=color.red, linewidth=2, style=plot.style_line) // Ensures Fibonacci line is plotted on the price chart
Don't know how to set up your own bot? Read here, its easy!
Comments
Post a Comment