单均线交易系统程式码部分2【.cpp文件】之bar进bar出范例
- UID
- 2
- 积分
- 2874604
- 威望
- 1387331 布
- 龙e币
- 1487273 刀
- 在线时间
- 13155 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
单均线交易系统程式码部分2【.cpp文件】之bar进bar出范例
说明:
改进场景:最近我的电脑要频繁的开关重启,比方说我现在测试阶段,早晨8.00左右开电脑,晚上 11点夜盘结束后关电脑,而原来的策略关系统后,再开时就默认持仓是0了,需要重新开始初始化交易策略。我现在要做的就是在交易参数里面设置一个变量(cscc,初始持仓,也就是我昨天有没平的持仓,当是0时意思就是没有持仓,3时就是持有3手多单,-3时就是持有3手空单。我把这个参数写进去,在交易面板上面配置里面写上,点运行时就默认按这个持仓跑。就能接上昨天的交易继续跑了。)
初始持仓,0没有持仓,N持有多仓N手,-N持有空仓N手。 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|
- UID
- 2
- 积分
- 2874604
- 威望
- 1387331 布
- 龙e币
- 1487273 刀
- 在线时间
- 13155 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
程式码部分
文件名称:test.cpp
本帖隐藏的内容需要回复才可以浏览 |
|
|
|
|
|
|
- UID
- 2
- 积分
- 2874604
- 威望
- 1387331 布
- 龙e币
- 1487273 刀
- 在线时间
- 13155 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
改动部分:- //交易系统参数设置开始*******************************************************************************************************
- //Name 参数名, Value 默认值, Explain 参数说明, tend 表示一个参数结束
- t.Name = "均线周期"; t.Value = "20"; t.Explain = "均线周期参数,默认20"; tend(t);
- t.Name = "单笔风险"; t.Value = "1"; t.Explain = "交易手数,默认1手"; tend(t);
- t.Name = "滑点值"; t.Value = "1"; t.Explain = "每次交易滑点值"; tend(t);
- t.Name = "优先平仓"; t.Value = "0"; t.Explain = "优先平仓,1优先平今,0优先平昨"; tend(t);
- t.Name = "撤单时间"; t.Value = "5"; t.Explain = "委托后多少秒检查一下是否有未成交,小于0 不撤单"; tend(t);
- t.Name = "初始持仓"; t.Value = "0"; t.Explain = "初始持仓,0没有持仓,N持有多仓N手,-N持有空仓N手"; tend(t);
- t.Name = "策略说明"; t.Value = "0"; t.Explain = "价格超越均线入场开多,跌破均线入场做空,收盘价反向穿越均线出场,"; tend(t);
- //交易系统参数设置结束*******************************************************************************************************
- end();
复制代码 增加了这个:- t.Name = "初始持仓"; t.Value = "0"; t.Explain = "初始持仓,0没有持仓,N持有多仓N手,-N持有空仓N手"; tend(t);
复制代码- //交易系统参数变量传递开始*******************************************************************************************************
- jxzq = atoi(parm["均线周期"].Value.c_str());
- dbfx = atof(parm["单笔风险"].Value.c_str());
- hd = atoi(parm["滑点值"].Value.c_str());
- yxpc = atoi(parm["优先平仓"].Value.c_str());
- jg = atoi(parm["撤单时间"].Value.c_str());
- cscc = atoi(parm["初始持仓"].Value.c_str());
- //交易系统参数变量传递结束*******************************************************************************************************
复制代码 增加了:- cscc = atoi(parm["初始持仓"].Value.c_str());
复制代码 同时为了平仓时平对手数和方向,我将持仓和方向调用也做了调整:- fx = atoi(wj[0].c_str());
- ss = atoi(wj[1].c_str());
复制代码 将原来的直接调用,改为做了一个判断:- if (cscc != 0)
- {
- if (cscc > 0)
- {
- fx = 1;
- ss = cscc;
- cscc = 0;
- }
- else if(cscc<0)
- {
- fx = -1;
- ss = -cscc;
- cscc = 0;
- }
- }
- else
- {
- fx = atoi(wj[0].c_str());
- ss = atoi(wj[1].c_str());
- }
复制代码 即首先判断cscc这个变量是不是0,默认是0的,要是不是0那么就再判断是不是大于0,要是大于0那么持仓方向fx = 1 单,交易数量ss=cscc,然后让cscc = 0,这样它就在点运行后只运行一次。不影响后面的程序化运行。要是监控到cscc=0就按默认的运行即可。 |
|
|
|
|
|
|
- UID
- 2
- 积分
- 2874604
- 威望
- 1387331 布
- 龙e币
- 1487273 刀
- 在线时间
- 13155 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
当然也需要在头文件里面加上变量cscc。- private:
- int numod = 0;
- HWND hwnd;
- string sName;
- string sPeriod;
- string sInst;
- string t1, t2, t3, t4, t0;
- int jxzq, jyfx, num, hd, yxpc, jg, fx, ss, tm,cscc;
- double jx, zg, zd, ma, rcjg, dbfx, ccjg;
复制代码 加到这里面即可
参考:http://www.qhlt.cn/thread-159319-1-1.html; |
|
|
|
|
|
|