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


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

   

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


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

主题:请教编写公式

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


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

金叉开多 就用cross(ma1,ma2)就行了。
buy(cross(ma1,ma2) and holding=0,1,market);


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


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

 那你直接把开仓条件改成金叉就行了。

C>UPPER and cross(ma1,ma2)

这样你只要在上轨之上,出现ma金叉就可以继续开仓。


[此贴子已经被作者于2021/1/21 14:49:38编辑过]


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


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

 你的意思是在c在上下轨之间且ma金叉 就继续开仓?


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


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

 BUY(C>UPPER and MA1>MA2 AND HOLDING=0,1,MARKET);//最初的开仓

BUY(C>LOWER AND C<UPPER AND CROSS(MA1,MA2) AND HOLDING=0,1,MARKET);//介于上下轨之间 且ma金叉时候开仓
SELL(C<LOWER OR cross(ma2,ma1),holding,market);//平仓

这样应该差不多了吧。你看下。


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


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

你是要开多一次后再按照上面代码逻辑去执行?必须前面有过一次开多或者开空?



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


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

VARIABLE:mark:=0;
M:=26;
K:=3;
MID:=  MA(CLOSE,M);//布林中轨
UPPER: MID + K*STD(CLOSE,M);//布林上轨
LOWER: MID - K*STD(CLOSE,M);//布林下轨

MA1:MA(C,5);
MA2:MA(C,30);

 
if C>UPPER and MA1>MA2 AND HOLDING=0 then
begin
开仓1:BUY(1,1,MARKET);
mark:=1;    //首次开仓时候记录下
end

开仓2:BUY(C>LOWER AND C<UPPER AND CROSS(MA1,MA2) AND HOLDING=0 and mark=1,1,MARKET);//只有首次开仓过才能再次开仓
SELL(C<LOWER OR cross(ma2,ma1),holding,market);

if C<LOWER then  mark:=0;//小于下轨时候重置全局变量


这样试下呢。如果要加入空头 可能还需要再定义一个全局变量


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


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

你空头条件是怎样的呢。主要是你首次开仓的条件。




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


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

 VARIABLE:mark1:=0,mark2:=0;
M:=26;
K:=3;
MID:=  MA(CLOSE,M);//布林中轨
UPPER: MID + K*STD(CLOSE,M);//布林上轨
LOWER: MID - K*STD(CLOSE,M);//布林下轨

MA1:MA(C,5);
MA2:MA(C,30);

 
if C>UPPER and MA1>MA2 AND HOLDING=0 then
begin
开多1:BUY(1,1,MARKET);
mark1:=1;    //首次开仓时候记录下
end

开多2:BUY(C>LOWER AND C<UPPER AND CROSS(MA1,MA2) AND HOLDING=0 and mark1=1,1,MARKET);//只有首次开仓过才能再次开仓
SELL(C<LOWER OR cross(ma2,ma1),holding,market);

if C<LOWER then  mark1:=0;//小于下轨时候重置全局变量



if C<LOWER and MA1<MA2 AND HOLDING=0 then
begin
开空1:BUYSHORT(1,1,MARKET);
mark2:=1;    //首次开仓时候记录下
end

开空2:BUYShort(C>LOWER AND C<UPPER AND CROSS(MA2,MA1) AND HOLDING=0 and mark2=1,1,MARKET);//只有首次开仓过才能再次开仓
SELLShort(C>UPPER OR cross(ma1,ma2),holding,market);

if C>UPPER then  mark1:=0;//小于下轨时候重置全局变量


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