3

I'm trying to import some buys and sales into the chart. Ideally I would like to mark the candle and show the amount but I have two issues.

The first is that I keep getting "Array is too large. Maximum size is 100000" When I add many trades ( around 50 ) and the second is that I don't know how to display the amount.

I googled around and this is the code I managed to write but as mentioned is not working.

Is not a long or short strategy, I just need to move buys and sells into the chart

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// ©sssss

//@version=4
study("test", overlay=true)

var int[]   when_buy    = array.new_int(na)
var int[]   when_sell    = array.new_int(na)
var string[] total  = array.new_string(na)
add_trade( when, amount, buy) => 
    array.push(total, 'amount')
    if (buy)
        array.push(when_buy,    timestamp(when))
    else
        array.push(when_sell,    timestamp(when))     
    
    
add_trade('2021-06-01', 1883, true)
add_trade('2021-05-27', 24, true)
add_trade('2021-05-26', 139, true)
add_trade('2021-05-24', 988, true)
add_trade('2021-05-21', 926, true)
add_trade('2021-05-21', 1100, true)
add_trade('2021-05-20', 1380, true)
add_trade('2021-05-18', 1803, true)
add_trade('2021-05-17', 965, true)
add_trade('2021-05-14', 753, true)
add_trade('2021-05-09', -3000.01, false)
add_trade('2021-05-06', -1500.005, false)
add_trade('2021-05-04', -1500.005, false)
add_trade('2021-04-26', 2227, true)
add_trade('2021-04-23', 1536, true)
add_trade('2021-04-22', 966, true)
add_trade('2021-04-20', 581, true)
add_trade('2021-04-19', 835, true)
add_trade('2021-04-19', 815, true)
add_trade('2021-04-13', -1500.005, false)
add_trade('2021-04-11', -1500.005, false)
add_trade('2021-04-08', 405, true)
add_trade('2021-04-08', 505, true)
add_trade('2021-03-26', 264, true)
add_trade('2021-03-23', 1650, true)
add_trade('2021-03-22', 921, true)
add_trade('2021-03-16', 690, true)
add_trade('2021-03-02', 710, true)
add_trade('2021-03-02', 2130, true)
add_trade('2021-03-01', 1325, true)
add_trade('2021-02-23', 1100, true)
add_trade('2021-02-23', 1200, true)
add_trade('2021-02-23', 600, true)
add_trade('2021-02-19', 505, true)
add_trade('2021-02-18', 484, true)
add_trade('2021-02-18', 585, true)
add_trade('2021-02-18', 686, true)
add_trade('2021-02-17', 660, true)
add_trade('2021-02-17', 1888, true)
add_trade('2021-02-17', 560, true)
add_trade('2021-02-08', -1500.005, false)
add_trade('2021-02-04', -1500.005, false)
add_trade('2021-01-29', -3000.01, false)
add_trade('2021-01-29', -6000.005, false)
add_trade('2021-01-29', -700.002, false)
add_trade('2021-01-28', -1500.001, false)
add_trade('2021-01-28', -1500.001, false)


ts_today    = timestamp(year, month, dayofmonth, 0, 0, 0)
order = 0
amount = ''
if array.includes(when_sell, ts_today)
    order := -1
    idx     = array.indexof(when_sell, ts_today)
    amount   := array.get(total, idx)
    
if array.includes(when_buy, ts_today)
    order := 1
    idx     = array.indexof(when_buy, ts_today)
    amount   := array.get(total, idx)
    
plotarrow(order, 'test')
Bjorn Mistiaen
  • 6,459
  • 3
  • 18
  • 42
chifliiiii
  • 2,231
  • 3
  • 28
  • 37

1 Answers1

1

You're exceeding the array limit because every bar you're unnecessarily adding the trade data to the arrays every bar. With the var array, you only need to do it once. Either nest the add_trade() calls in if barstate.isfirst or use array.from()

var int[] when_buy = array.from(timestamp('2021-06-01'), timestamp('2021-05-27'), etc....)

To display the amounts use label.new()

if array.includes(when_sell, ts_today)
    order := -1
    idx     = array.indexof(when_sell, ts_today)
    amount   := array.get(total, idx)
    label.new(x = bar_index, y = high, style = label.style_label_down, color = color.red, textcolor = color.white, text = tostring(amount))
rumpypumpydumpy
  • 3,435
  • 2
  • 5
  • 10