Why Identical Charts Are Showing Different Strategy Trading Results: Difference between revisions
From MultiCharts
Why Identical Charts Are Showing Different Strategy Trading Results (view source)
Revision as of 17:43, 11 June 2014
, 11 June 2014→Different Starting Points of Strategy Calculation
Line 5: | Line 5: | ||
== Different Starting Points of Strategy Calculation == | == Different Starting Points of Strategy Calculation == | ||
When a chart is created and a strategy is applied to the chart, it is backtested immediately displaying entries and exits. It is important to understand that the starting point | When a chart is created and a strategy is applied to the chart, it is backtested, immediately displaying entries and exits. It is important to understand that the calculation's starting point in this case is not the first bar due to [[Strategy Properties#Setting Maximum Bars Back|MaxBarsBack value]] (aka the Maximum number of bars a study will reference) '''the first bar when an order can be generated (to be placed on next bar) is bar # X''', where '''X = MaxBarsBack value + 1'''. | ||
<div style="background-color: #E3FBE5;">'''Example''': Let's say a signal contains only 1 line: '''buy next bar market''' and the MaxBarsBack is set to '''50'''. It means script will be be calculated only at close bar # '''51''' to place the '''buy market''' at open of bar # '''52'''. Depending on the [[Auto Trading#Mode Selection|selected mode of auto trading]], the starting point for a strategy to calculate may differ.</div> | <div style="background-color: #E3FBE5;">'''Example''': Let's say a signal contains only 1 line: '''buy next bar market''' and the MaxBarsBack is set to '''50'''. It means script will be be calculated only at close bar # '''51''' to place the '''buy market''' at open of bar # '''52'''. Depending on the [[Auto Trading#Mode Selection|selected mode of auto trading]], the starting point for a strategy to calculate may differ.</div> | ||
=== Synchronous Mode === | === Synchronous Mode === | ||
In SA mode | In SA mode when you click the button to toggle automaton on, the starting point of an order generation on chart A is shifted from the beginning of the chart to the bar before the current bar and the strategy is recalculated. Meanwhile, if you create an identical chart B nearby to see the strategy calculating in real-time (forward-testing) and you expect to see at least the first order triggered at the same time on the same bar as on chart A, you should perform a calculation to find out the correct data range setting for chart B so that both charts' strategies have the same order generation starting points. If the starting points are different, then the results are also different. | ||
<div style="background-color: #E3FBE5;">'''Example''': Let's say a signal applied to chart A contains only 1 line: '''buy next bar at close-15 limit;''' and the MaxBarsBack is set to '''50'''. It means script will be be calculated only at close bar # '''51''' to place the guaranteed to be executed '''buy limit''' at open of bar, that is bar # '''52''', when the chart is created and the script is applied. Assume that this is a '''1 minute''' chart, the current bar # is '''122''' and its time (closing time of the bar) is '''11:02'''. | <div style="background-color: #E3FBE5;">'''Example''': Let's say a signal applied to chart A contains only 1 line: '''buy next bar at close-15 limit;''' and the MaxBarsBack is set to '''50'''. It means the script will be be calculated only at close bar # '''51''' to place the guaranteed-to-be-executed '''buy limit''' at the open of the bar, that is, bar # '''52''', when the chart is created and the script is applied. Assume that this is a '''1 minute''' chart, the current bar # is '''122''' and its time (closing time of the bar) is '''11:02'''. The current bar is not closed yet, so the script cannot be calculated on the current bar. You enable automated execution by clicking on the SA button. The order executed historically on bar # 52 is wiped from from the chart and the script is recalculated. To emulate the same situation on another chart B you will need to create identical chart right after you enable automated exectuion on chart A, but the bar # '''1''' of the char B should be the bar with time = '''10:10''' ('''11:02 (bar # 122) - 1 ''(the bar that is previous to the current bar, where the script was calculated for the first time to generate the order on chart A)'' - 50 (MaxBarsBack) - 1 (current bar)'''. In other words, the bar # '''121''' on chart A and the bar '''51''' on chart B should be the same bar ('''10:10''').</div> | ||
<div style="background-color: #E3FBE5;">'''Note 1''': The opening tick of the current bar is already passed, so the order execution prices will differ on the charts.</div> | <div style="background-color: #E3FBE5;">'''Note 1''': The opening tick of the current bar is already passed, so the order execution prices will differ on the charts.</div> | ||
<div style="background-color: #E3FBE5;">'''Note 2''': Example is valid for price orders only. It will work differently for market orders.</div> | <div style="background-color: #E3FBE5;">'''Note 2''': Example is valid for price orders only. It will work differently for market orders.</div> |