Why an Order Was or Was Not Executed: Difference between revisions
From MultiCharts
Why an Order Was or Was Not Executed (view source)
Revision as of 16:32, 12 September 2022
, 12 September 2022→Order and Position Tracker
(7 intermediate revisions by 4 users not shown) | |||
Line 3: | Line 3: | ||
==Order and Position Tracker== | ==Order and Position Tracker== | ||
If an order was generated and sent from the script to a broker plugin, it is displayed in the Order and Position Tracker on the Orders tab. If an order is filled, you can see | If an order was generated and sent from the script to a broker plugin, it is displayed in the [[Order_and_Position_Tracker|Order and Position Tracker]] on the Orders tab. If an order is filled, you can see its execution price and details (see [[Order_and_Position_Tracker#Orders_Tab|Orders Tab]]). | ||
<br> | <br> | ||
There are 2 possible reasons why an order is not placed at the broker: | There are 2 possible reasons why an order is not placed at the broker: | ||
# The order was '''rejected''' either by MultiCharts, or by the broker (in most cases, you can find the reason for rejection in the Logs tab of the Order and Position Tracker (see [[ | # The order was '''rejected''' either by MultiCharts, or by the broker (in most cases, you can find the reason for rejection in the Logs tab of the Order and Position Tracker (see [[Order_and_Position_Tracker#Logs_Tab|Logs Tab]]) | ||
# The order was '''cancelled''' from the script. According to the logic of EasyLanguage/PowerLanguage, an order will be maintained as long as the conditions for its generation are met on each calculation. Once a condition is not met, it will be cancelled. | # The order was '''cancelled''' from the script. According to the logic of EasyLanguage/PowerLanguage, an order will be maintained as long as the conditions for its generation are met on each calculation. Once a condition is not met, it will be cancelled. | ||
Line 12: | Line 12: | ||
==Monitoring from Script== | ==Monitoring from Script== | ||
This method is extremely useful not only for backtesting, since the Order and Position Tracker has nothing in common with the historical calculation process, but also for live auto trading because you can see the strategy logic printed out in real-time. | This method is extremely useful not only for backtesting, since the [[Order_and_Position_Tracker|Order and Position Tracker]] has nothing in common with the historical calculation process, but also for live auto trading because you can see the strategy logic printed out in real-time. | ||
Adding the following line under the same conditions right before the line, when generating your buy/sell orders, | Adding the following line under the same conditions right before the line, when generating your buy/sell orders, will help you to understand at what particular bar, when, and at what price your order is triggered in the code: | ||
<br> | <br> | ||
<br> | <br> | ||
'''Var: Scale(0);''' | |||
<br> | |||
'''Condition1 = close > close[1];''' | '''Condition1 = close > close[1];''' | ||
<br> | |||
<br> | '''If MinMove < 10 then'''<br> | ||
'''If MinMove < 10 then''' <br> | |||
'''Scale = 1;'''<br> | '''Scale = 1;'''<br> | ||
'''If MinMove > 99 and MinMove < 1000 then''' <br> | '''If MinMove > 99 and MinMove < 1000 then'''<br> | ||
'''Scale = 2;'''<br> | '''Scale = 2;'''<br> | ||
'''If MinMove > 999 and MinMove < 10000 then'''<br> | '''If MinMove > 999 and MinMove < 10000 then'''<br> | ||
Line 31: | Line 29: | ||
'''Scale = 4;'''<br> | '''Scale = 4;'''<br> | ||
'''If MinMove > 99999 and MinMove < 1000000 then'''<br> | '''If MinMove > 99999 and MinMove < 1000000 then'''<br> | ||
'''Scale = 5;''' | '''Scale = 5;'''<br> | ||
<br> | |||
'''If Condition1 = true then begin'''<br> | '''If Condition1 = true then begin'''<br> | ||
'''print( "======================", NewLine,'''<br> | |||
'''"The date is:", DateToString(DateToJulian(Date)), ",", NewLine,'''<br> | |||
'''"time is: ", TimeToString(ELTimeToDateTime(Time_s)), ",", NewLine,'''<br> | |||
'''"bar # is: ", maxbarsback+currentbar, ",", NewLine,'''<br> | |||
'''"current bar open is: ", open, ",", NewLine,'''<br> | |||
'''"current bar high is: ", high, ",", NewLine,'''<br> | |||
'''"current bar low is: ", low, ",", NewLine,'''<br> | |||
'''"current bar close is: ", close, ",", NewLine,'''<br> | |||
'''"market position on chart is: ", MarketPosition, ",", NewLine,'''<br> | |||
'''"market position at broker is: ", MarketPosition_at_Broker, ",", NewLine,'''<br> | |||
'''"Condition1 is true, so at close of this bar the limit order to buy at: ", NumToStr(close,scale), " is generated by the script", NewLine,'''<br> | |||
'''"to be executed at bar #: ", maxbarsback+currentbar+1, NewLine,'''<br> | |||
'''"Bar Status is: ", barstatus(1));'''<br> | |||
'''Buy next bar at close limit;'''<br> | |||
'''end else begin<br> | |||
'''end else begin'''<br> | |||
'''print( "======================", NewLine,'''<br> | |||
'''"The date is: ", DateToString(DateToJulian(Date)), ",", NewLine,'''<br> | |||
'''"time is: ", TimeToString(ELTimeToDateTime(Time)), ",", NewLine,'''<br> | |||
'''"bar # is: ", symbol_currentbar, ",", NewLine,'''<br> | |||
'''"current bar open is: ", open, ",", NewLine,'''<br> | |||
'''"current bar high is: ", high, ",", NewLine,'''<br> | |||
'''"current bar low is: ", low, ",", NewLine,'''<br> | |||
'''"current bar close is: ", close, ",", NewLine,'''<br> | |||
'''"market position on chart is: ", MarketPosition, ",", NewLine,'''<br> | |||
'''"market position at broker is: ", MarketPosition_at_Broker, ",", NewLine,'''<br> | |||
'''end;''' | '''"Condition1 is false, so no order is generated.", NewLine,'''<br> | ||
'''"Bar Status is: ", barstatus(1));'''<br> | |||
'''end;'''<br> | |||
<br> | <br> | ||
<div style="background-color: #E3FBE5;">'''Note''':If using more than one data series, specify the DataNum for [[BarStatus]].</div> | |||
<br> | <br> | ||
If the script is applied to your chart and it is opened in the PowerLanguage Editor, you will be able to see the following lines in the Output tab: | If the script is applied to your chart and it is opened in the PowerLanguage Editor, you will be able to see the following lines in the Output tab: | ||
<br> | <br> | ||
''======================<br> | ''======================<br> |