Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
- // © lovealgotrading
- // First of all I want to say thank you to © thequantscience.
- //@version=5
- strategy(
- title = 'AUTOMATIC GRID BOT STRATEGY [lovealgotrading]',
- overlay = true,
- commission_type = strategy.commission.percent,
- commission_value = 0.075,
- pyramiding = 20,
- default_qty_type = strategy.percent_of_equity,
- close_entries_rule = 'ANY',
- initial_capital = 1000
- )
- /////////////////////////////// ALGORITHM BACKTEST SOURCE CODE ////////////////////////////////////
- startDate = input.time(defval=timestamp('1 nov 2022 13:30 +0000'), title='Start_Date', group = " ############# ⏰ BACKTEST DATE ⏰ ############ " )
- endDate = input.time(defval=timestamp('20 oct 2030 13:30 +0000'), title='End_Date', group = " ############# ⏰ BACKTEST DATE ⏰ ############ " )
- inDateRange = time > startDate and time < endDate
- high_price = input.price(
- defval = 0.00,
- title = 'Range High price: ',
- group = " ############## ➡️ HIGH GRID PRICE ⬅️ ############ ",
- confirm = true,
- tooltip = "Top grid price."
- )
- low_price = input.price(
- defval = 0.00,
- title = 'Range Low price: ',
- group = " ############## ➡️ LOW GRID PRICE ⬅️ ############# ",
- confirm = true,
- tooltip = "Bottom grid price."
- )
- // ###########################################################################################
- trade_direction = input.string(title='Trade Direction', group = " ##############🎯 TRADE DIRECTION 🎯############# ", options=['LONG', 'SHORT', 'BOTH'], defval='BOTH')
- // ###########################################################################################
- use_stop = input.bool(defval = false , title = "Use StopLoss", group = " ############# ⛔️ Strategy STOP Settings ⛔️ ############ ")
- close_bot_after_stop = input.bool(defval = false , title = "Close Bot After Stop Loss",tooltip = "Dont open new positions after stop loss", group = " ############# ⛔️ Strategy STOP Settings ⛔️ ############ ")
- stop_close_all = ""
- if stop_close_all[1] != "" and close_bot_after_stop
- stop_close_all := "DONT"
- use_stop_default = input.bool(defval = true , title = "Use StopLoss Where HIGH and LOW GRID PRICE", group = " ############# ⛔️ Strategy STOP Settings ⛔️ ############ ")
- high_price_stop = input.price(
- defval = 99999,
- title = 'High STOP Price: ',
- group = " ############# ⛔️ Strategy STOP Settings ⛔️ ############ ",
- confirm = false,
- tooltip = "Top STOP price."
- )
- low_price_stop = input.price(
- defval = 0.00,
- title = 'Low STOP Price: ',
- group = " ############# ⛔️ Strategy STOP Settings ⛔️ ############ ",
- confirm = false,
- tooltip = "Bottom STOP price."
- )
- if use_stop_default
- high_price_stop := high_price
- low_price_stop := low_price
- // ###########################################################################################
- dolar = input.int(defval = 100, title = "$ Per Position", group = " ############# 🤖 ALGO TRADE ALERTS 🤖 ############ ")
- // ###########################################################################################
- Long_message = input("", group = " ############# 🤖 ALGO TRADE ALERTS 🤖 ############ ")
- Long_Exit_message = input("", group = " ############# 🤖 ALGO TRADE ALERTS 🤖 ############ ")
- Long_Stop_message = input("", group = " ############# 🤖 ALGO TRADE ALERTS 🤖 ############ ")
- Short_message = input("", group = " ############# 🤖 ALGO TRADE ALERTS 🤖 ############ ")
- Short_Exit_message = input("", group = " ############# 🤖 ALGO TRADE ALERTS 🤖 ############ ")
- Short_Stop_message = input("", group = " ############# 🤖 ALGO TRADE ALERTS 🤖 ############ ")
- // ###########################################################################################
- float qty_new = dolar / close
- if close > 5000
- qty_new := math.round(dolar / close, 3)
- else if close < 5000 and close > 200
- qty_new := math.round(dolar / close, 2)
- else if close < 200 and close > 50
- qty_new := math.round(dolar / close, 1)
- else if close < 50
- qty_new := math.round(dolar / close, 0)
- // ###########################################################################################
- ten_grid = input.bool(
- defval = false,
- title = "10 grid levels",
- group = " ############ GRID CONFIGURATION ############ ",
- tooltip = "10 grid levels",
- confirm = true
- )
- tewnty_grid = input.bool(
- defval = true,
- title = "20 grid levels",
- group = " ############ GRID CONFIGURATION ############ ",
- tooltip = "20 grid levels",
- confirm = true
- )
- // ###########################################################################################
- show_stop_res = input.bool(true, title = "Show Stop Price",group = " ############# 📈 Graphics Settings 📈 ########### ")
- show_grid_level_bg = input.bool(true, title = "Show Grid Levels BG",group = " ############# 📈 Graphics Settings 📈 ########### ")
- // ###########################################################################################
- grid_range = high_price - low_price
- percent_change = ((high_price - low_price) / low_price) * (1.00 / 9.00)
- var float grid_1 = 0
- var float grid_2 = 0
- var float grid_3 = 0
- var float grid_4 = 0
- var float grid_5 = 0
- var float grid_6 = 0
- var float grid_7 = 0
- var float grid_8 = 0
- var float grid_9 = 0
- var float grid_10 = 0
- var float grid_11 = 0
- var float grid_12 = 0
- var float grid_13 = 0
- var float grid_14 = 0
- var float grid_15 = 0
- var float grid_16 = 0
- var float grid_17 = 0
- var float grid_18 = 0
- var float grid_19 = 0
- var float grid_20 = 0
- var float factor = 0
- long_1 = false
- long_2 = false
- long_3 = false
- long_4 = false
- long_5 = false
- long_6 = false
- long_7 = false
- long_8 = false
- long_9 = false
- long_10 = false
- short_1 = false
- short_2 = false
- short_3 = false
- short_4 = false
- short_5 = false
- short_6 = false
- short_7 = false
- short_8 = false
- short_9 = false
- short_10 = false
- if ten_grid == true
- percent_change := ((high_price - low_price) / low_price) * (1.00 / 9.00)
- factor := grid_range / 9
- grid_1 := (high_price)
- grid_2 := (high_price - (factor * 1))
- grid_3 := (high_price - (factor * 2))
- grid_4 := (high_price - (factor * 3))
- grid_5 := (high_price - (factor * 4))
- grid_6 := (high_price - (factor * 5))
- grid_7 := (high_price - (factor * 6))
- grid_8 := (high_price - (factor * 7))
- grid_9 := (high_price - (factor * 8))
- grid_10 := (low_price)
- long_1 := ta.crossunder(close, ((grid_5+grid_6)/2))
- long_2 := ta.crossunder(close, ((grid_6+grid_7)/2))
- long_3 := ta.crossunder(close, ((grid_7+grid_8)/2))
- long_4 := ta.crossunder(close, ((grid_8+grid_9)/2))
- long_5 := ta.crossunder(close, ((grid_9+grid_10)/2))
- short_1 := ta.crossover(close, ((grid_6+grid_5)/2))
- short_2 := ta.crossover(close, ((grid_5+grid_4)/2))
- short_3 := ta.crossover(close, ((grid_4+grid_3)/2))
- short_4 := ta.crossover(close, ((grid_3+grid_2)/2))
- short_5 := ta.crossover(close, ((grid_2+grid_1)/2))
- if tewnty_grid == true
- percent_change := ((high_price - low_price) / low_price) * (1.00 / 19.00)
- factor := grid_range / 19
- grid_1 := (high_price)
- grid_2 := (high_price - (factor * 1))
- grid_3 := (high_price - (factor * 2))
- grid_4 := (high_price - (factor * 3))
- grid_5 := (high_price - (factor * 4))
- grid_6 := (high_price - (factor * 5))
- grid_7 := (high_price - (factor * 6))
- grid_8 := (high_price - (factor * 7))
- grid_9 := (high_price - (factor * 8))
- grid_10 := (high_price - (factor * 9))
- grid_11 := (high_price - (factor * 10))
- grid_12 := (high_price - (factor * 11))
- grid_13 := (high_price - (factor * 12))
- grid_14 := (high_price - (factor * 13))
- grid_15 := (high_price - (factor * 14))
- grid_16 := (high_price - (factor * 15))
- grid_17 := (high_price - (factor * 16))
- grid_18 := (high_price - (factor * 17))
- grid_19 := (high_price - (factor * 18))
- grid_20 := (low_price)
- long_1 := close < ((grid_10+grid_11)/2)
- long_2 := close < ((grid_11+grid_12)/2)
- long_3 := close < ((grid_12+grid_13)/2)
- long_4 := close < ((grid_13+grid_14)/2)
- long_5 := close < ((grid_14+grid_15)/2)
- long_6 := close < ((grid_15+grid_16)/2)
- long_7 := close < ((grid_16+grid_17)/2)
- long_8 := close < ((grid_17+grid_18)/2)
- long_9 := close < ((grid_18+grid_19)/2)
- long_10 := close < ((grid_19+grid_20)/2)
- short_10 := close >((grid_1+grid_2)/2)
- short_9 := close >((grid_2+grid_3)/2)
- short_8 := close >((grid_3+grid_4)/2)
- short_7 := close >((grid_4+grid_5)/2)
- short_6 := close >((grid_5+grid_6)/2)
- short_5 := close >((grid_6+grid_7)/2)
- short_4 := close >((grid_7+grid_8)/2)
- short_3 := close >((grid_8+grid_9)/2)
- short_2 := close >((grid_9+grid_10)/2)
- short_1 := close > ((grid_10+grid_11)/2)
- // ###########################################################################################
- // ###########################################################################################
- if ten_grid and ( trade_direction == 'LONG' or trade_direction == 'BOTH')
- if long_1 and strategy.opentrades == 0 and inDateRange and stop_close_all == ""
- strategy.entry(id = "L_1", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 1
- strategy.exit(id = "E_1",from_entry = "L_1", qty_percent = 100,alert_message =Long_Exit_message,stop = 0, limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_2 and strategy.opentrades == 1 and inDateRange and stop_close_all == ""
- strategy.entry(id = "L_2", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 2
- strategy.exit(id = "E_2",from_entry = "L_2", qty_percent = 100,alert_message =Long_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_3 and strategy.opentrades == 2 and inDateRange and stop_close_all == ""
- strategy.entry(id = "L_3", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 3
- strategy.exit(id = "E_3",from_entry = "L_3", qty_percent = 100,alert_message =Long_Exit_message,limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_4 and strategy.opentrades == 3 and inDateRange and stop_close_all == ""
- strategy.entry(id = "L_4", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 4
- strategy.exit(id = "E_4",from_entry = "L_4", qty_percent = 100,alert_message =Long_Exit_message,limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_5 and strategy.opentrades == 4 and inDateRange and stop_close_all == ""
- strategy.entry(id = "L_5", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 5
- strategy.exit(id = "E_5",from_entry = "L_5", qty_percent = 100,alert_message =Long_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- // ###########################################################################################
- if ten_grid and ( trade_direction == 'SHORT' or trade_direction == 'BOTH')
- if short_1 and strategy.opentrades == 0 and inDateRange and stop_close_all == ""
- strategy.entry(id = "S_1", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 1
- strategy.exit(id = "ES_1",from_entry = "S_1", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_2 and strategy.opentrades == 1 and inDateRange and stop_close_all == ""
- strategy.entry(id = "S_2",direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 2
- strategy.exit(id = "ES_2",from_entry = "S_2", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_3 and strategy.opentrades == 2 and inDateRange and stop_close_all == ""
- strategy.entry(id = "S_3", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 3
- strategy.exit(id = "ES_3",from_entry = "S_3", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_4 and strategy.opentrades == 3 and inDateRange and stop_close_all == ""
- strategy.entry(id = "S_4", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 4
- strategy.exit(id = "ES_4",from_entry = "S_4", qty_percent = 100,alert_message =Short_Exit_message,limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_5 and strategy.opentrades == 4 and inDateRange and stop_close_all == ""
- strategy.entry(id = "S_5", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 5
- strategy.exit(id = "ES_5",from_entry = "S_5", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- // ###########################################################################################
- // ###########################################################################################
- long_exit_price = str.tostring(math.round_to_mintick(close*(1+percent_change)))
- short_exit_price = str.tostring(math.round_to_mintick(close*(1-percent_change)))
- if tewnty_grid and close > low_price and ( trade_direction == 'LONG' or trade_direction == 'BOTH')
- if long_1 and strategy.opentrades == 0 and inDateRange and stop_close_all == ""
- strategy.entry(id = "L_1", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 1
- strategy.exit(id = "E_1",from_entry = "L_1", qty_percent = 100,alert_message = Long_Exit_message,stop = 0, limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_2 and strategy.opentrades == 1 and inDateRange and close < strategy.opentrades.entry_price(strategy.opentrades - 1) * (1-percent_change) and stop_close_all == ""
- strategy.entry(id = "L_2", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 2
- strategy.exit(id = "E_2",from_entry = "L_2", qty_percent = 100,alert_message =Long_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_3 and strategy.opentrades == 2 and inDateRange and close < strategy.opentrades.entry_price(strategy.opentrades - 1) * (1-percent_change) and stop_close_all == ""
- strategy.entry(id = "L_3", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 3
- strategy.exit(id = "E_3",from_entry = "L_3", qty_percent = 100,alert_message =Long_Exit_message,limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_4 and strategy.opentrades == 3 and inDateRange and close < strategy.opentrades.entry_price(strategy.opentrades - 1) * (1-percent_change) and stop_close_all == ""
- strategy.entry(id = "L_4", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 4
- strategy.exit(id = "E_4",from_entry = "L_4", qty_percent = 100,alert_message =Long_Exit_message,limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_5 and strategy.opentrades == 4 and inDateRange and close < strategy.opentrades.entry_price(strategy.opentrades - 1) * (1-percent_change) and stop_close_all == ""
- strategy.entry(id = "L_5", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 5
- strategy.exit(id = "E_5",from_entry = "L_5", qty_percent = 100,alert_message =Long_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_6 and strategy.opentrades == 5 and inDateRange and close < strategy.opentrades.entry_price(strategy.opentrades - 1) * (1-percent_change) and stop_close_all == ""
- strategy.entry(id = "L_6", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 6
- strategy.exit(id = "E_6",from_entry = "L_6", qty_percent = 100,alert_message =Long_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_7 and strategy.opentrades == 6 and inDateRange and close < strategy.opentrades.entry_price(strategy.opentrades - 1) * (1-percent_change) and stop_close_all == ""
- strategy.entry(id = "L_7", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 7
- strategy.exit(id = "E_7",from_entry = "L_7", qty_percent = 100,alert_message =Long_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_8 and strategy.opentrades == 7 and inDateRange and close < strategy.opentrades.entry_price(strategy.opentrades - 1) * (1-percent_change) and stop_close_all == ""
- strategy.entry(id = "L_8", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 8
- strategy.exit(id = "E_8",from_entry = "L_8", qty_percent = 100,alert_message =Long_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_9 and strategy.opentrades == 8 and inDateRange and close < strategy.opentrades.entry_price(strategy.opentrades - 1) * (1-percent_change) and stop_close_all == ""
- strategy.entry(id = "L_9", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 9
- strategy.exit(id = "E_9",from_entry = "L_9", qty_percent = 100,alert_message =Long_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- if long_10 and strategy.opentrades == 9 and inDateRange and close < strategy.opentrades.entry_price(strategy.opentrades - 1) * (1-percent_change) and stop_close_all == ""
- strategy.entry(id = "L_10", direction = strategy.long,alert_message = Long_message, qty = qty_new )
- if strategy.opentrades == 10
- strategy.exit(id = "E_10",from_entry = "L_10", qty_percent = 100,alert_message =Long_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change))
- // ##### STOP LOSS CODES #####
- if use_stop and low < low_price_stop and strategy.position_size > 0
- strategy.close_all(alert_message =Long_Stop_message, immediately = true)
- stop_close_all := "DONT"
- // ###########################################################################################
- if tewnty_grid and close < high_price and ( trade_direction == 'SHORT' or trade_direction == 'BOTH')
- if short_1 and strategy.opentrades == 0 and inDateRange and stop_close_all == ""
- strategy.entry(id = "S_1", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 1
- strategy.exit(id = "ES_1",from_entry = "S_1", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_2 and strategy.opentrades == 1 and inDateRange and close > strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change) and stop_close_all == ""
- strategy.entry(id = "S_2",direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 2
- strategy.exit(id = "ES_2",from_entry = "S_2", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_3 and strategy.opentrades == 2 and inDateRange and close > strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change) and stop_close_all == ""
- strategy.entry(id = "S_3", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 3
- strategy.exit(id = "ES_3",from_entry = "S_3", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_4 and strategy.opentrades == 3 and inDateRange and close > strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change) and stop_close_all == ""
- strategy.entry(id = "S_4", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 4
- strategy.exit(id = "ES_4",from_entry = "S_4", qty_percent = 100,alert_message =Short_Exit_message,limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_5 and strategy.opentrades == 4 and inDateRange and close > strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change) and stop_close_all == ""
- strategy.entry(id = "S_5", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 5
- strategy.exit(id = "ES_5",from_entry = "S_5", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_6 and strategy.opentrades == 5 and inDateRange and close > strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change) and stop_close_all == ""
- strategy.entry(id = "S_6", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 6
- strategy.exit(id = "ES_6",from_entry = "S_6", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_7 and strategy.opentrades == 6 and inDateRange and close > strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change) and stop_close_all == ""
- strategy.entry(id = "S_7", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 7
- strategy.exit(id = "ES_7",from_entry = "S_7", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_8 and strategy.opentrades == 7 and inDateRange and close > strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change) and stop_close_all == ""
- strategy.entry(id = "S_8", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 8
- strategy.exit(id = "ES_8",from_entry = "S_8", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_9 and strategy.opentrades == 8 and inDateRange and close > strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change) and stop_close_all == ""
- strategy.entry(id = "S_9", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 9
- strategy.exit(id = "ES_9",from_entry = "S_9", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- if short_10 and strategy.opentrades == 9 and inDateRange and close > strategy.opentrades.entry_price(strategy.opentrades - 1) * (1+percent_change) and stop_close_all == ""
- strategy.entry(id = "S_10", direction = strategy.short,alert_message = Short_message, qty = qty_new )
- if strategy.opentrades == 10
- strategy.exit(id = "ES_10",from_entry = "S_10", qty_percent = 100,alert_message =Short_Exit_message, limit = strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change))
- // ###########################################################################################
- if use_stop and high > high_price_stop and strategy.position_size < 0
- strategy.close_all(alert_message =Short_Stop_message, immediately = true)
- stop_close_all := "DONT"
- bgcolor(stop_close_all == "DONT" and stop_close_all[1] != "DONT" ? color.rgb(255, 42, 42) : na )
- //// ########################################################################
- // Plot Functions
- plot(strategy.position_size < 0 ? strategy.opentrades.entry_price(strategy.opentrades - 1)*(1-percent_change) : na , color= color.rgb(247, 85, 85), linewidth= 1, style=plot.style_cross)
- plot(strategy.position_size > 0 ? strategy.opentrades.entry_price(strategy.opentrades - 1)*(1+percent_change) : na , color= color.rgb(136, 247, 85), linewidth= 1, style=plot.style_cross)
- plot(inDateRange ? high_price_stop : na, color= color.rgb(255, 37, 37), linewidth =4 )
- plot(inDateRange ? low_price_stop : na, color= color.rgb(255, 34, 37), linewidth =4 )
- plot(inDateRange ? high_price : na, color= color.rgb(0, 0, 0), linewidth =3 )
- plot(inDateRange ? low_price : na, color= color.rgb(255, 255, 255), linewidth =3 )
- plot(inDateRange ? (high_price + low_price) / 2 : na , color= color.rgb(0, 68, 255), linewidth = 2 )
- // ###########################################################################################
- var float new_ten_grid_1 = na
- var float new_ten_grid_2 = na
- var float new_ten_grid_3 = na
- var float new_ten_grid_4 = na
- var float new_ten_grid_5 = na
- var float new_ten_grid_6 = na
- var float new_ten_grid_7 = na
- var float new_ten_grid_8 = na
- var float new_ten_grid_9 = na
- var float new_ten_grid_10 = na
- if ten_grid == true and show_grid_level_bg and inDateRange
- new_ten_grid_1 := grid_1
- new_ten_grid_2 := grid_2
- new_ten_grid_3 := grid_3
- new_ten_grid_4 := grid_4
- new_ten_grid_5 := grid_5
- new_ten_grid_6 := grid_6
- new_ten_grid_7 := grid_7
- new_ten_grid_8 := grid_8
- new_ten_grid_9 := grid_9
- new_ten_grid_10 := grid_10
- else if ten_grid == false
- new_ten_grid_1 := na
- new_ten_grid_2 := na
- new_ten_grid_3 := na
- new_ten_grid_4 := na
- new_ten_grid_5 := na
- new_ten_grid_6 := na
- new_ten_grid_7 := na
- new_ten_grid_8 := na
- new_ten_grid_9 := na
- new_ten_grid_10 := na
- fill(plot(inDateRange ? new_ten_grid_1 : na , color = color.new(color.green, 90)),
- plot(inDateRange ? new_ten_grid_2 : na , color = color.new(color.green, 90)),
- color = color.new(color.green, 90))
- fill(plot(inDateRange ? new_ten_grid_2 : na , color = color.new(color.green, 85)),
- plot(inDateRange ? new_ten_grid_3 : na , color = color.new(color.green, 85)),
- color = color.new(color.green, 85))
- fill(plot(inDateRange ? new_ten_grid_3 : na , color = color.new(color.green, 80)),
- plot(inDateRange ? new_ten_grid_4 : na , color = color.new(color.green, 80)),
- color = color.new(color.green, 80))
- fill(plot(inDateRange ? new_ten_grid_4 : na , color = color.new(color.green, 70)),
- plot(inDateRange ? new_ten_grid_5 : na , color = color.new(color.green, 70)),
- color = color.new(color.green, 70))
- fill(plot(inDateRange ? new_ten_grid_5 : na , color = color.new(color.green, 60)),
- plot(inDateRange ? new_ten_grid_6 : na, color = color.new(color.green, 60)),
- color = color.new(color.green, 60))
- fill(plot(inDateRange ? new_ten_grid_6 : na, color = color.new(color.red, 60)),
- plot(inDateRange ? new_ten_grid_7 : na, color = color.new(color.red, 60)),
- color = color.new(color.red, 60))
- fill(plot(inDateRange ? new_ten_grid_7 : na, color = color.new(color.red, 70)),
- plot(inDateRange ? new_ten_grid_8 : na, color = color.new(color.red, 70)),
- color = color.new(color.red, 70))
- fill(plot(inDateRange ? new_ten_grid_8 : na, color = color.new(color.red, 80)),
- plot(inDateRange ? new_ten_grid_9 : na, color = color.new(color.red, 80)),
- color = color.new(color.red, 80))
- fill(plot(inDateRange ? new_ten_grid_9 : na, color = color.new(color.red, 85)),
- plot(inDateRange ? new_ten_grid_10 : na, color = color.new(color.red, 85)),
- color = color.new(color.red, 85))
- // // ###########################################################################################
- var float new_twenty_grid_1 = na
- var float new_twenty_grid_2 = na
- var float new_twenty_grid_3 = na
- var float new_twenty_grid_4 = na
- var float new_twenty_grid_5 = na
- var float new_twenty_grid_6 = na
- var float new_twenty_grid_7 = na
- var float new_twenty_grid_8 = na
- var float new_twenty_grid_9 = na
- var float new_twenty_grid_10 = na
- var float new_twenty_grid_11 = na
- var float new_twenty_grid_12 = na
- var float new_twenty_grid_13 = na
- var float new_twenty_grid_14 = na
- var float new_twenty_grid_15 = na
- var float new_twenty_grid_16 = na
- var float new_twenty_grid_17 = na
- var float new_twenty_grid_18 = na
- var float new_twenty_grid_19 = na
- var float new_twenty_grid_20 = na
- if tewnty_grid == true and show_grid_level_bg and inDateRange
- new_twenty_grid_1 := grid_1
- new_twenty_grid_2 := grid_2
- new_twenty_grid_3 := grid_3
- new_twenty_grid_4 := grid_4
- new_twenty_grid_5 := grid_5
- new_twenty_grid_6 := grid_6
- new_twenty_grid_7 := grid_7
- new_twenty_grid_8 := grid_8
- new_twenty_grid_9 := grid_9
- new_twenty_grid_10 := grid_10
- new_twenty_grid_11 := grid_11
- new_twenty_grid_12 := grid_12
- new_twenty_grid_13 := grid_13
- new_twenty_grid_14 := grid_14
- new_twenty_grid_15 := grid_15
- new_twenty_grid_16 := grid_16
- new_twenty_grid_17 := grid_17
- new_twenty_grid_18 := grid_18
- new_twenty_grid_19 := grid_19
- new_twenty_grid_20 := grid_20
- else if tewnty_grid == false
- new_twenty_grid_1 := na
- new_twenty_grid_2 := na
- new_twenty_grid_3 := na
- new_twenty_grid_4 := na
- new_twenty_grid_5 := na
- new_twenty_grid_6 := na
- new_twenty_grid_7 := na
- new_twenty_grid_8 := na
- new_twenty_grid_9 := na
- new_twenty_grid_10 := na
- new_twenty_grid_11 := na
- new_twenty_grid_12 := na
- new_twenty_grid_13 := na
- new_twenty_grid_14 := na
- new_twenty_grid_15 := na
- new_twenty_grid_16 := na
- new_twenty_grid_17 := na
- new_twenty_grid_18 := na
- new_twenty_grid_19 := na
- new_twenty_grid_20 := na
- fill(plot(inDateRange ? new_twenty_grid_1 : na , color = color.new(color.green, 90)),
- plot(inDateRange ? new_twenty_grid_2 : na , color = color.new(color.green, 90)),
- color = color.new(color.green, 90))
- fill(plot(inDateRange ? new_twenty_grid_2 : na , color = color.new(color.green, 85)),
- plot(inDateRange ? new_twenty_grid_3 : na , color = color.new(color.green, 85)),
- color = color.new(color.green, 85))
- fill(plot(inDateRange ? new_twenty_grid_3 : na , color = color.new(color.green, 80)),
- plot(inDateRange ? new_twenty_grid_4 : na , color = color.new(color.green, 80)),
- color = color.new(color.green, 80))
- fill(plot(inDateRange ? new_twenty_grid_4 : na , color = color.new(color.green, 70)),
- plot(inDateRange ? new_twenty_grid_5 : na , color = color.new(color.green, 70)),
- color = color.new(color.green, 70))
- fill(plot(inDateRange ? new_twenty_grid_5 : na , color = color.new(color.green, 60)),
- plot(inDateRange ? new_twenty_grid_6 : na , color = color.new(color.green, 60)),
- color = color.new(color.green, 60))
- fill(plot(inDateRange ? new_twenty_grid_6 : na , color = color.new(color.green, 60)),
- plot(inDateRange ? new_twenty_grid_7 : na , color = color.new(color.green, 60)),
- color = color.new(color.green, 60))
- fill(plot(inDateRange ? new_twenty_grid_7 : na , color = color.new(color.green, 70)),
- plot(inDateRange ? new_twenty_grid_8 : na , color = color.new(color.green, 70)),
- color = color.new(color.green, 70))
- fill(plot(inDateRange ? new_twenty_grid_8 : na , color = color.new(color.green, 80)),
- plot(inDateRange ? new_twenty_grid_9 : na , color = color.new(color.green, 80)),
- color = color.new(color.green, 80))
- fill(plot(inDateRange ? new_twenty_grid_9 : na , color = color.new(color.green, 85)),
- plot(inDateRange ? new_twenty_grid_10 : na , color = color.new(color.green, 85)),
- color = color.new(color.green, 85))
- fill(plot(inDateRange ? new_twenty_grid_10 : na , color = color.new(color.red, 90)),
- plot(inDateRange ? new_twenty_grid_11 : na , color = color.new(color.red, 90)),
- color = color.new(color.red, 90))
- fill(plot(inDateRange ? new_twenty_grid_11 : na , color = color.new(color.red, 85)),
- plot(inDateRange ? new_twenty_grid_12 : na , color = color.new(color.red, 85)),
- color = color.new(color.red, 85))
- fill(plot(inDateRange ? new_twenty_grid_12 : na , color = color.new(color.red, 80)),
- plot(inDateRange ? new_twenty_grid_13 : na , color = color.new(color.red, 80)),
- color = color.new(color.red, 80))
- fill(plot(inDateRange ? new_twenty_grid_13 : na , color = color.new(color.red, 70)),
- plot(inDateRange ? new_twenty_grid_14 : na , color = color.new(color.red, 70)),
- color = color.new(color.red, 70))
- fill(plot(inDateRange ? new_twenty_grid_14 : na , color = color.new(color.red, 60)),
- plot(inDateRange ? new_twenty_grid_15 : na , color = color.new(color.red, 60)),
- color = color.new(color.red, 60))
- fill(plot(inDateRange ? new_twenty_grid_15 : na , color = color.new(color.red, 60)),
- plot(inDateRange ? new_twenty_grid_16 : na , color = color.new(color.red, 60)),
- color = color.new(color.red, 60))
- fill(plot(inDateRange ? new_twenty_grid_16 : na , color = color.new(color.red, 70)),
- plot(inDateRange ? new_twenty_grid_17 : na , color = color.new(color.red, 70)),
- color = color.new(color.red, 70))
- fill(plot(inDateRange ? new_twenty_grid_17 : na , color = color.new(color.red, 80)),
- plot(inDateRange ? new_twenty_grid_18 : na , color = color.new(color.red, 80)),
- color = color.new(color.red, 80))
- fill(plot(inDateRange ? new_twenty_grid_18 : na , color = color.new(color.red, 85)),
- plot(inDateRange ? new_twenty_grid_19 : na , color = color.new(color.red, 85)),
- color = color.new(color.red, 85))
- fill(plot(inDateRange ? new_twenty_grid_19 : na , color = color.new(color.red, 85)),
- plot(inDateRange ? new_twenty_grid_20 : na , color = color.new(color.red, 85)),
- color = color.new(color.red, 85))
- // // ###########################################################################################
- //###############################################################################################
- //------------------------------Table
- //###############################################################################################
- showDashboard = input.bool(true, "Show Table", group=" ############# 🔳 TABLE Settings 🔳 ############ ")
- locationDashboard = input.string("Top Right", "Table Location", ["Top Right", "Middle Right", "Bottom Right", "Top Center", "Middle Center", "Bottom Center", "Top Left", "Middle Left", "Bottom Left"], group=" ############# 🔳 TABLE Settings 🔳 ############ ")
- sizeDashboard = input.string("Normal", "Table Size", ["Large", "Normal", "Small", "Tiny"], group=" ############# 🔳 TABLE Settings 🔳 ############ ")
- var dashboard_loc = locationDashboard == "Top Right" ? position.top_right : locationDashboard == "Middle Right" ? position.middle_right : locationDashboard == "Bottom Right" ? position.bottom_right : locationDashboard == "Top Center" ? position.top_center : locationDashboard == "Middle Center" ? position.middle_center : locationDashboard == "Bottom Center" ? position.bottom_center : locationDashboard == "Top Left" ? position.top_left : locationDashboard == "Middle Left" ? position.middle_left : position.bottom_left
- var dashboard_size = sizeDashboard == "Large" ? size.large : sizeDashboard == "Normal" ? size.normal : sizeDashboard == "Small" ? size.small : size.tiny
- if showDashboard
- var myTable = table.new(position = dashboard_loc, columns = 5, rows = 2,bgcolor = color.white, border_width = 1, frame_color = color.rgb(25, 150, 25), frame_width = 3, border_color = color.rgb(25, 150, 25))
- table.cell(table_id = myTable, column = 0, row = 0, text = "Open positions" , text_color = color.white, bgcolor = color.orange, text_size=dashboard_size)
- table.cell(table_id = myTable, column = 1, row = 0, text = "Open profit" , text_color = color.white, bgcolor = color.orange, text_size=dashboard_size)
- table.cell(table_id = myTable, column = 2, row = 0, text = "Total trades" , text_color = color.white, bgcolor = color.orange, text_size=dashboard_size)
- table.cell(table_id = myTable, column = 3, row = 0, text = "Total profit" , text_color = color.white, bgcolor = color.orange, text_size=dashboard_size)
- table.cell(table_id = myTable, column = 4, row = 0, text = "Current equity" , text_color = color.white, bgcolor = color.orange, text_size=dashboard_size)
- table.cell(table_id = myTable, column = 0, row = 1, text = str.tostring(strategy.opentrades) , text_font_family = font.family_monospace, text_size=dashboard_size)
- table.cell(table_id = myTable, column = 1, row = 1, text = "$" + str.tostring(math.round(strategy.openprofit, 1)) , bgcolor = strategy.openprofit >= 0 ? color.green : color.red , text_font_family = font.family_monospace, text_size=dashboard_size)
- table.cell(table_id = myTable, column = 2, row = 1, text = str.tostring(strategy.closedtrades) , text_font_family = font.family_monospace, text_size=dashboard_size)
- table.cell(table_id = myTable, column = 3, row = 1, text = "$" + str.tostring(math.round(strategy.netprofit, 1)) , bgcolor = strategy.netprofit >= 0 ? color.green : color.red , text_font_family = font.family_monospace, text_size=dashboard_size)
- table.cell(table_id = myTable, column = 4, row = 1, text = "$" + str.tostring(math.round(strategy.equity, 1)) , bgcolor = strategy.equity >= 0 ? color.green : color.red , text_font_family = font.family_monospace, text_size=dashboard_size)
Advertisement
Comments
-
Comment was deleted
-
- i found all types of premium tradingview indicators codes available on telegram - https://t.me/tradingview_premium_indicator
Add Comment
Please, Sign In to add comment
Advertisement