Monday, November 23, 2020

TB策略易使用设置

 策略易  通过界面输入参数,不需要编写复杂繁琐的公式代码就可以轻松实现自动化交易。您可以通过点击[状态栏]的[策略易]按钮打开策略易对话框。
策略易的窗口包含以下五部分内容:

通用设置
交易帐户:帐户下拉选择框,选择当前的交易帐户;

商品选择:要进行交易的商品,先选择交易所,再选择商品代码,也可以通过点击键盘按钮进行快速设置,还可以直接从行情报价拖拉商品到本窗体上进行商品切换;

模板管理:点击该按钮显示模板管理的菜单,可以进行模板管理,模板选择等操作;

多空设置:点击多空字样按钮,进行多空选择;

单笔数量:每次行情触发时对该商品交易的数量;

最大仓位:最大的持仓数量;

委托间隔:设定分步开平仓的时间间距;

下单偏移:买入使用叫卖价,卖出使用叫买价,在这个基础上,为了保证成交,可增加一定的偏移值。

开仓设置
价格触发:类似于触发单,设定触发价格,但价格达到条件即进行交易;

区间限定:价格触发时为了降低成本,设定一个范围,只有当触发价格在这个范围内才进行交易;

盘口量限定:条件满足时,判断对应的买卖盘数量是否足够,只有当盘口数量大于等于设定值才进行交易;

开仓公式条件:一到三个开仓公式条件满足时,进行交易,关于公式条件的详细说明参见:公式条件。

风险控制
平仓基准价格:选择以什么价格作为平仓计算的基准价,可选择第一笔开仓价,或者所有开仓单的委托均价;

止损:设定止损跳数,当亏损大于等于设定值,即进行止损平仓;

止赢:设定止赢跳数,当盈利大于等于设定值,即进行止赢平仓;

跟踪止损:当盈利大于设定跳数时,启动跟踪止损,跟踪止损可以按照百分比或固定跳数进行设置。当盈利缩小到设定值,即进行平仓操作。

平仓设置
价格触发:类似于触发单,设定触发价格,但价格达到条件即进行交易;

定时平仓:当时间达到设定值,进行平仓操作;

盘口量限定:条件满足时,判断对应的买卖盘数量是否足够,只有当盘口数量大于等于设定值才进行交易;

平仓公式条件:一到三个平仓公式条件满足时,进行交易,关于公式条件的详细说明参见:公式条件。

状态监控
当前头寸:当前的持仓头寸;

盈利峰值价:开仓后盈利最大位置的价格,用于计算跟踪止损;

开仓均价:所有开仓单的委托均价;

第一笔开仓价:第一笔开仓单的委托价;

统计信息:累计的平仓次数,关闭窗体后清零;

更新:如果需要手工更改当前头寸,盈利峰值价,开仓均价或第一笔开仓价,修改后须点击更新按钮使设置生效;

重置开仓标志:在产生任何平仓动作之后,该按钮将会变为有效,如果不清除该标志,将不会再进行任何开仓动作;

启动、暂停:点击该按钮,即可启动策略易的监控,您可在中途暂停并进行参数修改。

公式条件
策略易的开仓和平仓各有三个条件,三个条件之间的关系可以设置为[条件相与]或者[条件相或],表示并且与或者的逻辑关系。

每一个条件由以下三部分组成:

左表达式:该表达式为一个字符串,我们称之为:条件关键字,通过该条件关键字和商品代码,可以唯一确定一个值;

逻辑关系:左右表达式进行条件判断的逻辑关系,有六种类型;>,>=,<,<=,==,<>;

右表达式:右表达式可以和左表达式一样,设置为一个条件关键字,还可以设置为一个数值,通过点击选择"V"和"K"图样的图标进行状态切换,当图标为"K"图样,表示右表达式为条件关键字,此时应该在编辑框输入一个字符串,当图标为"V"图样,表示右表达式为数值,此时需要在编辑框输入一个数字。

如上图的第一个公式开仓条件,表达的意思是当[M1_MA1]条件关键字的值大于[M1_MA2]条件关键字的值时,进行买入操作。即当1分钟周期的MA1均线大于MA2均线时,进行买入操作。

为了更直观的进行条件关键字的设置和公式编写,我们约定条件关键字的格式如下:周期_关键字,周期的值分别为T1,T10,M1,M5,M15,M30,M60,M240,D1,W1,MON1。表示从Tick到月线的各种周期。关键字为公式中取值的名字,您也可以根据自己的需求建立对应的编码规则。

为了配合策略易开仓条件功能的执行,我们需要配套的公式进行执行,对于上面的例子,我们需要将均线指标进行一些简单的修改,我们打开系统内置的MA指标,复制出其中的代码,新建一个新的指标为MAEx,粘贴MA的代码,增加一些新的代码,完整的代码如下:

Params
Numeric Length1(5);
Numeric Length2(10);
Numeric Length3(20);
Numeric Length4(30);
Vars
Numeric MA1;
Numeric MA2;
Numeric MA3;
Numeric MA4;
String strKey1;
String strKey2;
String strKey3;
String strKey4;
Begin
MA1 = AverageFC(Close,Length1);
MA2 = AverageFC(Close,Length2);
MA3 = AverageFC(Close,Length3);
MA4 = AverageFC(Close,Length4);
PlotNumeric("MA1",MA1);
PlotNumeric("MA2",MA2);
PlotNumeric("MA3",MA3);
PlotNumeric("MA4",MA4);

// 下面代码将均线值写入数据库,供策略易使用
strKey1 = BarTypeStr()+"_MA1";
strKey2 = BarTypeStr()+"_MA2";
strKey3 = BarTypeStr()+"_MA3";
strKey4 = BarTypeStr()+"_MA4";

SetTBProfileString(Symbol,strKey1,Text(MA1));
SetTBProfileString(Symbol,strKey2,Text(MA2));
SetTBProfileString(Symbol,strKey3,Text(MA3));
SetTBProfileString(Symbol,strKey4,Text(MA4));
End

上面公式用到了一个用户函数BarTypeStr,该函数按照前面我们叙述的规则自动获取当前的周期的字符串表达式。您可以自行建立该用户函数,返回值为字符串类型,详细代码如下:

Vars
String strKey;
String str1;
String str2;
Begin
if(BarType == 0)
{
str1 = "D";
}else if(BarType==1)
{
str1 = "M";
}Else if(BarType==2)
{
str1 = "T";
}else if(BarType==3)
{
str1 = "V";
}else if(BarType==4)
{
str1 = "W";
}else if(BarType==5)
{
str1 = "MON";
}
str2 = Text(BarInterval);
strKey=str1+str2;
Return strKey;
End

将上面的两个公式都编译成功之后,打开超级图表,选择对应的商品,设置为1分钟周期,插入MAEx指标,即可通过公式驱动策略易进行自动交易。

如果需要进行多个周期的公式计算并驱动策略易交易,您需要同时打开不同周期的超级图表,插入公式应用。

No comments: