Free-Trading-Bots
  • Introduction
  • Go to WunderTrading
  • Public roadmap
  • Free TradingView Strategies
    • RSI-VWAP
    • MTF Stochastic
    • Forex Master
    • TSI CCI HULL
    • Trading Bot for Binance Futures
      • MTF Stochastic – trading bot for Binance Futures
    • Trading Bot for BitMEX
      • MACD strategy with ATR for BitMEX
    • Trading Bot for Bybit
      • MTF Stochastic – trading bot for Bybit
    • Trading Bot for Deribit
      • RSI-VWAP – Trading Bot for Deribit
    • Trading Bot for FTX
      • Scalping Bot - trading bot for FTX
      • Keltner's Channel Bot - Trading Bot for FTX
      • RSI-VWAP 2.0 - Trading Bot for FTX
      • MACD strategy - Free Crypto Trading Bot
Powered by GitBook
On this page
  • Top FREE Tradingview strategy this week!
  • Video overview
  • What we will provide
  • Description
  • Settings
  • TradingView Strategy Script Code

Was this helpful?

  1. Free TradingView Strategies
  2. Trading Bot for FTX

RSI-VWAP 2.0 - Trading Bot for FTX

TradingView based bot strategy for Ethereum Futures (ETH-PERP) on 15m, FTX exchange.

PreviousKeltner's Channel Bot - Trading Bot for FTXNextMACD strategy - Free Crypto Trading Bot

Last updated 4 years ago

Was this helpful?

Latest code revision – 24.12.2020

Top FREE Tradingview strategy this week!

To make our community more profitable we decided to start a series in which we will review open-source TradingView strategies. The aim of the review is to select a strategy (or a number of strategies) from TradingView and run a reality check on it, optimise them and convert them into alerts, so you can set it up as a bot on Wunderbit Trading platform.

Video overview

Note

What we will provide

  • Open-strategy source

  • Strategy adjustment for particular exchange, pair, and timeframe

  • Backtest

Description

IMPORTANT

  • Input Partial take profits in your Wunderbit Bot settings

  • This is a trend strategy and works better in the trending market

  • We added the trend identifier using the EMA and SMA interaction

  • We added Take profit and stop loss levels

  • We added inputs for the period selection, so you could see how the strategy is performing on a monthly basis.

  • RVI for the entry conditions

  • MFI was added for the additional entries.

  • Partial Take-profits

Settings

Input

Value

Period

19

RVI Period

100

RVI Benchmark

20

MFI Length

11

MFI Lower Level

24

MFI Higher Level

85

RSI-VWAP LENGTH LONG

14

RSI-VWAP OVERSOLD LONG

12

RSI-VWAP OVERBOUGHT LONG

60

RSI-VWAP LENGTH SHORT

14

RSI-VWAP OVERSOLD SHORT

23

RSI-VWAP OVERBOUGHT SHORT

68

Long Take Profit 1%

4

Long Take Profit 1 Qty

15

Long Take Profit 2%

12

Long Take Profit 2 Qty

100

Long Stop Loss %

3.3

Short Take Profit 1%

3.2

Short Take Profit 1 Qty

20

Short Take Profit 2%

5.5

Short Take Profit 2Qty

100

Short Stop Loss

3.2

TradingView Strategy Script Code

You can copy this code and paste it into your TradingView.

//(c) Wunderbit Trading

//@version=4
strategy("RSI-VWAP INDICATOR v2", overlay=false, initial_capital = 1000, currency = "USD", pyramiding = 2, commission_type=strategy.commission.percent, commission_value=0.07, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//Functions
Atr(p) =>
    atr = 0.
    Tr = max(high - low, max(abs(high - close[1]), abs(low - close[1])))
    atr := nz(atr[1] + (Tr - atr[1])/p,Tr)

/// TREND
ribbon_period = input(19, "Period", step=1)

leadLine1 = ema(close, ribbon_period)
leadLine2 = sma(close, ribbon_period)

p1 = plot(leadLine1, color= #53b987, title="EMA", transp = 50, linewidth = 1)
p2 = plot(leadLine2, color= #eb4d5c, title="SMA", transp = 50, linewidth = 1)
fill(p1, p2, transp = 60, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c)

// Relative volatility index
length = input(100,"RVI period", minval=1), src = close
len = 11
stddev = stdev(src, length)
upper = ema(change(src) <= 0 ? 0 : stddev, len)
lower = ema(change(src) > 0 ? 0 : stddev, len)
rvi = upper / (upper + lower) * 100
benchmark = input(20, "RVI benchmark", minval=10, maxval=100, step=0.1)

// Plot RVI
// h0 = hline(80, "Upper Band", color=#C0C0C0)
// h1 = hline(20, "Lower Band", color=#C0C0C0)
// fill(h0, h1, color=#996A15, title="Background")
// offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
// plot(rvi, title="RVI", color=#008000, offset = offset)


/// MFI input
mfi_source = hlc3
mfi_length = input(11, "MFI Length", minval=1)
mfi_lower = input(24, "MFI Lower level", minval=0, maxval=50)
mfi_upper = input(85, "MFI Higher level", minval=50, maxval=100)


// MFI
upper_s = sum(volume * (change(mfi_source) <= 0 ? 0 : mfi_source), mfi_length)
lower_s = sum(volume * (change(mfi_source) >= 0 ? 0 : mfi_source), mfi_length)
mf = rsi(upper_s, lower_s)
// mfp = plot(mf, color=color.new(color.gray,0), linewidth=1)
// top = hline(mfi_upper, color=color.new(color.gray, 100), linewidth=1, editable=false)
// bottom = hline(mfi_lower, color=color.new(color.gray,100), linewidth=1, editable=false)
// hline(0, color=color.new(color.black,100), editable=false)
// hline(100, color=color.new(color.black,100), editable=false)

// Breaches
// b_color = (mf > mfi_upper) ? color.new(color.red,70) : (mf < mfi_lower) ? color.new(color.green,60) : na
// bgcolor(HighlightBreaches ? b_color : na)

// fill(top, bottom, color=color.gray, transp=75)

// Initial inputs
Act_RSI_VWAP_long = input(true, "RSI VOLUME WEIGHTED AVERAGE PRICE LONG")
RSI_VWAP_length_long = input(14, "RSI-VWAP LENGTH LONG")
RSI_VWAP_overSold_long = input(23, "RSI-VWAP OVERSOLD LONG", type=input.float)
RSI_VWAP_overBought_long = input(60, "RSI-VWAP OVERBOUGHT LONG", type=input.float)

Act_RSI_VWAP_short = input(true, "RSI VOLUME WEIGHTED AVERAGE PRICE SHORT")
RSI_VWAP_length_short = input(14, "RSI-VWAP LENGTH SHORT")
RSI_VWAP_overSold_short = input(23, "RSI-VWAP OVERSOLD SHORT", type=input.float)
RSI_VWAP_overBought_short = input(68, "RSI-VWAP OVERBOUGHT SHORT", type=input.float)

// RSI with VWAP as source
RSI_VWAP_long = rsi(vwap(close), RSI_VWAP_length_long)
RSI_VWAP_short = rsi(vwap(close), RSI_VWAP_length_short)

// Plot Them Separately.
//Plotting LONG, Put overlay=false
// r_long=plot(RSI_VWAP_long, color = RSI_VWAP_long > RSI_VWAP_overBought_long ? color.red : RSI_VWAP_long < RSI_VWAP_overSold_long ? color.lime : color.blue, title="rsi", linewidth=2, style=plot.style_line)
// h1_long=plot(RSI_VWAP_overBought_long, color = color.gray, style=plot.style_stepline)
// h2_long=plot(RSI_VWAP_overSold_long, color = color.gray, style=plot.style_stepline)
// fill(r_long,h1_long, color = RSI_VWAP_long > RSI_VWAP_overBought_long ? color.red : na, transp = 60)
// fill(r_long,h2_long, color = RSI_VWAP_long < RSI_VWAP_overSold_long ? color.lime : na, transp = 60)

// Plotting SHORT, Put overlay=false
// r_short=plot(RSI_VWAP_short, color = RSI_VWAP_short > RSI_VWAP_overBought_short ? color.red : RSI_VWAP_short < RSI_VWAP_overSold_short ? color.lime : color.blue, title="rsi", linewidth=2, style=plot.style_line)
// h1_short=plot(RSI_VWAP_overBought_short, color = color.gray, style=plot.style_stepline)
// h2_short=plot(RSI_VWAP_overSold_short, color = color.gray, style=plot.style_stepline)
// fill(r_short,h1_short, color = RSI_VWAP_short > RSI_VWAP_overBought_short ? color.red : na, transp = 60)
// fill(r_short,h2_short, color = RSI_VWAP_short < RSI_VWAP_overSold_short ? color.lime : na, transp = 60)


///////  STRATEGY Take Profit / Stop Loss ////////
////// LONG //////

long_tp1_inp = input(4, title='Long Take Profit 1 %', step=0.1)/100
long_tp1_qty = input(15, title="Long Take Profit 1 Qty", step=1)

long_tp2_inp = input(12, title='Long Take Profit 2%', step=0.1)/100
long_tp2_qty = input(100, title="Long Take Profit 2 Qty", step=1)

long_sl_inp = input(3.3, title='Long Stop Loss %', step=0.1)/100

long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp)
long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)

////// SHORT //////
short_tp1_inp = input(3.2, title='Short Take Profit 1 %', step=0.1)/100
short_tp1_qty = input(20, title="Short Take Profit 1 Qty", step=1)

short_tp2_inp = input(5.5, title='Short Take Profit 2%', step=0.1)/100
short_tp2_qty = input(100, title="Short Take Profit 2 Qty", step=1)

short_sl_inp = input(3.2, title='Short Stop Loss %', step=0.1)/100

short_take_level_1 = strategy.position_avg_price * (1 - short_tp1_inp)
short_take_level_2 = strategy.position_avg_price * (1 - short_tp2_inp)
short_stop_level = strategy.position_avg_price * (1 + short_sl_inp)


///Strategy_Conditions
/// LONG ///
entry_long =(crossover(RSI_VWAP_long, RSI_VWAP_overSold_long) and leadLine2<leadLine1) or (crossunder(mf,mfi_lower) and leadLine2<leadLine1)
entry_price_long=valuewhen(entry_long,close,0)
exit_long =crossunder(RSI_VWAP_long, RSI_VWAP_overBought_long)

/// SHORT ///

entry_short =crossunder(RSI_VWAP_short, RSI_VWAP_overBought_short) and leadLine2>leadLine1 or (crossover(mf,mfi_upper) and leadLine2>leadLine1)
entry_price_short=valuewhen(entry_short,close,0)
exit_short =crossover(RSI_VWAP_short, RSI_VWAP_overSold_short)

////// BACKTEST PERIOD ///////
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(9999, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

if testPeriod()

    if strategy.position_size == 0 or strategy.position_size > 0 and rvi>benchmark
        strategy.entry("long", true, when = entry_long, comment="INSERT ENTER LONG COMMENT")
    strategy.exit("TP1","long", qty_percent=long_tp1_qty, limit=long_take_level_1)
    strategy.exit("TP2","long", qty_percent=long_tp2_qty, limit=long_take_level_2, comment ="INSERT EXIT LONG COMMENT")
    strategy.close("long", when=exit_long, comment = "INSERT EXIT LONG COMMENT")

    if strategy.position_size == 0 or strategy.position_size < 0 and rvi>benchmark
        strategy.entry("short", false, when = entry_short, comment="INSERT ENTER SHORT COMMENT")
    strategy.exit("TP1","short", qty_percent=short_tp1_qty, limit=short_take_level_1)
    strategy.exit("TP2","short", qty_percent=short_tp2_qty, limit=short_take_level_2, comment = "INSERT EXIT SHORT COMMENT")
    strategy.close("short", when=exit_short, comment = "INSERT EXIT SHORT COMMENT")


// LONG POSITION
plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="1st Long Take Profit")
plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="2nd Long Take Profit")
plot(strategy.position_size > 0 ? long_stop_level : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Stop Loss")


// SHORT POSITION
plot(strategy.position_size < 0 ? short_take_level_1 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="1st Short Take Profit")
plot(strategy.position_size < 0 ? short_take_level_2 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="2nd Short Take Profit")
plot(strategy.position_size < 0 ? short_stop_level : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Stop Loss")

Follow this guide to automate your TradingView STRATEGY alerts. (no need for study script).

You need a TradingView Pro subscription to be able to receive Webhook notifications on Wunderbit. Sign up to TradingView now:

This week we decided to update our RSI-VWAP strategy on the 15 min time frame for ETH-Perpetual. The original idea was taken from . We added partial take profits, Relative volatility index (RVI) that will determine the entry and exit points only when the volatility will start to increase, and Money Flow index as an additional point for entry.

You will find the strategy code here:

Applicable to : ETH-PERP 15 min

https://www.tradingview.com/chart?offer_id=10&aff_id=23245
XaviZ
l
RSI-VWAP
FTX
Trading Bot video overview
Performance of RSI-VWAP 2.0 - Trading Bot for FTX