0% found this document useful (0 votes)
245 views16 pages

Auto Grid Bot - Pinescript (4) (@pinescript2)

The document outlines a Pine Script strategy for an automatic grid trading bot, allowing users to set parameters such as trade direction, stop-loss options, and grid levels. It includes inputs for defining high and low price ranges, as well as conditions for entering and exiting trades based on market movements. The strategy supports both long and short positions, with customizable alerts for trade actions.

Uploaded by

Aj Deshmukh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
245 views16 pages

Auto Grid Bot - Pinescript (4) (@pinescript2)

The document outlines a Pine Script strategy for an automatic grid trading bot, allowing users to set parameters such as trade direction, stop-loss options, and grid levels. It includes inputs for defining high and low price ranges, as well as conditions for entering and exiting trades based on market movements. The strategy supports both long and short positions, with customizable alerts for trade actions.

Uploaded by

Aj Deshmukh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

// https://t.

me/PineScript2
// https://t.me/PinescriptGP
// Join Us in Telegram Code/Archive/Community
//@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)

You might also like