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


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

   

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


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

主题:请教老师:样编怎写。

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


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

 收盘强平这个 你现在是走完K模式还固定轮询模式?


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


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

1. 你走完K  就只能等K线走完才能发单。这个模式就是这样的,无法从代码上突破这个限制的。
2.
如果是走完K模式的话,那就只能在收盘前一个K上出信号,然后收盘K上刚好按照信号下单。

if h>ref(h,1) then buy(1,1,market);//当前最高价大于上个K最高价


if l<ref(l,1) then //当前最低价低于上个K最低价
begin
sell(1,holding,market);
buyshort(holding=0,1,market);
end

if l>ref(l,1) then sellshort(1,holding,market);//当前最低价大于上个K最低价

if time=185900 or time=045900 then //走完K模式下收盘前一个K出信号,否则就只能在下次开盘K上开仓了。
begin
收盘强平1:sell(1,holding,market);   
收盘强平2:sellshort(1,holding,market);
end




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


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

 如果改成固定轮询模式 就是可以实现满足条件就下单。
相应的,这里时间判断改成判断收盘K就行了。因为信号会在最后一个K上直接触发 并下单。

if time=190000 or time=050000 then //走完K模式下收盘前一个K出信号,否则就只能在下次开盘K上开仓了。
begin
收盘强平1:sell(1,holding,market);   
收盘强平2:sellshort(1,holding,market);
end


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


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

 那这样子:
if h>ref(h,1) then sellshort(1,holding,market);//当前k最高价格大于上个K最高价
if h>ref(h,1) then buy(1,1,market);


if l<ref(l,1) then //当前最低价低于上个K最低价
begin
sell(1,holding,market);
buyshort(holding=0,1,market);
end

这里还是说明下。这里上下突破我选择用的是当前K的最高 最低价来处理的。和直接用收盘价是有点区别的。但是你这里用的是固定轮询 用最高最低价会更合理些。


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


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

 你加的部分和当前部分的逻辑关系是这样的呢。就是单纯增加2个开仓条件?


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


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

 INPUT:A(2,1,100,1),B(5,1,1000,1),SS(1,1,100,1);//均线参数,下单手数 都在这里调整参数即可
MA1:MA(CLOSE,A);
MA2:MA(CLOSE,B);

手数:=ss;
//交易条件
开多条件:=CROSS(MA1,MA2);
开空条件:=CROSS(MA2,MA1);


if h>ref(h,1) then sellshort(1,holding,market);//当前k最高价格大于上个K最高价
if h>ref(h,1) or 开多条件 then buy(1,1,market);

if 开空条件 then buyshort(1,1,market);
if l<ref(l,1) then //当前最低价低于上个K最低价
begin
sell(1,holding,market);
buyshort(1,1,market);
end

if time=190000 or time=050000 then //收盘前一个K出信号
begin
收盘强平1:sell(1,holding,market);   
收盘强平2:sellshort(1,holding,market);
end


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


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

 1.如果只是大于
开多条件:=MA1>MA;
不需要用cross函数
2.那你就直接改下就行了。or  改成and
另外这里也改下
//if  then buyshort(1,1,market);//这句删除掉
if l<ref(l,1) then //当前最低价低于上个K最低价
begin
sell(1,holding,market);
buyshort(开空条件,1,market);
end
[此贴子已经被作者于2021/1/4 17:17:02编辑过]


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