×

Sign up and get MultiCharts free

Use its powerful simulation mode with data included out of the box. Just fill out the form and start honing your trading skills with a few clicks.

Changes - MultiCharts
Open main menu

Changes

GetAppInfo

4,320 bytes added, 31 January
== Parameters ==
:'''aiBarSpacingaiApplicationType''' - returns a value indicating — identifies the bar spacing of a chart (i.e. the value found in the ''Format Window'' -calling application:<br> ''X-Time scale screen''). :*Unknown = 0:*Chart = 1:*Scanner = 2:*Portfolio Trader = 10
:'''aiHighestDispValueaiBarSpacing''' - returns a value indicating the highest price value that could be displayed on bar spacing of a chart(i.e. the value found in the ''Format Window'' -> ''X-Time scale screen'').
:'''aiLowestDispValueaiCalcReason''' - returns a numerical value, indicating the lowest price value that could be displayed on reason of calculation initialization (i.e. returns 0 when calculation was triggered by a chart.new bar/tick(CalcReason_Default)):
::'''aiLeftDispDateTime0 (CalcReason_Default)''' - returns — calculation is to be initialized when the DateTime value of the leftmost new bar displayed /tick appeared.:: '''1 (CalcReason_MouseLClick)''' — calculation is to be initialized after left-click on a the chart. The integer portion of :: '''2 (CalcReason_MouseRClick)''' — calculation is to be initialized after right-click on the DateTime value specifies the number chart. :: '''3 (CalcReason_Timer)''' — calculation is to be initialized after expiration of days since January 1st, 1900, and RecalcLastBarAfter timeout.:: '''4 (CalcReason_MPChange)''' — calculation is to be initialized after market position for the fractional portion of instrument has been changed (for signals only). :: '''5 (CalcReason_OrderFilled)''' — calculation is to be initialized after order filled event (for signals only).:: '''6 (CalcReason_OrderRejected)''' — calculation is to be initialized after order rejected event (for signals only). :: '''7 (CalcReason_UserClosePosition)''' — calculation is to be initialized after the DateTime value specifies user clicks the fraction of the day since midnightClose Position button in Portfolio Trader. See the category [[:Category:Date_and_Time_Routines|Date & Time Routines]] for '''aiHighestDispValue''' — returns the reserved words for working with DateTime valueshighest price value that could be displayed on a chart.
:'''aiRightDispDateTimeaiLowestDispValue''' - returns the DateTime lowest price value of the rightmost bar that could be displayed on a chart. The integer portion of the DateTime value specifies the number of days since January 1st, 1900, and the fractional portion of the DateTime value specifies the fraction of the day since midnight. See the category [[:Category:Date_and_Time_Routines|Date & Time Routines]] for the reserved words for working with DateTime values.
:'''aiSpaceToRightaiLeftDispDateTime''' - returns the right margin, in DateTime value of the leftmost bar displayed on a chart. The integer portion of the DateTime value specifies the number of barsdays since January 1st, 1900, and the fractional portion of a chartthe DateTime value specifies the fraction of the day since midnight. See the category [[:Category:Date_and_Time_Routines|Date & Time Routines]] for the reserved words for working with DateTime values.
:'''aiOptimizingaiRightDispDateTime''' - returns the DateTime value of the rightmost bar displayed on a chart. The integer portion of the DateTime value specifies the number of 1 if the calling application is currently performing an optimizationdays since January 1st, 1900, and a the fractional portion of the DateTime value specifies the fraction of 0 in all other casesthe day since midnight. See the category [[:Category:Date_and_Time_Routines|Date & Time Routines]] for the reserved words for working with DateTime values.
:'''aiStrategyAutoaiRow''' - returns Identifies the symbol's row number in Scanner. Returns a positive non-zero value of 1 if the calling from a Scanner application is using [[Understanding_Automated_Trade_Execution|Automated Trade Execution]], and a value of else returns 0 in all other cases.
:'''aiStrategyAutoConfaiSpaceToRight''' - returns a value the right margin, in number of 1 if the calling application is using [[Understanding_Automated_Trade_Execution|Automated Trade Execution]] '''with''' Order Confirmation turned offbars, and of a 1 in all other caseschart.
:'''aiIntrabarOrderaiOptimizing''' - returns a value of 1 if the calling application is running the signal with [[IntraBarOrderGeneration|intra-bar order generation]] turned oncurrently performing an optimization, and a value of 0 in all other cases.
:'''aiAppIdaiStrategyAuto''' - returns an unique non-zero integer identifying a value of 1 if the calling applicationis using [[Understanding_Automated_Trade_Execution|Automated Trade Execution]], and a value of 0 in all other cases.
:'''aiStrategyAutoConf''' — returns a value of 1 if the calling application is using [[Understanding_Automated_Trade_Execution|Automated Trade Execution]] '''with''' Order Confirmation turned off, and a 1 in all other cases. :'''aiIntrabarOrder''' — returns a value of 1 if the calling application is running the signal with [[IntraBarOrderGeneration|intra-bar order generation]] turned on, and a value of 0 in all other cases. :'''aiAppId''' — returns a unique non-zero integer identifying the calling application.  :'''aiRealTimeCalc''' - returns a value of 1 if the calling application is performing calculation based on real-time data or on PlayBack data. Will return a value of 0 in all other cases. :'''aiChartShiftPercent''' — returns the ChartShift value in percents from Format Window -> X - Time Scale. The value is updated on the fly. :<div style="background-color: #E5F6FF;">aiSimulatedTradingMode is available in MultiCharts 15 Open Beta.</div>:'''aiSimulatedTradingMode''' — returns a numerical value, indicating Simulated trading mode:::'''0''' – No Simulated Trading is running.::'''1''' – Standard Simulated Trading mode is enabled.::'''2''' – Advanced Simulated Trading mode is enabled. == Notes ==* GetAppInfo(aiRealTimeCalc) will also return a value of 1 when it's called during PlayBack mode '''or''' if the script uses [[RecalcLastBarAfter]].For example:<syntaxhighlight>if (LastBarOnChart_s = True) then begin  Print(FormatTime("HH:mm:ss - ", ELTimeToDateTime_s(CurrentTime_s)), "GetAppInfo(aiRealTimeCalc): ", GetAppInfo(aiRealTimeCalc));  RecalcLastBarAfter(2);end;</syntaxhighlight>Will return a value of 0 on the initialisation of the indicator (i.e. when it's started), but after that a value of 1 after each forced recalculation.<syntaxhighlight>07:17:54 - GetAppInfo(aiRealTimeCalc): 0.0007:17:56 - GetAppInfo(aiRealTimeCalc): 1.0007:17:58 - GetAppInfo(aiRealTimeCalc): 1.0007:18:00 - GetAppInfo(aiRealTimeCalc): 1.00</syntaxhighlight>
== Examples ==
Will return a value of 1 if the calling application’s calculations are based on real-time or PlayBack data; otherwise, will return a value of 0.
<syntaxhighlight>[ProcessMouseEvents = true]; switch (getappinfo(aicalcreason)) begin case CalcReason_MouseLClick : if MouseClickCtrlPressed then begin var: var0(0), var1(0); repeat if 0 = var0 then begin var0 = MouseClickDateTime; break; end; until(false); end; end; var1 = datetime2eltime(var0); print("Time of the Bar = ", var1);</syntaxhighlight>Will return the time of the bar after left click on it pressing '''Ctrl''' button on the keyboard. === Using GetAppInfo to get information about the for Chart Window information ===
The example below uses the [[Print]] keyword to print information about the current [[Chart_Window|Chart Window]] to the PowerLanguage Editor output log:
<syntaxhighlight>
The highest price on the Y axis (price scale) is 2438 and the lowest price on the same axis is 2411
</syntaxhighlight>
 
=== Using GetAppInfo to monitor an ATS ===
In the simplified example below, the GetAppInfo(aiStrategyAuto) is used to monitor the status of an [[:Category:AutoTrading|Automated Trading Strategy]]. If the ATS is turned off, a sound alert is given.
 
<syntaxhighlight>
// Example: using the GetAppInfo(aiStrategyAuto) to monitor for an Automated Trading
// Strategy that gets turned off.
 
Variables:
IntraBarPersist PrevATSStatus(0), // Holds the status of the ATS at the previous update
atsStatus(0); // Holds the current ATS status
 
if (LastBarOnChart_s = True) then begin
 
atsStatus = GetAppInfo(aiStrategyAuto);
// If the current ATS Status is different from the previous, and the previous
// status was ON, give an sound alert.
if (atsStatus <> PrevATSStatus) and (PrevATSStatus = 1) then begin
PlaySound("C:\Temp\atsTurnedOff.wav");
 
end;
 
PrevATSStatus = atsStatus;
 
RecalcLastBarAfter(15); // Update every 15 seconds, even if the data feed stops updating
end;
</syntaxhighlight>
 
[[Category:Environment Information]]