Specification

In specific circumstances, it is possible to extract data, far above the  for 1 single script .
The following technique uses composite tickers. Changing tickers needs to be done in the code itself as will be explained further.

          ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

🔶 PRINCIPLE

        Standard example:

  c1 = request.security('MTLUSDT' , 'D', close)


        This will give the close value from 1 ticker (MTLUSDT); c1 for example is 1.153

        Now let's add 2 tickers to MTLUSDT; XMRUSDT and ORNUSDT with, for example, values of 1.153 (I), 143.4 (II) and 0.8242 (III) respectively.

        Just adding them up 'MTLUSDT+XMRUSDT+ORNUSDT' would give 145.3772 as a result, which is not something we can use...

        Let's multiply ORNUSDT by                  100 ->            14340
        and   multiply MTLUSDT  by 1000000000 -> 1153000000                 (from now, 10e8 will be used instead of 1000000000)
        Then we make the sum.

        When we put this in a security call (just the close value) we get:

  c1 = request.security('MTLUSDT*10e8+XMRUSDT*100+ORNUSDT', 'D', close)


        'MTLUSDT*10e8+XMRUSDT*100+ORNUSDT' -> 1153000000 + 14340 + 0.8242 = 1153014340.8242 (a)

        This (a) will be split later on, for example:

        1153014330.8242 / 10e8 = 1.1530143408242 -> round -> in this case to 1.153 (I), multiply again by 10e8 -> 1153000000.00 (b)
        We subtract this from the initial number:

            1153014340.8242   (a)
         - 1153000000.0000   (b)
          –––––––––––––––––
                       14340.8242   (c)

        Then -> 14340.8242 / 100 = 143.408242 -> round -> 143.4 (II) -> multiply -> 14340.0000 (d)
         -> subtract

            14340.8242   (c)
         - 14340.0000   (d)
          ––––––––––––
                     0.8242   (III)

        Now we have split the number again into 3 tickers: 1.153 (I), 143.4 (II) and 0.8242 (III)

          ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯


In this publication the function compose_3_() will make a composite ticker of 3 tickers, and the split_3_() function will split these 3 tickers again after passing 1 request.security() call.

In this example:

t46 = 'BINANCE:MTLUSDT', n46 = 10e8 , r46 = 3, t47 = 'BINANCE:XMRUSDT', n47 = 10e1, r47 = 1, t48 = 'BINANCE:ORNUSDT', r48 = 4 // T16 ••• T16= compose_3_(t48, t47, n47, t46, n46) ••• [o16, h16, l16, c16] = request.security(T16, res, [open, high, low, close]) ••• [MTLc , XMRc , ORNc ] = split_3_(c16, n46, r46, n47, r47, r48)



🔶 CHANGING TICKERS

If you need to change tickers, you only have to change the first part of the script, USER DEFINED TICKERS

Back to our example, at line 26 in the code, you'll find:

t46 = 'BINANCE:MTLUSDT', n46 = 10e8 , r46 = 3, t47 = 'BINANCE:XMRUSDT', n47 = 10e1, r47 = 1, t48 = 'BINANCE:ORNUSDT', r48 = 4 // T16
(t46, T16,... will be explained later)

You need to figure out how much you need to multiply each ticker, and the number for rounding, to get a good result.

In this case:
'BINANCE:MTLUSDT', multiply number = 10e8, round number is 3 (example value 1.153)
'BINANCE:XMRUSDT', multiply number = 10e1, round number is 1 (example value 143.4)
'BINANCE:ORNUSDT', NO multiply number, round number is 4 (example value 0.8242)

The value with most digits after the decimal point by preference is placed to the right side (ORNUSDT)

If you want to change these 3, how would you do so?

First pick your tickers and look for the round values, for example:
'MATICUSDT', example value =   0.5876 -> round -> 4
'LTCUSDT'    , example value = 77.47      -> round -> 2
'ARBUSDT'    , example value =   1.0231 -> round -> 4

Value with most digits after the decimal point -> MATIC or ARB, let's pick ARB to go on the right side, LTC at the left of ARB, and MATIC at the most left side.
-> 'MATICUSDT', LTCUSDT', ARBUSDT'

Then check with how much 'LTCUSDT' and 'MATICUSDT' needs to be multiplied to get this: 5876 0 7747 0 1.0231

'MATICUSDT' -> 10e10
'LTCUSDT'      -> 10e3

Replace:

t46 = 'BINANCE:MTLUSDT', n46 = 10e8 , r46 = 3, t47 = 'BINANCE:XMRUSDT', n47 = 10e1, r47 = 1, t48 = 'BINANCE:ORNUSDT', r48 = 4 // T16

->

t46 = 'BINANCE:MATICUSDT', n46 = 10e10 , r46 = 4, t47 = 'BINANCE:LTCUSDT', n47 = 10e3, r47 = 2, t48 = 'BINANCE:ARBUSDT', r48 = 4 // T16


DO NOT change anything at t46, n46,... if you don't know what you're doing!

Only
 • tickers ('BINANCE:MTLUSDT', 'BINANCE:XMRUSDT', 'BINANCE:ORNUSDT', ...),
 • multiply numbers (10e8, 10e1, ...) and
 • round numbers (3, 1, 4, ...)
should be changed.

There you go!


🔶 LIMITATIONS

🔹 The composite ticker fails when 1 of the 3 isn't in market in the weekend, while the other 2 are.
     That is the reason all tickers are crypto. I think it is possible to combine stock,... tickers, but they have to share the same market hours.

🔹 The number cannot be as large as you want, the limit lays around 15-16 digits.
     This means when you have for example 123, 45.67 and 0.000000000089, you'll get issues when composing to this:
     -> 123045670.000000000089 (21 digits)

     Make sure the numbers are close to each other as possible, with 1 zero (or 2) in between:
     -> 1.230045670089 (13 digits by doing -> (123 * 10e-3) + (45.67 * 10e-7) + 0.000000000089)

🔹 This script contains examples of calculated values, % change, SMA, RMA and RSI.
     These values need to be calculated from HTF close data at current TF (timeframe).
     This gives challenges. For example the SMA / %change is not a problem (same values at 1h TF from Daily data).
     RMA, RSI is not so easy though...

     Daily values are rather similar on a 2-3h TF, but 1h TF and lower is quite different.

     At the moment I haven't figured out why, if someone has an idea, don't hesitate to share.
     The main goal of this publication is 'composite tickers ~ request.security()' though.



🔹 When a ticker value changes substantially (x10, x100), the multiply number needs to be adjusted accordingly.


🔶 SETTINGS

  • SHOW SETS


  • SET
       • Length: length of SMA, RMA and RSI
       • HTF: Higher TimeFrame (default Daily)

  • TABLE
       • Size table:                         \ _ Self-explanatory
       • Include exchange name:  /
       • Sort: If exchange names are shown, the exchanges will be sorted first

  • COLOURS
       • CH%
       • RSI
       • SMA (RMA)

  • DEBUG

    Remember t46, T16,... ?
    This can be used for debugging/checking
    ALWAYS DISABLE "sort" when doing so.

    Example:

    Set string -> T1 (tickers FIL, CAKE, SOL)
    (Numbers are slightly different due to time passing by between screen captures)

    Placing your tickers at the side panel makes it easy to compare with the printed label below the table (right side, 332201415014.45),
    together with the line T1 in the script:

    t1 = 'BINANCE:FILUSDT' , n1 = 10e10, r1 = 4, t2 = 'BINANCE:CAKEUSDT' , n2 = 10e5 , r2 = 3, t3 = 'BINANCE:SOLUSDT' , r3 = 2 // T1


    FIL     :    3.322
    CAKE:    1.415
    SOL   : 14.56

    Now it is easy to check whether the tickers are placed close enough to each other, with 1-2 zero's in between.

    If you want to check a specific ticker, use "Show Ticker", see out initial example:
    Set string    -> T16
    Show ticker -> 46 (in the code -> t46 = 'BINANCE:MTLUSDT')

    (Set at 0 to disable "check string" and NONE to disable "Set string")

    -> Debug/check/set away! 😀


🔶 OTHER TECHNIQUES

 • REGEX (Regular expression) and  is used to delete the exchange name from the ticker, in other words, everything before ":" is deleted by following regex:
exch(t) => incl_exch ? t : str.match(t, "(?<=:)[\\w]+")

 • To sort,  is used (line 675 in the code), just as in my first "sort" publication Sort array alphabetically - educational

aSort = arrT.copy() sort_Indices = array.sort_indices(id= aSort, order= order.ascending)


 • Numbers and text colour will adjust automatically when switching between light/dark mode by using  / 

🔹 DISCLAIMER
Please don't ask me for custom screeners, thank you.

Responded

1
Developer 1
Rating
(7)
Projects
6
0%
Arbitration
5
0% / 100%
Overdue
1
17%
Free
Similar orders
Trading 35+ USD
Project: XAUUSD Gold Trading Robot for MetaTrader 5 I want to develop a fully automated Expert Advisor (EA) for MetaTrader 5, designed exclusively for Gold (XAUUSD) and compatible with the Exness broker. Trading Strategy: Liquidity + CHOCH + Retest Identify important buy-side and sell-side liquidity zones using previous highs and lows, equal highs/lows, and confirmed swing points. Wait for a clear liquidity sweep
i want to fix my gold martingale bot MT5. RSI 14 ENTRY 30 BUY 70 SELL Lot 0.02 0.04 0.07 TP 150 for all SL 90 30 30 once total daily profit is 200$ stop trading stop trading once 2 consecutives total losses stop trading if spread exceeded 30 and between hour 15 & 17 PM Move SL to breakeven point once the profit exceeded 50 from from breakeven thanks
MarketMind Breakout Pro XAUUSD H1 — Donchian Breakout EA Project type: Personal EA development and backtesting Platform: MetaTrader 5 Instrument: XAUUSD Timeframe: H1 Strategy: Donchian Channel breakout with EMA 200 Project overview This project evaluates a Donchian breakout trading strategy for XAUUSD on the H1 timeframe. The system uses channel-based breakout conditions and an EMA 200 trend filter. Historical
Title: Fully Automatic MT5 Trading Bot (Expert Advisor) with Risk Management I want a fully automated trading robot (Expert Advisor) for MetaTrader 5, written in MQL5. The bot must automatically analyse market data, identify trading opportunities, execute BUY and SELL orders, manage open positions, and close trades according to predefined rules without requiring manual confirmation for each trade. Requirements
I have three indicators that operate independently. I want to combine them into one indicator with custom expert programming that automatically enters trades when a signal is generated by one of the indicators. I will pay for this service Thanks you
Existing EA: NEW_CORE_ORB_M5_v021 | MT5 | XAUUSD M5 Early-stage research prototype, not a new EA from scratch. Need an experienced MQL5 developer to audit, complete, repair, improve and test BOTH independent strategies equally: Opening Range Breakout (ORB) and Scalp. Keep code lightweight and preserve an untouched baseline. No unnecessary rewrite or complex filters. 1. ORB Strategy Verify opening-range construction
Hello International Developer, I need LIFETIME MT5 EA for XAUUSD Gold. REQUIREMENTS: 1. Lifetime bot - No expiry date, unlimited accounts, unlimited installations 2. Must include source code .mq5 file - This makes it lifetime 3. Every trade MUST have Stop Loss 300 points and Take Profit 600 points 4. No martingale, No grid, No averaging - Clean safe strategy 5. Auto lot size = 1% risk per trade for good margin growth
Expert advisor 150+ USD
Hiring: Forex Strategist & MQL5 Developer for Long-Term EA Development I am looking for an experienced Forex Strategist and MT5 (MQL5) Developer to work with me on an ongoing project to develop, test, improve, and optimize a profitable Forex Expert Advisor (EA). My Message to the Developer My budget is $150 . However, this is not intended to be a one-time payment for a finished product. I want an ongoing working
Hello developers,I am looking for an experienced MQL5 developer to create an EA based on Moving Average retest strategy with advanced recovery system.The concept is simple: Entry is based on MA close and retest. Initial trade has small TP and no SL.If price goes against the initial position, the EA should manage it using:Opposite hedge tradePending limit grid systemBasket take profitMartingale lot multiplier after
Hi gentlemen, I want MT5 market orders placed (open and close orders) on MEXC trading through web browser. MEXC doesnt allow algo trading. - Need source code budget: USD 50 (quote me your price and delivery time) I need this at the earliest and this job is only for mexc.com, not binance or any other exchange I look forward to your price offer and your suggestions. Appreciate

Project information

Budget
30 - 200 USD
Deadline
to 20 day(s)