如何使用GlobalDictionary共享变量?
TradeStation提供了名为GlobalDictionary的全局字典,供平台内的指标、策略、Trading APP之间共享键值对的集合。
创建 GlobalDictionary 实例,在相同的窗口类型内共享值: myGlobal = GlobalDictionary.create();
创建 GlobalDictionary 的实例,在相同的窗口类型以外共享值: myGlobal = GlobalDictionary.create(true, "share_name");
使用 Add(sKey, oValue) 方法将元素添加到全球字典,其中 sKey 是一个包含键名的字符串,oValue 是要存储的值。
使用 Remove(sKey) 方法从全球字典删除元素(键和值)。Contains(sKey) 方法用于确定元素键是否存在于字典中。
示例1:使用GlobalDictionary共享键值对
新建两个APP,代码分别为APP1和APP2,先后打开APP1和APP2,即可在EL打印输出栏查看内容。(注意:验证之前为APP绑定AnalysisTechnique_Initialized事件)
APP1
using guosen;
using elsystem.collections;
vars:GlobalDictionary myGlobal(null);
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args )
begin
myGlobal = new GlobalDictionary(true,"GDname");
if(myGlobal.Contains("keyTest"))then
Begin
myGlobal["keyTest"] = "ValueChanged";
print("Infor from GD1: Exsiting keyTest value has been changed to ValueChanged");
End
Else
Begin
myGlobal.Add("keyTest","valueTest");
print("Infor from GD1: keyTest added with key:keyTest and value:valueTest.");
End;
end;
APP2
using guosen;
using elsystem.collections;
vars:GlobalDictionary myGlobal(null);
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args )
begin
myGlobal = new GlobalDictionary(true,"GDname");
if(myGlobal.Contains("keyTest"))then
Begin
print("Infor from GD2: key keyTest in GD is : "+ myGlobal["keyTest"].ToString());
End
Else
Begin
print("Infor from GD2: Key keyTest not found in GD.");
End;
end;