Announcement

Collapse
No announcement yet.

Data delayed with Automation Enabled

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

  • AndresPR
    started a topic Data delayed with Automation Enabled

    Data delayed with Automation Enabled

    Hello all,

    Has anyone experienced delayed data once an EFS automation strategy has been enabled? For example, the chart will be 30 minutes behind the current time (i.e. the chart shows 12:00, while the current time is 12:30).

    Thanks

  • AdamS01
    replied
    Hi AndresPR

    Oh I see;
    Your charts are delayed as you have too much data processing in your EFS.
    Some EFS-AT calls take a lot of time to complete;
    As Omerpoteus suggested, I would move most of code to call back functions;

    I misunderstood you initially; I was thinking that you are using delayed data feed (the free one with no exchange fees)
    I was trying to run a lot of testing on delayed feed, but in this scenario EFS-AT is totally confused.
    You making a decision to enter the trade on 20 mins delayed data, but EFS-AT actually enters the trade on non delayed data.
    in this scenario charts are drown incorrectly as all executions are assumed to happening the future

    Leave a comment:


  • AndresPR
    replied
    Thanks for all of your inputs. I have rethunk what instructions I am putting into the script and in what order. Basically, I am only calling information WHEN I need it (i.e. Trade.getorders(), getDate(), etc).

    //ENTRY LONG
    if( high(0,inv(1)) > high(-1,inv(1)) &&
    low(0,inv(1)) > low(-1,inv(1)) &&
    currentOrderTime > (prevCurrentOrderTime - 10000))
    {nState = getBarState(); nBarIndex = getCurrentBarIndex();var orderIsBuy = false; var openOrders = Trade.getOrders({states:Order.STATE_WORKING | Order.STATE_PLACING | Order.STATE_WORKING | Order.STATE_UPDATING});
    if(openOrders != null) {
    for(var i=0, len=openOrders.length; i<len; i++){
    if(Order.isBuy(openOrders[i]) == true){orderIsBuy = true}else{orderIsBuy = false};};};
    if( nState == BARSTATE_NEWBAR &&
    nBarIndex == 0 &&
    orderIsBuy == false) {Trade.buyLimit(low() * .90);
    Trade.cancelAllShorts(sSymbol);
    today = new Date(); //debugPrintln("EL TODAY: " + today);
    now = today.getTime(); //debugPrintln("EL NOW: " + now);
    prevCurrentOrderTime = currentOrderTime;
    currentOrderTime = now; debugPrintln("EL Cur OT: " + currentOrderTime + " EL Prev OT: " + prevCurrentOrderTime);
    myFuncCalls = myFuncCalls + 1;
    debugPrintln("EL CALLS: " + myFuncCalls);}
    }

    And vice versa for the Short Order. Obviously, this is not a script to make money, but to learn. I will be cleaning up unnecessary lines for future scripts.

    Leave a comment:


  • omerproteus
    replied
    Andres, your last message sounds correct and consistent with my observations.

    The chart will call main() more frequently than you may realize. In order to prevent the chart updates from slowing down, I added a counter (global in scope) which tallies the number of time main() is called and then, every N times, allows order-related and other computational code to execute. Of course, deciding on the value of N is case-by-case. In my scripts, I change the value of N depending on real-time circumstances, but that might not be the right approach for you.

    You could also check out the callback function, such as OnExecutionUpdate, to see if you can move some code out of main() if that code only needs to execute when an order is filled or changed. There are other callback functions available too.

    Leave a comment:


  • AndresPR
    replied
    Originally posted by AdamS01 View Post
    Yes

    Unfortunately efs-at with delayed data is not usable
    The last traded price is actually not delayed
    In my case that was a total showstopper
    As you have a mismatch
    Thanks for all of your input Adam,

    I have literally been on a crash course to learn Javascript informally...I have only written code in third party languages. I do not understand what you mean by "mismatch". Can you clarify? Also, I may have not been clear with my explanation of the issue. I have 2 charts with the same ticker and time frame. One is without efs automation and the other has efs automation. Once the strategy is live, it quickly slows processing the new bars as time moves forward. While the efs free chart keeps up with the current time and sales/bars. I am guessing that there is too much demanding/unnecessary code that is draining the resources down to a crawl.

    Update to this issue: As I let the efs-Test Automation run, there was a massive updating of the chart and blasting of orders out as the chart and efs caught up with the data. Basically, the efs chart was behind an hour and in about 20 seconds updated the chart in a flash meanwhile submitting the orders for the code to execute.

    Leave a comment:


  • AdamS01
    replied
    Originally posted by AndresPR View Post
    Hello all,

    Has anyone experienced delayed data once an EFS automation strategy has been enabled? For example, the chart will be 30 minutes behind the current time (i.e. the chart shows 12:00, while the current time is 12:30).

    Thanks
    Yes

    Unfortunately efs-at with delayed data is not usable
    The last traded price is actually not delayed
    In my case that was a total showstopper
    As you have a mismatch

    Leave a comment:


  • AndresPR
    replied
    By the way, don't even call eSignal helpdesk. They will not help with any EFS issue.

    Leave a comment:

Working...
X