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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]编写简单模型框架

   

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


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

主题:[求助]编写简单模型框架

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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
[求助]编写简单模型框架  发帖心情 Post By:2015/12/3 19:52:09    Post IP:121.234.52.103[只看该作者]

老师好,请求编写模型,策略主要是采用浮动仓位来开仓,收盘价上穿均线平掉所有的空单持仓并计算出平仓的盈亏,跟据盈亏满足的条件决定开多仓的手数,收盘价下穿均线平掉所有的多单持仓并计算出平仓的盈亏,跟据盈亏满足的条件来决定开空仓的手数,
一,初始化开仓手数:=ss;     因第一次开仓,取不到平仓盈亏,满足不了盈亏条件无法确定第一次开仓的手数,所以要确定初始第一次开仓手 数为ss手,   
二,中间变量均线为MA1:=MA(CLOSE,60);
三,交易条件
             平空开多条件:=CROSS(c,MA1);//开多平空条件
             平多开空条件:=CROSS(MA1,c);//开空平多条件
四,当模型达到平仓条件,先平掉所有的持仓,
         取本次平仓盈亏值,
         取本次平仓前的持仓手数,
     同时开仓之前根据平仓盈亏值判断
        当本次平仓盈亏值满足条件a1时,决定下次开仓手数为ss手,
        当本次平仓盈亏值满足条件b1时,决定下次开仓手数为ss+1手,
        当本次平仓盈亏值满足条件c1时,决定下次开仓手数为平仓前的持仓手数
    拫据手数开仓,

 

 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2015/12/4 9:47:44    Post IP:58.246.57.26[只看该作者]

取本次平仓前的持仓手数,

这个指的是你最有一次开仓的手数,还是当时的所有持仓



编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
h13004480057
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
  发帖心情 Post By:2015/12/4 9:55:38    Post IP:121.234.52.103[只看该作者]

平仓前的所有持仓手数

 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2015/12/4 10:32:48    Post IP:58.246.57.26[只看该作者]

类似于下面的思路。用户可以参考考自行修改

MA1:=MA(CLOSE,60);
平空开多条件:=CROSS(c,MA1);//开多平空条件
平多开空条件:=CROSS(MA1,c);//开空平多条件
SS:=2;//手数
a:NUMPROFIT(1); //取平仓盈亏值,
dd:ref(a,exitbars);//取平仓前的持仓手数,
//第一次
if 平空开多条件 and a=0 then begin
    SELLSHORT(1,holding,MARKET);
 BUY(HOLDING=0,ss,MARKET);
end

if 平多开空条件 and a=0 then begin
    SELL(1,holding,MARKET);
 BUYSHORT(HOLDING=0,ss,MARKET);
 end
 
 
 
//a1,b1,c1,不明确用户自己设置修改;下面是以A1,A2,A3作为常数进行比较为例且A1<A2<A3
if a>a1 and a<a2 then begin
 BUY(1,ss,MARKET);
end

if a>a2 and a<a3 then begin
 BUY(1,ss+1,MARKET);
end

if a>a2 then begin
 BUY(1,dd,MARKET);
end
if 平仓条件 then begin//平仓条件用户自行添加
    SELLSHORT(1,holding,MARKET);
 sell(1,HOLDING,MARKET);
end


 

[此贴子已经被作者于2015/12/4 10:39:10编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
心静
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/8/13 23:11:14
  发帖心情 Post By:2015/12/4 23:16:54    Post IP:180.126.4.171[只看该作者]

老师好,请帮助查一下,通不了
MA1:=MA(CLOSE,60);
平空开多条件:=CROSS(c,MA1);//开多平空条件
平多开空条件:=CROSS(MA1,c);//开空平多条件
SS:=10;//手数
a:NUMPROFIT(1); //取平仓盈亏值,
dd:ref(a,exitbars);//取平仓前的持仓手数,
//第一次
if 平空开多条件 and HOLDING=0 then begin
 //   SELLSHORT(1,holding,MARKET);
 BUY(1,ss,MARKET);
end
if 平多开空条件 and HOLDING=0 then begin
  //   SELL(1,holding,MARKET);
 BUYSHORT(1,ss,MARKET);
 end
 
 
if 平空开多条件 and HOLDING>0 then begin//平仓条件用户自行添加
    SELLSHORT(1,holding,MARKET);
   end 

 

if 平多开空条件 and  anda>0 then begin
 BUYSHORT(1,ss-1,MARKET);
 end
 
if 平多开空条件 and anda<0 then begin 
BUYSHORT(1,ss+1,MARKET);
 end
if 平多开空条件 and a=0 then begin
BUYSHORT(1,dd,MARKET);
 end    
 
 if 平多开空条件 and HOLDING>0 then begin    
    sell(1,HOLDING,MARKET);
 if 平空开多条件 and a>0 then begin
 BUY(1,ss-1,MARKET);
end
if 平空开多条件 anda<0 then begin
 BUY(1,ss+1,MARKET);
end
if 平空开多条件 and a=0 then begin
 BUY(1,dd,MARKET);
end

 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2015/12/4 23:24:21    Post IP:183.131.104.148[只看该作者]

代码少写了一个end,用红色标注出来了。建议用户根据提示调试代码,可以提高自己的编程能力。
MA1:=MA(CLOSE,60);
平空开多条件:=CROSS(c,MA1);//开多平空条件
平多开空条件:=CROSS(MA1,c);//开空平多条件
SS:=10;//手数
a:NUMPROFIT(1); //取平仓盈亏值,
dd:ref(a,exitbars);//取平仓前的持仓手数,
//第一次
if 平空开多条件 and HOLDING=0 then begin
 //   SELLSHORT(1,holding,MARKET);
 BUY(1,ss,MARKET);
end
if 平多开空条件 and HOLDING=0 then begin
  //   SELL(1,holding,MARKET);
 BUYSHORT(1,ss,MARKET);
 end
 
 
if 平空开多条件 and HOLDING>0 then begin//平仓条件用户自行添加
    SELLSHORT(1,holding,MARKET);
   end 

 

if 平多开空条件 and  anda>0 then begin
 BUYSHORT(1,ss-1,MARKET);
 end
 
if 平多开空条件 and anda<0 then begin 
BUYSHORT(1,ss+1,MARKET);
 end
if 平多开空条件 and a=0 then begin
BUYSHORT(1,dd,MARKET);
 end    
 
 if 平多开空条件 and HOLDING>0 then begin    
    sell(1,HOLDING,MARKET);
end

 if 平空开多条件 and a>0 then begin
 BUY(1,ss-1,MARKET);
end
if 平空开多条件 anda<0 then begin
 BUY(1,ss+1,MARKET);
end
if 平空开多条件 and a=0 then begin
 BUY(1,dd,MARKET);
end


编程无捷径,技巧靠积累。
 回到顶部