Good trading platforms for beginners?

Discussion in 'Educational Resources' started by OldRollie, Oct 30, 2019.

  1. RedDuke

    RedDuke

    Most platforms do not charge for data, you need data provider. High quality data will cost you around $60 per month. Take a look at kinetick or iqfeed. Very cheap these days.
     
    #11     Oct 31, 2019
    Fx-Game likes this.
  2. The third party stuff with procedural based languages built into the platform is child's play for intraday execution. The reason is because of their "bar dependency" structure. They're just not fast enough and also don't handle portfolio level in a stable fashion. I toyed around with them for years, beating my head against the wall, and moved on. Some do have great visual features though.

    There are good off-the-shelf platforms (AlgoTrader, Deltix,etc..) out there, but they are expensive, with ongoing monthly fees. At that point you might as well just hire a developer to custom build, even if you need occasional modifications. Most serious operators go this route.
     
    #12     Oct 31, 2019
  3. RedDuke

    RedDuke

    All our algos run on ninjatrade8 (finally migrated from NT7 :) ). We only trade futures, and absolutely have no issues with executions and exits. We process every tick, not sure what you mean by delays in "bars dependencies". I also have access to my whole portfolio and coded things we required, once again what is the issue you talking about?
     
    #13     Oct 31, 2019
  4. The problem is the ticks are built into bars. That doesn't cut it for order flow engagement, and you'll never have accurate simulation. The competition is much faster and smarter nowadays. We're dealing in microseconds. I've seen NQ spike 1% in one second.

    https://ninjatrader.com/support/helpGuides/nt7/?how_bars_are_built.htm

    Definition

    The total number of ticks of the current bar.

    Property Value

    A int value that represents the total number of ticks of the current bar.

    Syntax

    Bars.TickCount

    Examples

    // Prints the tick count to the output window
    Print("The tick count of the current bar is " + Bars.TickCount.ToString());
     
    Last edited: Oct 31, 2019
    #14     Oct 31, 2019
  5. RedDuke

    RedDuke

    Once again what is the issue? We capture every tick that comes in, and and strategy analyzes it. Once again we only trade futures from CME.

    The worst thing about a spike if it hits your stop and you get slippage. The worst one happened to us was during spring this year, where Oil spiked and we got 21 ticks slippage (it traded over 1000 times with volume of 7-8k in 1 second, ninja can capture of of this in timely manner).

    Slippage will happen from time to time, no matter the platform.
     
    #15     Oct 31, 2019
    VPhantom and digitalnomad like this.
  6. I know live ticks come into the platform, but your NT script is limited because it's looking for bar structure. Same with Easylanguage. Current/Last price data is always based on some form of a bar, usually the close in most platforms. Works depending on what you're trying to accomplish, just not for serious order book engagement. The market is simply too fast.

    https://ninjatrader.com/support/for.../strategy-development-aa/93044-get-last-price

    I'd be grateful to lose 20 ticks when these spikes happen, and they do, more often than people realize. This is how manual scalpers get wiped out. They'll get hit for 100's of ticks before their brain even processes what's happening. It's laughable to imagine someone sitting around in their boxers mouse scalping in this day and age.
     
    #16     Oct 31, 2019
  7. RedDuke

    RedDuke

    Very few can successfully day trade these days manually, especially stocks. Totally agree.

    With Ninja you have full power of C#, which allows you to do anything you wish. EasyLanguage is a scripting language (last time I looked), and it does not even come close.

    Please give me one example, which you think ninja can not handle (apart from limitation of not being able to trade options).
     
    #17     Oct 31, 2019
  8. I'm not an NT expert and going based on the docs, and also from what I have heard. Can you give a short NT sample code of how to get the tick data in, without reference to some bar structure?
    Just curious, why have your stop orders resting locally, and not on broker/exchange servers? You mention NT capturing this. Sounds like a recipe for disaster.

    Oh, OP. Sorry for hijacking your thread :)
     
    #18     Oct 31, 2019
  9. RedDuke

    RedDuke

    This one gets every price update on level 1 (MarketDataType.Last is trade). An event driven method which is called and guaranteed to be in the correct sequence for every change in level one market data for the underlying instrument. OnMarketData() can include but is not limited to the bid, ask, last price and volume.

    protected override void OnMarketData (MarketDataEventArgsmarketDataUpdate)
    {
    // Print some data to the Output window
    if(marketDataUpdate.MarketDataType==MarketDataType.Last)
    Print(string.Format("Last = {0} {1} ",marketDataUpdate.Price,marketDataUpdate.Volume));
    elseif(marketDataUpdate.MarketDataType==MarketDataType.Ask)
    Print(string.Format("Ask = {0} {1} ",marketDataUpdate.Price,marketDataUpdate.Volume));
    elseif(marketDataUpdate.MarketDataType==MarketDataType.Bid)
    Print(string.Format("Bid = {0} {1}",marketDataUpdate.Price,marketDataUpdate.Volume));
    }


    This one gets every price update on all level 2s that are available. An event driven method which is called and guaranteed to be in the correct sequence for every change in level two market data (market depth) for the underlying instrument. The OnMarketDepth() method can be used to build your own level two book.

    protected override void OnMarketDepth (MarketDepthEventArgsmarketDepthUpdate)
    {
    // Print some data to the Output window
    if(marketDepthUpdate.MarketDataType==MarketDataType.Ask&&marketDepthUpdate.Operation==Operation.Update)
    Print(string.Format("The most recent ask change is {0} {1}",marketDepthUpdate.Price,marketDepthUpdate.Volume));
    }

    This one just triggered for every bar update aka trade, basically each incoming tick similar to OnMarketData, but you can slow it down to only calculate on bar close for example, it is a setting. An event driven method which is called whenever a bar is updated. The frequency in which OnBarUpdate is called will be determined by the "Calculate" property. OnBarUpdate() is the method where all of your script's core bar based calculation logic should be contained.

    protected override void OnBarUpdate()
    {
    if(CurrentBar<1)
    return;

    // Compares the primary bar's low price to the 5-minute bar's low price
    if(Low[0]>Lows[1])
    Print("The current bar's low price is greater");
    }

    Essentially you open particular instrument chart, and set it to monthly bars for example, and load you script, it will run continuously on each incoming tick or level 2 change.
     
    Last edited: Oct 31, 2019
    #19     Oct 31, 2019
    digitalnomad likes this.
  10. RedDuke

    RedDuke

    On no, I am not suicidal. The stop was on the exchange, and I still for 21 ticks slippage. I saved the print for 1 occasion, it does not have mili seconds. What you see in attachment is price action over 1 second. Began at 54.63 with High at 55.01, essentially 38 ticks range.
     
    Last edited: Oct 31, 2019
    #20     Oct 31, 2019