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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]加仓状态下能否实现分别平仓

   

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


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

主题:[求助]加仓状态下能否实现分别平仓

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


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

 能。写多个平仓语句即可。

sell(平仓条件1 and  holding>0,平仓量1,market);
sell(平仓条件2 and  holding>0,平仓量2,market);


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


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

你后面平仓的量都是变量s1控制的,这个是计算出来的变值还是一个定值呢?是不是s1的计算有问题。你这里代码没有s1的定义部分,我也不太好判断。


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


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

 你这个都是定值。信号2的平仓也都是按量平仓的。不可能出现超量的平仓。你看下具体是哪个信号平仓的。你这里每个信号不都是标识了么。 是不是最后全平触发的?


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


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

VARIABLE:mark1:=0,mark2:=0;//开仓和加仓用2个不同的全局变量来做控制。加仓是在首次开仓后有仓位基础上执行。

input:n(9,1,100,10),p1(3,2,40,4),p2(3,2,40,4);//参数设置
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
J:=3*K-2*D,NODRAW;


input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);
DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  :=EMA(DIFF,M);
MACD1 :=2*(DIFF-DEA), COLORSTICK;
macdjc:cross(diff,dea),NODRAW;//macd金叉
macdsc:cross(dea,diff),NODRAW;
kdjjc:cross(k,d),NODRAW;//kdj金叉
kdjsc:cross(d,k),NODRAW;
s1:=1;
s2:=2;
if macdjc and holding=0 then
begin
开1:buy(1,s1,market);
mark1:=1;     
end


if macdsc and holding>0 and mark1=1 then
begin
平1:sell(holding>0,s1,market);   
mark1:=0;//平仓时候重置全局变量
end

if kdjjc and holding>0 and mark2=0 then //加仓部分
begin
开2:buy(1,s2,market);
mark2:=1;     
end


if kdjsc and holding>0 and mark2=1 then
begin
平2:sell(holding>0,s2,market);    
mark2:=0; //平仓时候重置全局变量
end


if  holding>0 and cross(ma(c,50),ma(c,5)) then begin
全平:sell(1,0,market);
mark1:=0;//平仓时候重置全局变量
mark2:=0;//平仓时候重置全局变量
end
[此贴子已经被作者于2020/5/7 14:29:29编辑过]


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


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

 用2个全局变量分别做控制吧,开仓一个,加仓一个,另外加仓是设置在有仓位情况下才执行的。9楼代码重新修改了,你看下效果吧。


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