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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 关于平仓

   

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


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

主题:关于平仓

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


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

sellshort(cross(c,ma(c,5)),1,market);
sellshort(cross(c,ma(c,10)),holding,market);

如果2个平仓是或的关系的话,就上面这样操作就行了。谁触发就执行谁。


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/4/20 11:12:35    Post IP:58.246.57.26[显示全部帖子]

 你如果要这样的逻辑的话,就只能用全局变量操作了。

VARIABLE:mark:=0;

if cross(c,ma(c,5)) and mark=0 and holding<0 then
begin
sellshort(1,1,market);   
mark:=1;//五日线平仓时候纪录下
end

if cross(c,ma(c,10)) and mark=1 and holding<0 then
begin
sellshort(1,holding,market);
mark:=0;//十日线平仓时候重置下全局变量
end

你参考这个逻辑 应用到你代码里就行了。



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


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

 VARIABLE:mark1:=0,mark2:=0;

平多条件:=cross(ma1,c);//平多条件
平空条件:=cross(c,ma1);//平空条件

PK:=C>三多头20;
PD:=C<三多头20;

平多条件1:=COUNT(PK,2)=2;
平空条件1:=COUNT(PK,2)=2;


//交易系统
BUY(开多条件 AND HOLDING=0,2,MARKET);
BUYSHORT(开空条件 AND HOLDING=0,2,MARKET);

if 平多条件 AND HOLDING>0 and mark1=0 then
begin
SELL(1,1,MARKET);
mark1:=1;    
end

if 平空条件 AND HOLDING>0 and mark2=0 then
begin
SELLSHORT(1,1,MARKET);    
mark2:=1;
end


if 平空条件1 and mark2=1 and holding<0 then
begin
sellshort(1,holding,market);
mark2:=0;
//十日线平仓时候重置下全局变量
end

IF 平多条件1 and mark1=1 and HOLDING>0 THEN
BEGIN//若持有多单
SELL(1,HOLDING,MARKET);//平多单
mark1:=0;
END


多空要用2个全局变量分开来做的。




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


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

 我本地正常。你再自查下看下。


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


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

 把你用的代码完整贴一下。


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/4/20 17:11:28    Post IP:58.246.57.26[显示全部帖子]

 不是。你给下完整代码。你前面贴的是都是少了一些变量定义的。你不给完整的 我这边没办法本地调试啊。


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


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

 本地正常。

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

只是在范例代码里加个开仓,加上几个位置的做标识用的笑脸哭脸。

反正我范例是OK的,你不贴完整代码我是没办法进一步处理了。


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


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

 INPUT:N1(5,1,100,1),N2(10,1,100,1),N3(20,1,100,1),N4(30,1,100,1);   //定义参数N1,N2,N3,N4
VARIABLE:mark1:=0,mark2:=0;

MA5:MA(C,N1);
MA10:MA(C,N2);
MA20:MA(C,N3);
MA30:MA(C,N4);

开多条件:C>MA5 AND MA5>MA10 AND MA10>MA20 AND MA20>MA30;   //均线多头排列
开空条件:C<MA5 AND MA5<MA10 AND MA10<MA20 AND MA20<MA30;   //均线空头排列

BUY(开多条件 AND HOLDING=0,2,MARKET);
BUYSHORT(开空条件 AND HOLDING=0,2,MARKET);

if cross(c,ma5) and mark2=0 and holding<0 then //空头上穿
begin
平空1:sellshort(1,1,market);   
mark2:=1;
end


if cross(c,ma20) and mark2=1 and holding<0 then
begin
平空2:sellshort(1,holding,market);
mark2:=0;
end
 
 if cross(ma5,c) and mark1=0 and holding>0 then //多头下穿
begin
平多1:sell(1,1,market);   
mark1:=1;
end


if cross(ma20,c) and mark1=1 and holding>0 then
begin
平多2:sell(1,holding,market);
mark1:=0;
end
 
 
 持仓:holding;


效果,检查过是OK的:

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看


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


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

 你这个改下首次平仓手数 以及开仓手数不就行了。
if cross(c,ma5) and mark2=0 and holding<0 then //空头上穿
begin
平空1:sellshort(1,2,market);   
mark2:=1;
end

多头也是一样。


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