本帖最后由 技术003 于 2021-5-21 15:08 编辑
//转自旧论坛版主_gxx978
针对限制日内交易次数的需求,可以通过全局变量进行控制。在金字塔中,提供多种全局变量,其作用范围和初始化方式有些许差别,建议初学者掌握后灵活使用。下面就分在图表程序化中和后台程序化中,分别采用不同的全局变量对日内交易次数的限定进行范例演示:
多种全局变量的区别介绍:http://www.weistock.com/WeisoftHelp/index.html?zbgs003.htm
一、日内限制交易次数范例(图表程序化)[PEL] 复制代码 VARIABLE:NUM=0; // 全局变量,来控制当天交易次数
CS:=3; //限定一天最多交易3次
MA5:=MA(CLOSE, 5);
MA20:=MA(CLOSE, 20);
COND1:=CROSS(MA5,MA20);
COND2:=CROSS(MA20,MA5);
IF COND2 AND HOLDING>0 THEN SELL(1,1,MARKET); //平仓
IF COND1 AND HOLDING=0 AND NUM<CS THEN //开仓
BEGIN
BUY(1,1,MARKET);
NUM:=NUM+1;.
END
IF TIME=CLOSETIME(0) THEN NUM:=0; // CLOSETIME(0)是取商品期货最后一节的交易时间,收盘的同时,NUM赋值为0。
二:限制日内交易次数(后台程序化版本)
[PEL] 复制代码 //点击工具--数据管理--全局变量,创建一个全局变量NUM,初始值设为3,表示交易次数限定为3次。
//该策略适用于后台程序化交易
//该策略适用于分钟周期
//使用单值全局变量,来限定一天只交易3次
CS:=3;//限定一天最多交易3次
MA5:MA(CLOSE, 5);
MA20:MA(CLOSE, 20);
COND1:=CROSS(MA5,MA20);
COND2:=CROSS(MA20,MA5);
IF COND2 AND THOLDING>0 THEN TSELL(1,1,LMT,CLOSE); //平仓
NUM:=EXTGBDATA('NUM'); //获取单值全局变量,来控制当天交易次数
IF COND1 AND THOLDING=0 AND NUM< CS THEN //开仓
BEGIN
TBUY(1,1,LMT,CLOSE);
EXTGBDATASET('NUM',NUM+1);
END
IF TIME=CLOSETIME(0) THEN EXTGBDATASET('NUM',0); // CLOSETIME(0)是取商品期货最后一节的交易时间,收盘时,NUM赋值为0。
|