Mission Critical: Broker feed drops during EA trading
Page 1 of 612 12 LastLast
Results 1 to 10 of 11

Thread: Mission Critical: Broker feed drops during EA trading

  1. #1
    For those of us that rely on EAs for trading (notice that I said rely rather than use) I have seen a possible catastrophic problem.

    Assuming that your EA uses any technical analysis indiors, a dropped data feed will most likely change the TA worth (RSI, MA, etc.. .) This may lead to false signs....

    How can you cope with that?

  2. #2
    To me happin all time.
    EA bad triggir ok... so waht? Cost of doing buziniss.
    plenti mor pip later.
    Ok, thank you.

  3. #3
    Anyone have a much better response than this one? Tesla, Mikhail, Skyline...

  4. #4
    When you lose connection and reconnect, your pricing tends to stutter in. What I mean by that is you'll see blocks of pricing data come in, beginning with the earliest lost data.

    The fantastic news is that this means your indiors will update and will be accurate, given they were built right.

    The bad news is that, when this update data can trigger the beginning () part of your EA, you can get an entrance or exit triggered off of old data. I have not confirmed if the start function is really triggered when update pricing is obtained, but this should be trivial to test.


    Since an EA only processes when the start() function is called, and also the beginning () function is only called when a tick is obtained, it's not possible for an EA to check to monitor in case you are disconnected with all the IsConnected purpose (at least without seriously munging the workings of the EA). You could probably use a script to monitor link state and trip a global variable when disconnects occur, but that seems like a somewhat inelegant solution.

    I will sleep with this one and see if I can't produce an adequate response. I'm interested in reading what others have to say with this too.

  5. #5
    An EA doesn't activate while disconnected and it doesn't activate on upgrading history data. It will trigger on the next tick, after the gap was filled. At that moment indiors should possess the proper current values. The only thing I could envision is an MTF indior which uses bars from other timeframes, which haven't yet upgraded fully #8211; and also the indior thinks the last accessible bar is the current pub.

    Missed entrances and exits, obviously. However, I don't see how false signs would be generated. Could somebody give a good example, if I am overlooking something?

  6. #6
    After a little consideration, I am of the view that there is not much you can do about host disconnects. All things you can do is insure you have a safety stoploss on all places to restrict risk as soon as your EA can not manage transactions.

    You can mitigate disconnect risk on your side by insuring that your online connection is solid and redundant.

    Iya put together a script to track connection say, I haven't looked at it perhaps that's something that you could make use of.

  7. #7
    Quote Originally Posted by ;
    An EA doesn't trigger while disconnected and it doesn't trigger on updating history data.
    Is this speculation, or do you really know it from experience? Thank you.

  8. #8
    There'll also be instances when bars are lost as a result of the server being down. This can result in inaccurate indior/EA calculations. If you go to the history , you are able to fill in the missing bars with information from another provider.

    The more time I spend in this match, the more I intend to have accounts at multiple brokers, for when the inevitable occurs. At least, possess a demo from another broker up constantly, since you can still track the transaction, also if it goes against, call the table and have them close it out for you.

    Good luck.

  9. #9
    Quote Originally Posted by ;
    Is this speculation, nor do you know it from experience? Thank you.
    Like Tesla suggested, I've tested it using a very simple EA:
    PHP Code: <code><span style=”color: #000000”> <span style=”color: #0000BB”></span><span style=”color: #FF8000”>// ------------------------------------------------------------------
    //|expertstartfunction|
    // ------------------------------------------------------------------
    </span><span style=”color: #0000BB”>intstart</span><span style=”color: #007700”>()

    Printing (</span><span style=”color: #DD0000”>”TimeCurrent=”</span><span style=”color: #007700”> </span><span style=”color: #0000BB”>TimeToStr</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>TimeCurrent</span><span style=”color: #007700”>())
    </span><span style=”color: #DD0000”>”,Time#91;0#93;=”</span><span style=”color: #007700”> </span><span style=”color: #0000BB”>TimeToStr</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>Timing </span><span style=”color: #007700”>Number 91;</span><span style=”color: #0000BB”>0</span><span style=”color: #007700”>Number 93;-RRB-
    </span><span style=”color: #DD0000”>”,Bid=”</span><span style=”color: #007700”> </span><span style=”color: #0000BB”>DoubleToStr</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>Bid</span><span style=”color: #007700”>,</span><span style=”color: #0000BB”>Digits</span><span style=”color: #007700”>)
    </span><span style=”color: #DD0000”>”,Close#91;0#93;=”</span><span style=”color: #007700”> </span><span style=”color: #0000BB”>DoubleToStr</span><span style=”color: #007700”>(</span><span style=”color: #0000BB”>Close</span><span style=”color: #007700”>Number 91;</span><span style=”color: #0000BB”>0</span><span style=”color: #007700”>#93;,</span><span style=”color: #0000BB”>Digits</span><span style=”color: #007700”>));

    return(</span><span style=”color: #0000BB”>0</span><span style=”color: #007700”>);

    </span><span style=”color: #0000BB”></span> </span> </code> Start it in an old chart and monitor the output, while the history is updating. The output will look like this:
    Inserted Code... 2007.06.14 15:24:16 HistoryUpdateTest GBPUSD,M1: TimeCurrent = 2007.06.14 15:24, Time#91;0#93; = 2007.06.14 15:24, Bid = 1.9671, Close#91;0#93; = 1.9671 2007.06.14 15:23:49 HistoryUpdateTest GBPUSD,M1: TimeCurrent = 2007.06.14 15:23, Time#91;0#93; = 2007.06.14 15:23, Bid = 1.9670, Close#91;0#93; = 1.9670 2007.06.14 15:23:25 HistoryUpdateTest GBPUSD,M1: initialized

  10. #10
    Hi
    that is from MT4 help, I believe it assist
    think about to utilize RefreshRates()


    bool RefreshRates( )
    Refreshing of information in help://predefined_variables/. This function can be used when expert advisor has been computing for quite a very long time and requires data refreshing. Returns TRUE if data are refreshed, otherwise returns FALSE. The only reason for information cannot be refreshed is that they are the current data of the customer terminal. If the data are updated, the previous quote incoming time will be updated, too. This period is returned by the help://dateandtime_TimeCurrent/ function.

    Experts and scripts operate with their own copy of background information. Information of the current emblem are duplicated at the first launch of the script or professional. At each subsequent launch of the pro (remember that script will be help://runtime_start/ just once and does not depend on incoming ticks), the first copy will be updated. One or more new ticks can income while the script or expert is operating, and information can become out of date.
    Sample:
    int ticket;
    while(true) ticket=OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,exp ert remark,255,0,CLR_NONE);
    if(ticketlt;=0) int error=GetLastError(); //-- not enough cash if(error==134) break; //-- 10 minutes wait Sleep(10000); //-- refresh price data RefreshRates();
    break;
    else
    OrderSelect(ticket,SELECT_BY_TICKET);
    OrderPrint();
    break;

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.