Announcement

Collapse

Looking for a User App or Add-On built by the NinjaTrader community?

Visit NinjaTrader EcoSystem and our free User App Share!

Have a question for the NinjaScript developer community? Open a new thread in our NinjaScript File Sharing Discussion Forum!
See more
See less

Partner 728x90

Collapse

Linkers::X→theNextBigThing; C++ Event Driven HFT Algo Trading Platform

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Linkers::X→theNextBigThing; C++ Event Driven HFT Algo Trading Platform

    C++ Event Driven HFT Algorithmic Trading Platform

    Linkers::X a Lightning Fast Event Driven Encrypted HFT Algorithmic Trading Platform with Object Oriented Trading Language.

    Hi, I'm Mike and I'm a senior C++ developer and creator of Linkers::X Trading Library with OOP

    This is a FREE Project available for NinjaTrader 7,8 as Indicators and Strategies and classes and containers written in C++
    .
    Linkers::X will be coming out in January 2018 on github

    Linkers::X→theNextBigThing; in C++ HFT Algorithmic Trading will happen here! Lightning Fast Event Driven HFT https://www.paypal.com/paypalme/heymickeynyc - LinkersX


    I'd like to introduce Linkers::X Object Oriented Trading Language to the NinjaTrader community


    Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
    Last edited by LinkersX; 12-29-2017, 11:47 AM.

    #2
    // # this code will compile and execute on NinjaTrader 7 & 8
    // https://github.com/LinkersX

    xAccount acc1;
    xSymbol symbol1;
    xOrder long1;
    xOrder short1;
    xCharts chart1;
    xBars renko1;
    xTicks tik1;
    xSMA sma1;

    // init
    acc1("accountNumber"); // connect to MetaTrader
    symbol1(acc1.x, Symbol()); // symbol attached to account
    chart1(symbol1.x, 3); // chart1 attached to symbol1 and offline timeframe will be 3
    renko1(symbol1.x, UltimateRenko, 20); //Ultimate renko1 (period 20) attached to chart1.

    // attach simple moving average with period 20 to Ultimate Renko1 and chart1
    sma1(renko1.x, chart1.x, 20, 0);

    //events
    Linkers::X(EventType e)
    {
    //let's see if the event is error
    if(e.error())
    {
    if(e._broker_busy){//do something ...}
    }
    //--
    if (e._economic_news)
    {
    print (renko1.high(5)); // print High value at bar index nr 5
    print (renko1[2].typical); // print Typical value 2 bars back
    print (sma1[0].value); //print current bar SMA indicator value
    }

    // check for event if bar touched (+/- few pips, configurable) around Daily High
    if (e._daily_high)
    {
    //check if 5 days back Daily high is higher than UltimateRenko BarSeries 2 bars back
    if (symbol1.dailyHigh(5) > renko1.high[2]) {short1.sell();}
    }
    // check if last bar close touched around nearest round number
    if (e._round_number) {print(e.roundNumber());} // print out the actual nearest round number value
    //etc
    }
    [/CODE]

    https://www.youtube.com/watch?v=rrVDATvUitA
    Last edited by LinkersX; 12-29-2017, 10:00 AM.

    Comment


      #3
      another example

      // # this code will compile and execute NinjaTrader 7

      #include<LinkersX.h>

      struct eco_news
      {
      xTime time;
      double forecast;
      double previous;
      double actual;
      double consensus;
      xString title;
      xString country;
      int impact;
      };

      xEcoNews econews1;

      econews1.loadHistory(20170101, 20173112);
      econews1.get(eco_news);

      //where 1 is last event
      print(econews1.time(1), econews1.name(1), econews1.impact(1), econews1.country(1), econews1.forecast(1), econews1.previous(1), econews1.actual(1));

      Comment


        #4
        Of course if its possible pay 18K/month for Economic data from
        Thomson Reuters

        ECONOMIC DATA WITH GLOBAL COVERAGE
        Economic data
        Unrivaled, deep and consistent global economic data coverage, delivered with critical timeliness to power your decision-making.

        just to be able to run:

        Code:

        econews1.updateActual(actualValueSupliedByThomsonR eutersFor18K);

        //which will create e.actual_updated event;

        //so the actual trading strategy would look like: 1 is the last event, actual gets suplied by Linkers::X by specifying Thomson Reuters Feed

        if(e.unemployment_claims(1) && e.actual_updated(1) && e.is_news_good(1))
        {
        long1.buy();
        }
        Last edited by LinkersX; 12-29-2017, 09:43 AM.

        Comment


          #5
          Currency Meter Example

          HTML Code:
          // # this code will compile and execute on  NinjaTrader 7 & 8
          // Linkers::X→theNextBigThing; C++ HFT Algorithmic Trading Platform
          // https://www.elitetrader.com/et/threads/linkers-x-lets-code-in-c-daytrade-daydream.316424/
          // https://github.com/LinkersX
           
          #include<LinkersX.h>
           
          struct CurrencyMeter
          {
          USD,
          AUD,
          GBP,
          EUR,
          JPY,
          NZD,
          CAD,
          CNY,
          };
           
          xCurrencyMeter meter1;
          CurrencyMeter cm1;
           
          meter1.get(cm1, 5); // get currency meter lookBack is 5 bars/
            
          //That's it!
          //Currency Strength Indicator
          Last edited by LinkersX; 12-29-2017, 07:09 PM.

          Comment


            #6
            HTML5 Charts

            C++ Event Driven HFT Algorithmic Trading Platform HTML5 Charts

            HTML Code:
            <!-- Styles -->
            <style>
            #chartdiv {
              width : 100%;
              height  : 500px;
            }
            </style>
            
            <!-- Resources -->
            <script src="https://www.amcharts.com/lib/3/amcharts.js"></script>
            <script src="https://www.amcharts.com/lib/3/serial.js"></script>
            <script src="https://www.amcharts.com/lib/3/amstock.js"></script>
            <script src="https://www.amcharts.com/lib/3/plugins/dataloader/dataloader.min.js"></script>
            <script src="https://www.amcharts.com/lib/3/plugins/export/export.min.js"></script>
            <link rel="stylesheet" href="https://www.amcharts.com/lib/3/plugins/export/export.css" type="text/css" media="all" />
            <script src="https://www.amcharts.com/lib/3/themes/light.js"></script>
            
            <!-- Chart code -->
            <script>
            var chart = AmCharts.makeChart( "chartdiv", {
              "type": "stock",
            "theme": "light",
            
              //"color": "#fff",
              "dataSets": [ {
                "title": "MSFT",
                "fieldMappings": [ {
                  "fromField": "Open",
                  "toField": "open"
                }, {
                  "fromField": "High",
                  "toField": "high"
                }, {
                  "fromField": "Low",
                  "toField": "low"
                }, {
                  "fromField": "Close",
                  "toField": "close"
                }, {
                  "fromField": "Volume",
                  "toField": "volume"
                } ],
                "compared": false,
                "categoryField": "Date",
            
                /**
                 * data loader for data set data
                 */
                "dataLoader": {
                  "url": "https://www.amcharts.com/wp-content/uploads/assets/stock/MSFT.csv",
                  "format": "csv",
                  "showCurtain": true,
                  "showErrors": true,
                  "async": true,
                  "reverse": true,
                  "delimiter": ",",
                  "useColumnNames": true
                },
            
                /**
                 * data loader for events data
                 */
                "eventDataLoader": {
                  "url": "https://www.amcharts.com/wp-content/uploads/assets/stock/MSFT_events.csv",
                  "format": "csv",
                  "showCurtain": true,
                  "showErrors": true,
                  "async": true,
                  "reverse": true,
                  "delimiter": ",",
                  "useColumnNames": true,
                  "postProcess": function( data ) {
                    for ( var x in data ) {
                      switch ( data[ x ].Type ) {
                        case 'A':
                          var color = "#85CDE6";
                          break;
                        default:
                          var color = "#cccccc";
                          break;
                      }
                      data[ x ].Description = data[ x ].Description.replace( "Upgrade", "<strong style=\"color: #0c0\">Upgrade</strong>" ).replace( "Downgrade", "<strong style=\"color: #c00\">Downgrade</strong>" );
                      data[ x ] = {
                        "type": "pin",
                        "graph": "g1",
                        "backgroundColor": color,
                        "date": data[ x ].Date,
                        "text": data[ x ].Type,
                        "description": "<strong>" + data[ x ].Title + "</strong><br />" + data[ x ].Description
                      };
                    }
                    return data;
                  }
                }
            
              }, {
                "title": "TXN",
                "fieldMappings": [ {
                  "fromField": "Open",
                  "toField": "open"
                }, {
                  "fromField": "High",
                  "toField": "high"
                }, {
                  "fromField": "Low",
                  "toField": "low"
                }, {
                  "fromField": "Close",
                  "toField": "close"
                }, {
                  "fromField": "Volume",
                  "toField": "volume"
                } ],
                "compared": true,
                "categoryField": "Date",
                "dataLoader": {
                  "url": "https://www.amcharts.com/wp-content/uploads/assets/stock/TXN.csv",
                  "format": "csv",
                  "showCurtain": true,
                  "showErrors": true,
                  "async": true,
                  "reverse": true,
                  "delimiter": ",",
                  "useColumnNames": true
                }
              } ],
              "dataDateFormat": "YYYY-MM-DD",
            
              "panels": [ {
                  "title": "Value",
                  "percentHeight": 70,
            
                  "stockGraphs": [ {
                    "type": "candlestick",
                    "id": "g1",
                    "openField": "open",
                    "closeField": "close",
                    "highField": "high",
                    "lowField": "low",
                    "valueField": "close",
                    "lineColor": "#fff",
                    "fillColors": "#fff",
                    "negativeLineColor": "#db4c3c",
                    "negativeFillColors": "#db4c3c",
                    "fillAlphas": 1,
                    "comparedGraphLineThickness": 2,
                    "columnWidth": 0.7,
                    "useDataSetColors": false,
                    "comparable": true,
                    "compareField": "close",
                    "showBalloon": false,
                    "proCandlesticks": true
                  } ],
            
                  "stockLegend": {
                    "valueTextRegular": undefined,
                    "periodValueTextComparing": "[[percents.value.close]]%"
                  }
            
                },
            
                {
                  "title": "Volume",
                  "percentHeight": 30,
                  "marginTop": 1,
                  "columnWidth": 0.6,
                  "showCategoryAxis": false,
            
                  "stockGraphs": [ {
                    "valueField": "volume",
                    "openField": "open",
                    "type": "column",
                    "showBalloon": false,
                    "fillAlphas": 1,
                    "lineColor": "#fff",
                    "fillColors": "#fff",
                    "negativeLineColor": "#db4c3c",
                    "negativeFillColors": "#db4c3c",
                    "useDataSetColors": false
                  } ],
            
                  "stockLegend": {
                    "markerType": "none",
                    "markerSize": 0,
                    "labelText": "",
                    "periodValueTextRegular": "[[value.close]]"
                  },
            
                  "valueAxes": [ {
                    "usePrefixes": true
                  } ]
                }
              ],
            
              "panelsSettings": {
                //    "color": "#fff",
                "plotAreaFillColors": "#333",
                "plotAreaFillAlphas": 1,
                "marginLeft": 60,
                "marginTop": 5,
                "marginBottom": 5
              },
            
              "chartScrollbarSettings": {
                "graph": "g1",
                "graphType": "line",
                "usePeriod": "WW",
                "backgroundColor": "#333",
                "graphFillColor": "#666",
                "graphFillAlpha": 0.5,
                "gridColor": "#555",
                "gridAlpha": 1,
                "selectedBackgroundColor": "#444",
                "selectedGraphFillAlpha": 1
              },
            
              "categoryAxesSettings": {
                "equalSpacing": true,
                "gridColor": "#555",
                "gridAlpha": 1
              },
            
              "valueAxesSettings": {
                "gridColor": "#555",
                "gridAlpha": 1,
                "inside": false,
                "showLastLabel": true
              },
            
              "chartCursorSettings": {
                "pan": true,
                "valueLineEnabled": true,
                "valueLineBalloonEnabled": true
              },
            
              "legendSettings": {
                //"color": "#fff"
              },
            
              "stockEventsSettings": {
                "showAt": "high",
                "type": "pin"
              },
            
              "balloon": {
                "textAlign": "left",
                "offsetY": 10
              },
            
              "periodSelector": {
                "position": "bottom",
                "periods": [ {
                    "period": "DD",
                    "count": 10,
                    "label": "10D"
                  }, {
                    "period": "MM",
                    "count": 1,
                    "label": "1M"
                  }, {
                    "period": "MM",
                    "count": 6,
                    "label": "6M"
                  }, {
                    "period": "YYYY",
                    "count": 1,
                    "label": "1Y"
                  }, {
                    "period": "YYYY",
                    "count": 2,
                    "selected": true,
                    "label": "2Y"
                  },
                  /* {
                       "period": "YTD",
                       "label": "YTD"
                     },*/
                  {
                    "period": "MAX",
                    "label": "MAX"
                  }
                ]
              }
            } );
            </script>
            
            <!-- HTML -->
            <div id="chartdiv"></div>

            A modification of this HTML5/JavaScript code to load xTick data from LinkersX in a xMarketReplay Interactive Object
            Attached Files
            Last edited by LinkersX; 01-02-2018, 11:03 PM.

            Comment


              #7
              Happy New Year

              #Linkers::X-> Hello World Happy New Year....

              Available for FREE on www.Github.com/LinkersX in January 2018!
              https://stackoverflow.com/users/7589112/linkersx
              https://stocktwits.com/LinkersX
              https://www.tradingview.com/u/LinkersX/
              https://www.elitetrader.com/et/threa...ydream.316424/
              Last edited by NinjaTrader_PatrickH; 01-03-2018, 07:47 AM.

              Comment


                #8
                I got a silly understanding of C++, all I'm seeing is buffers of <char*> and how it's been done in 80's in __ASM
                Since i don't use std:: containers at all, but rather have my own expandable encrypted containers xVector, xString, xArray, xQueue, xStack, xSeries, written in such a plain C++ and critical sections in plain __ASM,
                ... so i could easily go #unsafe route and simply Use GCHandle to pin down the objects in memory in C# and compile my LinkersX code in C#, ahaha funny but true

                //No worries this code will compile on your beloved C# and NinjaScript if you include following Code:

                HTML Code:
                #include<LinkersX.h>
                HTML Code:
                //example:
                
                struct MqlRates
                {
                datetime  time; // Period start time
                double     open; // Open price
                double     high; // The highest price of the period
                double     low; // The lowest price of the period
                doublec   lose; // Close price
                long         tick_volume; // Tick volume
                int            spread; // Spread
                long         real_volume; // Trade volume
                };
                
                MqlRates rates1;
                xQueue<MqlRates> queue1; // no size since it expands;)
                queue1.name("my LinkersX queue1 Object"); // let's name our xQueue Object
                queue1.push(rates1); // push queue1 into the xQueue Object
                //-------------------------------------

                HTML Code:
                // in another process 2nd NinjaTrader
                
                xQueue queue1;
                MqlRates mt4;
                
                queue1("my LinkersX queue1 Object"); //initialize reference to Object in another process
                queue1.pop(mt4); // pop NinjaTrader's MqlRates into mql4 structure;
                
                //Linkers::X-> Thats it!
                //Here is an idea for NinjaTrader to Speed up a Little bit
                Last edited by LinkersX; 01-03-2018, 10:58 PM.

                Comment


                  #9
                  Questions maybe....

                  Originally posted by LinkersX View Post
                  I got a silly understanding of C++, all I'm seeing is buffers of <char*> and how it's been done in 80's in __ASM
                  Since i don't use std:: containers at all, but rather have my own expandable encrypted containers xVector, xString, xArray, xQueue, xStack, xSeries, written in such a plain C++ and critical sections in plain __ASM,
                  ... so i could easily go #unsafe route and simply Use GCHandle to pin down the objects in memory in C# and compile my LinkersX code in C#, ahaha funny but true

                  //No worries this code will compile on your beloved C# and NinjaScript if you include following Code:

                  #include<LinkersX.h>
                  //example:

                  struct MqlRates
                  {
                  datetime time; // Period start time
                  double open; // Open price
                  double high; // The highest price of the period
                  double low; // The lowest price of the period
                  doublec lose; // Close price
                  long tick_volume; // Tick volume
                  int spread; // Spread
                  long real_volume; // Trade volume
                  };

                  MqlRates rates1;
                  xQueue<MqlRates> queue1; // no size since it expands
                  queue1.name("my LinkersX queue1 Object"); // let's name our xQueue Object
                  queue1.push(rates1); // push queue1 into the xQueue Object

                  //-------------------------------------

                  // in another process 2nd NinjaTrader

                  xQueue queue1;
                  MqlRates mt4;

                  queue1("my LinkersX queue1 Object"); //initialize reference to Object in another process
                  queue1.pop(mt4); // pop NinjaTrader's MqlRates into mql4 structure;

                  //Linkers::X-> Thats it!

                  //Here is an idea for NinjaTrader to Speed up a Little bit
                  Any Questions?

                  Comment


                    #10
                    No questions. Your project has my sympathy (although it seems to lack "blockchain", which is a serious shortcoming these days).

                    I would honestly prefer if you stopped spamming and advertising vaporware. For my part, I'd welcome a carefully curated post of yours once you have downloadable working code that is actually relevant to NinjaTrader.

                    Thanks,
                    gurk

                    Comment


                      #11
                      Originally posted by gurko View Post
                      No questions. Your project has my sympathy (although it seems to lack "blockchain", which is a serious shortcoming these days).

                      I would honestly prefer if you stopped spamming and advertising vaporware. For my part, I'd welcome a carefully curated post of yours once you have downloadable working code that is actually relevant to NinjaTrader.

                      Thanks,
                      gurk
                      what do you mean lack of "blockchain",
                      want me to make a bitcoin digger in the background in C++ , i can do it...

                      Comment


                        #12
                        xMarketReplay LinkersX Market Replay Object

                        Originally posted by gurko View Post
                        No questions. Your project has my sympathy (although it seems to lack "blockchain", which is a serious shortcoming these days).

                        I would honestly prefer if you stopped spamming and advertising vaporware. For my part, I'd welcome a carefully curated post of yours once you have downloadable working code that is actually relevant to NinjaTrader.

                        Thanks,
                        gurk
                        and now....
                        the famous xMarketReplay Object....

                        ZMQ is the old way of messaging MQL4 and Metatrader. ZMQ slows down communication 1000x.

                        New way of communication would be...

                        HTML Code:
                            // # this code will compile and execute 
                            // NinjaScript, NinjaTrader 7 & 8
                            // [url]https://github.com/LinkersX[/url]
                        
                            #include<LinkersX.h>
                        
                            xMarketReplay replay1;
                            xTime replayBegin;
                        
                            // download tick data and store it in Linkers::X time line 
                        //of events format on the disk files are lzma compressed format
                        
                            replay1.loadHystory(20170101, 20171231); 
                        
                            replayBegin(xTimeNowMS());
                            replayBegin -= Month(12);
                            replay1.replay(replayBegin, "heyMickey, here is the replay 
                        of the FOMC from friday morning;)", HTML5);
                            replay1.message("hello heyMickey", "192.168.1.43:27017");
                        // in plain english: created xMarketReplay Object then downloaded tick history(20170101, 20171231), start replaying in HTML5 chart, and message whole container to remote location.
                        Last edited by NinjaTrader_PatrickH; 01-04-2018, 08:03 AM.

                        Comment


                          #13
                          Originally posted by LinkersX View Post
                          and now....
                          the famous xMarketReplay Object....

                          Ryan & the rest in NinjaTrader, please sit down, get a popcorn and enjoy the show...


                          ZMQ is the old way of messaging MQL4 and Metatrader. user3666197 always talks about shaving off nanoseconds but always forget to mention that ZMQ slows down communication 1000x.

                          New way of communication would be...
                          HTML Code:
                              // # this code will compile and execute 
                          // NinjaScript, NinjaTrader 7 & 8
                              // [url]https://github.com/LinkersX[/url]
                          
                              #include<LinkersX.h>
                          
                              xMarketReplay replay1;
                              xTime replayBegin;
                          
                              // download tick data and store it in Linkers::X time line 
                          //of events format on the disk files are lzma compressed format
                          
                              replay1.loadHystory(20170101, 20171231); 
                          
                              replayBegin(xTimeNowMS());
                              replayBegin -= Month(12);
                              replay1.replay(replayBegin, "heyMickey, here is the replay 
                          of the FOMC from friday morning;)", HTML5);
                              replay1.message("hello heyMickey", "192.168.1.43:27017");
                          // in plain english: created xMarketReplay Object then downloaded tick history(20170101, 20171231), start replaying in HTML5 chart, and message whole container to remote location.
                          no questions again?
                          c'mon 471 visits and only ONE question
                          Last edited by LinkersX; 01-03-2018, 10:56 PM.

                          Comment


                            #14
                            Originally posted by LinkersX View Post
                            no questions again?
                            c'mon 471 visits and only ONE question
                            Not really too many serious power users here from what I can tell who do a lot of their own coding, etc.

                            I'm not even sure what this product would get me. I don't do HFT.

                            Comment


                              #15
                              Linkers::X is not for HFT ONLY

                              Originally posted by sledge View Post
                              Not really too many serious power users here from what I can tell who do a lot of their own coding, etc.

                              I'm not even sure what this product would get me. I don't do HFT.
                              LinkersX is way faster than ANY #HFT CODE and can be used in connection to HFT.
                              LinkersX meant to be actually like an extension to NinjaTrader's NinjaScript Language C#
                              Can Easily connect 2 or more #NinjaTraders Into One Multi Broker, Multi TimeFrame, Multi Trading Platform Strategy

                              Linkers::X does NOT Message(query the platform for Updated values) LinkersX got 'em on the fly
                              The only slows down is when the actual Trade execution occurs, but that doesn't matter anyhow broker execution is slow
                              LinkersX is a trade platform contained around NinjaTrader in a form of C++ DLL API with a NinjaScript Wrapper for the LinkersX Object Oriented Trading Language LOOTL
                              Fully Written In C++ with a little use of __ASM where is critical.
                              My custom Encrypted Expandable Containers are faster than any STD:: implementation std::vector for example.
                              xVector.push(struct); is way faster than std::vector.push(struct);
                              Needless to say that its way faster than any C# Collection.
                              Basically NinjaTrader could ditch its whole internal collection/container/filesystem/network, and use LinkersX as a Fast C++ backend and use NinjaTrader's graphic as Front End.
                              Yeah i know its sounds crazy, but wat can i do, It's just the way it is with LinkersX...
                              It just works...
                              In LinkersX Everything is an Event... Fully Event Driven architecture
                              Thank you NinjaTrader and Ryan for really pissing me off with the Market Replay.
                              I'm geting close to a nervous breakdown every time i want to replay something on NinjaTrader.
                              Can you guys please tell me, is it such a big problem to rewind the chart into the history and press play and the replay Instantly Starts??
                              I see no problem, i did it. Please see xMarket Replay code snippet
                              LinkersX could easily xMarketReplay into your website's javascript code.
                              Usage is limitless. Its an Inter-process Library. IT DOES NOT CARE if it got 5 NinjaTraders and 10 websites Connected into one Trading Strategy
                              LinkersX works with MongoDB, it just suffles(copy) the whole xBars container into the MongoDB in form of encrypted BSON
                              HTML Code:
                              xBars renko1;
                              xBars("EURUSD", UltimateRenko, 10);
                              
                              print(renko1.high(1)); //print renko1 high at bar index 1
                              renko1.mongoDB(); // that it!
                              
                              //Please bear in mind that i'm giving an easy understandable code snippets,
                              //not the actual LinkersX code syntax
                              HTML Code:
                              struct MqlRates
                              {
                              datetime  time; // Period start time
                              double     open; // Open price
                              double     high; // The highest price of the period
                              double     low; // The lowest price of the period
                              doublec   lose; // Close price
                              long         tick_volume; // Tick volume
                              int            spread; // Spread
                              long         real_volume; // Trade volume
                              };
                              
                              MqlRates rates1;
                              xSeries<MqlRates> series1; // no size since it expands;)
                              series1.name("my LinkersX series1 Object"); // let's name our xSeries Object
                              series1.add(rates1); // adds series1 into the xSeries Object // container auto expands 
                              series1.at(1); //get series1 at position 1 in the array
                              series1.add(rates1); // adds series1 into the xSeries Object // container auto expands 
                              series1.at(2); //get series1 at position 2 in the array
                              series1.shiftLeft(2);// shift container to the left for 2 positions after this container
                               #should //be #empty
                              
                              print(series1.overflowLeft()); // print the last overflow
                              
                              
                              
                              xArray, xSeries are a c style Expandable Encrypted Array Container

                              If you guys wonder why I'm doing this?, well, I'm writing the LinkersX documentation online LOL

                              Of course there is my very extensive xString Class with full support for <JSON>, <XML> and <HTML> parser, manipulating strings <char> <wchar_t> and messaging containers of course
                              HTML Code:
                              xString mystring1;
                              mystring1("123Linkers::X->Hello World;)");
                              mystring1.shiftLeft(3);
                              print(mystring1); // "Linkers::X->Hello World;)"
                              
                              // send container remore with 
                              //greeting message "hello sam028"
                              mystring1.message("hello sam028, 192.168.1.43:27017);
                              
                              //save container to files
                              mystring.file("location_to_file_and_filename");  //save file
                              mystring.mongoDB(); //sent it to MongoDB
                              
                              
                              
                              Needless to say that the content of mystring1 is fully encrypted in memory/files/DB/network unless its JSON or XML but files/DB only , memory still enqrypted

                              No more I'm wasting time searching for holy grain indicator then asking on Lovely and attentive NinjaScript support forum how to get values, connect between charts etc.
                              No more wasting time on BS, coding patches around Indicators, Strategies and multiple charts.

                              LinkersX has custom way to expand with your custom classes and indicators, fully exposed attentive and jolly memory manager and allocator.
                              External Indicators would be in a form of a DLL file linked to LinkersX DLL similar to SIerraChart indicator solution via DLL, but much simpler
                              Full Support for NTDirect.dll as xNTDirect Class

                              xSMA indicator for example is set it and forget it type, no more iterate through history or what not, just declare, forget and query values

                              code like this is perfectly normal

                              HTML Code:
                              // ahhhh MetaTrader, just can't live without it
                              
                              struct MqlRates
                              {
                              datetime  time; // Period start time
                              double     open; // Open price
                              double     high; // The highest price of the period
                              double     low; // The lowest price of the period
                              doublec   lose; // Close price
                              long         tick_volume; // Tick volume
                              int            spread; // Spread
                              long         real_volume; // Trade volume
                              };
                              
                              xSMA<MqlRates> mqlsma1;
                              
                              mqlsma1.add(mqlstruct);
                              mqlstruct.at(1);
                              
                              
                              
                              I was really trying to put my 33 years coding experience as a senior developer, on __ASM & c/C++ and C# to put into a simple
                              LinkersX Object(struct) Oriented Trading Language syntax that is perfectly understandable without any garbage collectors and other #NET and CLI baloney sandwiches served by Microsoft and windows, just plain simple c++ infused here or there with a little __ASM on critical points

                              Since #LinkersX is multi Platform API it could endanger your #AmericanDream and #wealth, #health and #netWorth by exposing you to unwanted #anonymous #hackers and #viruses.

                              This is the reason why LinkersX has fully encrypted containers.
                              You got UNLIMITED access to ALL LinkersX xObjects in the universe as long as the Object owner's key during compilation time is same as the X program(caller's encryption key)

                              without the matching encryption keys there is no way to operate the containers NOR ever decrypt the data LinkersX Event time line type tick file system is lzma compressed and encrypted

                              enqryption key can be just short as this "HQBVHGCQFGDTDQTSTESQXFCJHXFAVCMNVACSGHYS Qf^!rv%^e$cw$c@ ~!wghvSVf^&!re!@rve dgfykgey qg"

                              or the whole Bible as xString I DON'T CARE

                              If someone ever wonders why the website is still blank, well, it's cause the website will be in HTML5 with JavaScript connection to the LInkersX API back-end, basically website will be fully run by LinkersX with help of MongoDB connected to support forum NodeBB
                              There will be multiple HTML5/javascript stock charts running,,, hmmmm
                              listen NinjaTrader carefully, MULTIPLE Market Replays as demos
                              hastag #ImSoLuckyLuckyLucky

                              there will be something like this




                              There is this idea floating through my head to connect Linux and windows, basically Ninjatrader is running on a #VirtualMachine and you run your strategy from Linux host or virtual machine.
                              Done on deeper level than simple messaging back and forth for values or whatever

                              LinkersX has over 100++ events built in so the strategy would be simple as:

                              I've started a thread called Servers Revenge - How To Turn $200 to $100k in one month on ForexFactory.com i dare each one of you to join the challenge with real accounts, of course once reinstate my LinkersX account there, same amount of ignorance as on some other very popular trading forums.

                              Basically I've introduced a simple strategy of mine, simple as this:

                              Captain's Rulezz...

                              when price pulls back and touches last_removed_swing_high and last_removed_swing_low
                              HTML Code:
                              if(last_removed_swing_high)
                              {
                              BUY;
                              }
                              
                              
                              if(last_removed_swing_low)
                              {
                              SELL;
                              }
                              
                              
                              [B]stopLoss = 10pips;
                              target = 10pips;

                              starting with 0.01 lot, progressive ++
                              simple, ain't it ?

                              Ok, lets continue,
                              LinkersX has 3 different type console output, standard std::cout, C# , and trying to make HyperX JavaScript npm as default, from the LinkersX language you can open as many windows necessary and fully control them
                              Last edited by NinjaTrader_PatrickH; 01-04-2018, 08:06 AM.

                              Comment

                              Latest Posts

                              Collapse

                              Topics Statistics Last Post
                              Started by algospoke, Yesterday, 06:40 PM
                              2 responses
                              23 views
                              0 likes
                              Last Post algospoke  
                              Started by ghoul, Today, 06:02 PM
                              3 responses
                              14 views
                              0 likes
                              Last Post NinjaTrader_Manfred  
                              Started by jeronymite, 04-12-2024, 04:26 PM
                              3 responses
                              45 views
                              0 likes
                              Last Post jeronymite  
                              Started by Barry Milan, Yesterday, 10:35 PM
                              7 responses
                              21 views
                              0 likes
                              Last Post NinjaTrader_Manfred  
                              Started by AttiM, 02-14-2024, 05:20 PM
                              10 responses
                              181 views
                              0 likes
                              Last Post jeronymite  
                              Working...
                              X