C++程序化/量化学习视频教程系列 第042节:鼎元C++量化之【交易策略目标止盈出场模块】【C++量化开发出场模块系列】
- UID
- 2
- 积分
- 2903567
- 威望
- 1401815 布
- 龙e币
- 1501752 刀
- 在线时间
- 13440 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2025-1-30
|
C++程序化/量化学习视频教程系列 第042节:鼎元C++量化之【交易策略目标止盈出场模块】【C++量化开发出场模块系列】
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|
- UID
- 2
- 积分
- 2903567
- 威望
- 1401815 布
- 龙e币
- 1501752 刀
- 在线时间
- 13440 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2025-1-30
|
第一部分:头文件声明变量- int entryprice, exitprice,exit_target;//记录进场价格与出场价格,方便计算盈亏金额
复制代码 第二部分:源文件参数窗口及变量调用- t.Name = "盈利目标"; t.Value = "0"; t.Explain = "盈利目标(点数),0默认不启用"; tend(t);
复制代码- target = atoi(parm["盈利目标"].Value.c_str());
复制代码 第三部分:源文件目标止盈出场模块:- if (target != 0)//启用目标止盈出场模块
- {
- if (fx == 1)//持有多单模块
- {
- exit_target = entryprice + target;
- if (t->LastPrice >= exit_target ) //最新价格跌破出场价则止损出场
- {
- fx == 0;
- map<string, double>::iterator it;
- for (it = mapSub.begin(); it != mapSub.end(); it++)
- {
- int sl = (int)(ss * it->second);
- if (yxpc == 0)
- {
- closesell1(it->first, sInst, sl, t->BidPrice1 - hd * mapInstrument[sInst].PriceTick);//卖出平仓语句
- }
- else if (yxpc == 1)
- {
- closesell2(it->first, sInst, sl, t->BidPrice1 - hd * mapInstrument[sInst].PriceTick);//卖出平仓语句
- }
- string s = it->first + " 多单达到目标止盈出场条件卖出平仓 " + to_string(sl) + " 手, 价格 " + to_string(t->BidPrice1 - hd * mapInstrument[sInst].PriceTick) + " 基础手数 " + to_string(ss);
- maps[num] = s;
- num++;
- }
- if (num != 0)shuchurizhi();
- tm = 0;
- xieruzhuangtai();
- }
- }
- if (fx == -1) //持有空单模块
- {
- exit_target = entryprice - target;
- if (t->LastPrice <= exit_target )
- {
- fx = 0;
- map<string, double>::iterator it;
- for (it = mapSub.begin(); it != mapSub.end(); it++)
- {
- int sl = (int)(ss * it->second);
- if (yxpc == 0)
- {
- closebuy1(it->first, sInst, sl, t->AskPrice1 + hd * mapInstrument[sInst].PriceTick);//买入平仓语句
- }
- else if (yxpc == 1)
- {
- closebuy2(it->first, sInst, sl, t->AskPrice1 + hd * mapInstrument[sInst].PriceTick);//买入平仓语句
- }
- string s = it->first + " 空单达到目标止盈出场条件买入平仓 " + to_string(sl) + " 手, 价格 " + to_string(t->BidPrice1 + hd * mapInstrument[sInst].PriceTick) + " 基础手数 " + to_string(ss);
- maps[num] = s;
- num++;
- }
- if (num != 0) shuchurizhi();
- tm = 0;
- xieruzhuangtai();
- }
- }
- }
复制代码 第四部分:在bar行情中加入输出日志功能- if (dbfx != 0)// 说明启用了单笔风险固定止损出场模块信息输出至log日志板
- {
- if (fx != 0)InsertLog(" 您启用了单笔最大亏损金额功能,最大亏损额度为: " + to_string(dbfx) + " 元, 持仓手数: " + to_string(lots) + " 手, 止损出场价格: " + to_string(exitprice) + " 持仓方向: " + to_string(fx));
- }
- if (target != 0)//说明启用了目标止盈出场模块,将必要信息输出至log日志板
- {
- if (fx != 0) InsertLog(" 您启用了目标止盈出场功能,最大盈利目标为: " + to_string(target) + " 点, 持仓手数: " + to_string(lots) + " 手, 出场价格:" + to_string(exit_target) + " 持仓方向: " + to_string(fx));
- }
复制代码 |
|
|
|
|
|
|
- UID
- 2
- 积分
- 2903567
- 威望
- 1401815 布
- 龙e币
- 1501752 刀
- 在线时间
- 13440 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2025-1-30
|
思路:
设置一个变量target,然后在entryprice 上面增加或减少这个target就是exit_target价格了。然后就可以了。 |
|
|
|
|
|
|