龙听期货论坛's Archiver

龙听 发表于 2021-1-29 15:34

multicharts关键词GetAppInfo

**** Hidden Message *****[/size]

龙听 发表于 2021-1-29 15:35

[code]GetAppInfo(aiBarSpacing)[/code]

—— 返回目前图表上的K棒宽度

龙听 发表于 2021-1-29 15:37

[code]GetAppInfo(aiCalcReason) [/code]
返回重新计算的原因 。

GetAppInfo返回初始化计算的原因:

            0   (CalcReason_default) - 默认当新的bar/tick出现时,计算会初始化

            1   (CalcReason_mouseLClick) - 鼠标在图表上左击后,计算会初始化

            2   (CalcReason_mouseRClick) - 鼠标在图表上右击后,计算会初始化

            3   (CalcReason_timer) - 在RecalcLastBarAfter期限超时后,计算会初始化

            4   (CalcReason_MPChange) - 在商品的图表部位即marketposition变动后,计算会初始化

            5   (CalcReason_OrderFilled) - 在委托单成交后,计算会初始化(仅用于信号)

龙听 发表于 2021-1-29 15:38

RecalcLastBarAfter
[table]
[tr][td]
超过指定时间,则初始化计算。指定时间为秒。 [/td][/tr]
[/table]

[table]
[tr][td][b]用法[/b]
RecalcLastBarAfter([i]Timeout[/i])
参数说明: [i]Timeout[/i] —— 秒数 (时间) [/td][/tr]
[/table]

[table]
[tr][td][b]范例[/b]
RecalcLastBarAfter(60) 自上次计算后如果超时1分钟的话,则启动新的脚本计算。 [/td][/tr]
[/table]

龙听 发表于 2021-1-29 15:41

实例:
[code]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);[/code]


Will return the time of the bar after left click on it pressing Ctrl button on the keyboard.左键单击键盘上的Ctrl按钮后,将返回该条的时间。

龙听 发表于 2021-1-29 15:43

实例:
Using GetAppInfo for Chart Window information
The example below uses the Print keyword to print information about the current Chart Window to the PowerLanguage Editor output log:


[code]// Example: Getting data about the chart window using GetAppInfo       
if LastBarOnChart_s = True then begin

        Print("The leftmost date on this chart is ", FormatDate("MM/dd/yyyy", GetAppInfo(aiLeftDispDateTime)),
                ", and the rightmost date on this chart is ", FormatDate("MM/dd/yyyy", GetAppInfo(aiRightDispDateTime)));
               
        Print(NewLine,
                "The leftmost bar closes at ", FormatTime("HH:mm:ss", GetAppInfo(aiLeftDispDateTime)),
                " and the rightmost bar closes at ", FormatTime("HH:mm:ss", GetAppInfo(aiRightDispDateTime)) );
               
        Print(NewLine,
                "The highest price on the Y axis (price scale) is ", NumToStr( GetAppInfo(aiHighestDispValue), 0),
                " and the lowest price on the same axis is ", NumToStr( GetAppInfo(aiLowestDispValue), 0));

end;[/code]


This would give an output similar to:


[code]The leftmost date on this chart is 01/20/2012, and the rightmost date on this chart is 01/20/2012

The leftmost bar closes at 12:31:16 and the rightmost bar closes at 21:56:15

The highest price on the Y axis (price scale) is 2438 and the lowest price on the same axis is 2411[/code]

龙听 发表于 2021-1-29 15:43

实例:
使用GetAppInfo监视ATS
在下面的简化示例中,GetAppInfo(aiStrategyAuto)用于监视自动交易策略的状态。如果ATS关闭,则会发出声音警报。


[code]//                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;[/code]

页: [1]