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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 如何编写?谢谢

   

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


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

主题:如何编写?谢谢

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


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

 用全局变量做这种控制次数的操作。然后给所有开仓额外加一个时间条件即可。


VARIABLE:ct1:=0,ct2:=0;//2个全局变量一个控制开仓次数,一个控制平仓次数。
if TODAYBAR=1 then //每日第一个K重置全局变量。
begin
ct1:=0;
ct2:=0;   
end

timecd:time<=180000;//时间限制的判断。大于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;
//开平条件1
kdjjc:cross(k,d),NODRAW;//kdj金叉
kdjsc:cross(d,k),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;
//开平条件2
macdjc:cross(diff,dea),NODRAW;//macd金叉
macdsc:cross(dea,diff),NODRAW;


if kdjjc and ct1<=1 and timecd and holding=0 then //开多
begin
buy(holding=0,1,market);
ct1:=ct1+1;   
end

if kdjsc and ct2<=1 and holding>0 then //平多
begin
sell(holding>0,holding,market);
ct2:=ct2+1;   
end


if macdsc and ct1<=1  and timecd and holding=0 then //开空
begin
buyshort(holding=0,1,market);
ct1:=ct1+1;   
end

if macdjc and ct2<=1  and holding<0 then //平空
begin
sellshort(holding<0,holding,market);
ct2:=ct2+1;
end




这部分代码为例。核心思路都实现在上面代码里了。


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


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

1. "ct1:=0;
ct2:=0;   
表示开平仓次数为0?"是这意思。

2.
“if kdjjc and ct1<=1 and timecd and holding=0 then //开多”

你要改变次数 改这里的判断就行了。而不是修改统计的方式。


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


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

 你贴一个能编译通过的代码吧。  你上面这样的 我没办法本地测试的。


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


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

 这几句删除掉。

平空:SELLSHORT(kdjsc,1,THISCLOSE);                  //平空信号
开多:BUY(kdjjc AND HOLDING=0,1,THISCLOSE) and TOTALDAYTRADE<2;          //开多信号
平多:SELL(macdsc,1,THISCLOSE);                       //平多信号
开空:BUYSHORT(macdsc AND HOLDING=0,1,THISCLOSE)and TOTALDAYTRADE<2 ;     //开空信号

因为前面的那部分代码 就是包含这部分的开仓思路了。并且在if里面设置了控制的逻辑。你这几句写上去就等于是不在控制逻辑范围内了。

我本地大致效果:


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


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