TradingView
GeoffHammond
31 okt 2021 02:04

cache 

Beskrivning

Library "cache"
A simple cache library to store key value pairs.

  • Fed up of injecting and returning so many values all the time?
  • Want to separate your code and keep it clean?
  • Need to make an expensive calculation and use the results in numerous places?
  • Want to throttle calculations or persist random values across bars or ticks?


Then you've come to the right place. Or not! Up to you, I don't mind either way... ;)

Check the helpers and unit tests in the script for further detail.

Detailed Interface

init(persistant) Initialises the syncronised cache key and value arrays
  Parameters:
    persistant: bool, toggles data persistance between bars and ticks
  Returns: [string[], float[]], a tuple of both arrays

set(keys, values, key, value) Sets a value into the cache
  Parameters:
    keys: string[], the array of cache keys
    values: float[], the array of cache values
    key: string, the cache key to create or update
    value: float, the value to set

has(keys, values, key) Checks if the cache has a key
  Parameters:
    keys: string[], the array of cache keys
    values: float[], the array of cache values
    key: string, the cache key to check
  Returns: bool, true only if the key is found

get(keys, values, key) Gets a keys value from the cache
  Parameters:
    keys: string[], the array of cache keys
    values: float[], the array of cache values
    key: string, the cache key to get
  Returns: float, the stored value

remove(keys, values, key) Removes a key and value from the cache
  Parameters:
    keys: string[], the array of cache keys
    values: float[], the array of cache values
    key: string, the cache key to remove

count() Counts how many key value pairs in the cache
  Returns: int, the total number of pairs

loop(keys, values) Returns true for each value in the cache (use as the while loop expression)
  Parameters:
    keys: string[], the array of cache keys
    values: float[], the array of cache values

next(keys, values) Returns each key value pair on successive calls (use in the while loop)
  Parameters:
    keys: string[], the array of cache keys
    values: float[], the array of cache values
  Returns: [string, float], tuple of each key value pair

clear(keys, values) Clears all key value pairs from the cache
  Parameters:
    keys: string[], the array of cache keys
    values: float[], the array of cache values

unittest_cache(case) Cache module unit tests, for inclusion in parent script test suite. Usage: log.unittest_cache(__ASSERTS)
  Parameters:
    case: string[], the current test case and array of previous unit tests (__ASSERTS)

unittest(verbose) Run the cache module unit tests as a stand alone. Usage: cache.unittest()
  Parameters:
    verbose: bool, optionally disable the full report to only display failures
Kommentarer
allanster
You are indeed "Madly sharing libraries...", much appreciated!
GeoffHammond
@allanster, I am indeed! These are all of the required tools I've created over the past few weeks whilst building a rather advanced Position Calculator Backtest and Realtime Trade Emulator. I have been hitting some interesting limits in what Pine Script will support (compilation timeouts, loop execution timeouts, too many local scopes, lack of global variables in libraries)... it has been quite a journey.
slowcoconut
@GeoffHammond, same, curious what methods you found to speed up compilation/execution time... this library looks great, it's just a bit over my head... got any example scripts you've laying around from your work on this... i learn best by example.
Mer