欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 均线指标问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5898人关注过本帖树形打印复制链接

主题:均线指标问题

帅哥哟,离线,有人找我吗?
FireScript
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/6/29 13:42:16    Post IP:180.169.30.6[显示全部帖子]

 可否更具体的描述下你的需求和问题。暂时还不明确你的需求是怎样的。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/6/29 14:13:23    Post IP:180.169.30.6[显示全部帖子]

我知道你什么意思了。你是限制了图表上K线数量了吧?导致新K出现之后,历史K发生了变化。从而导致信号变化。比如原本刚刚开多了,但是因为信号变化了,导致图表上又出现开空信号且此时虚拟持仓是0。这种会导致不会平多,直接去开空了。

如果真是这种情况,我建议你不要限制K线数量,而是限制K线起始位置,因为这种限制K线数量情况导致信号闪烁变化,在代码里面都不好处理的。




命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/6/29 14:23:24    Post IP:180.169.30.6[显示全部帖子]

 
平空:SELLSHORT(开多平空条件,0,MARKET);// MARKET 
开多:BUY(开多平空条件,lots,MARKET);
平多:SELL(开空平多条件,0,MARKET);
开空:BUYSHORT(开空平多条件,lots,MARKET);


平空和开多条件是一样的
平多和开空条件是一样的

因此
开多触发的时候,会平空
开空触发的时候,会平多


逻辑和你6楼说的是完全一样的。

问题不在于代码。之所以没清仓位是因为历史信号变了,导致虚拟持仓变成0.这时候就没办法在开多前发出平空信号了。




命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/6/29 14:31:57    Post IP:180.169.30.6[显示全部帖子]

 MA1:Ma(CLOSE,A);
MA2:Ma(CLOSE,B);


//交易条件

开多平空条件:=CROSS(MA1,MA2);//开多平空条件
开空平多条件:=CROSS(MA2,MA1);//开空平多条件

//交易系统

if 开多平空条件 then
begin
平空:SELLSHORT(holding<0 ,0,MARKET);// MARKET
开多:BUY(holding=0,lots,MARKET);
end

if 开空平多条件 then
begin
平多:SELL(holding>0,0,MARKET);
开空:BUYSHORT(holding=0,lots,MARKET);
end






命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/7/2 10:03:00    Post IP:180.169.30.6[显示全部帖子]

 //以多头为例
DTYDZS:=(HHV(H,ENTERBARS+2)-CLOSE)>=20*MINDIFF;
KTYDZS:=CLOSE-ENTERPRICE<=10*MINDIFF;
止盈1:sell(holding>0 and DTYDZS,holding,market);
止损1:sell(KTYDZS and holding>0,holding,MARKET);

[此贴子已经被作者于2018/7/2 14:51:40编辑过]


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/7/2 14:22:10    Post IP:180.169.30.6[显示全部帖子]

 12楼的代码和你的需求无法关联。

这句不小心写错了,改下。

KTYDZS:=CLOSE<=ENTERPRICE-10*MINDIFF;


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/7/2 15:10:08    Post IP:180.169.30.6[显示全部帖子]

我是直接把下面代码复制到一个现成指标中去的,方便说明下止盈实现过程是怎样的,然后你对照看下到底哪里不符合你的需求。
DTYDZS:=(HHV(H,ENTERBARS+2)-CLOSE)>=8*MINDIFF;
KTYDZS:=CLOSE-ENTERPRICE<=10*MINDIFF;
止盈1:sell(holding>0 and DTYDZS,holding,market);

 

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看
这是开仓位置开高低收 

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看
这是止盈位置开高低收  

开仓到止盈的三个K的数值
3815-3816-3809-3809  开仓K
3809-3811-3807-3811
3811-3813-3807-3807

为了方便触发,我把止盈改成8个点。

代码中止盈计算:
开仓之后最高价:3816;
开仓价:3809;

止盈K的C和L都是是3807

3816-3807=9,是大于8个点的。因此信号就落在止盈那个K上面。





命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/7/2 15:18:24    Post IP:180.169.30.6[显示全部帖子]

 传图可以用IE浏览器。


命数如织,当如磐石。
 回到顶部