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


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

   

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


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

主题:请求帮助改写

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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
  发帖心情 Post By:2015/11/30 21:12:00    Post IP:221.231.89.90[显示全部帖子]

在文华的源码中yk可以这样写的,而且yk就能取到本次平仓后亏损累计值,
请老师按照2楼的要求取出三个值,

一,取本次平仓盈亏值,当平仓一结束,立即取值从开仓到平仓这一仓单的平仓盈亏值,这个值有三个可能,盈利为正数>0,保本=0,亏损为负数<0,

二,取本次平仓前一周期的亏损累计值,当平仓一结束,立即取前一周期的开平仓的亏损累计值,这个取值,当出现亏损时才取这个负值,当盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,就设初始前一周期的亏损累计值为0。

三,取本次平仓后亏损累计值,当平仓一结束,立即取本周期平仓的亏损累计值,这个取值为前一周期的亏损累计值+取本次平仓盈亏值,当相加出现亏损时才取这个负值,当相加盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,设初始前一周期的亏损累计值为0。



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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
  发帖心情 Post By:2015/12/6 18:24:11    Post IP:180.126.4.171[显示全部帖子]

老师好, 我的策略是收盘价上穿60均线立即平掉所有的空单持仓,并取得平空单的,本次平仓盈亏值前一周期累计亏损本次平仓亏损累计值,将这三个值,进行组合后有三种条件AABB,CC,满足不同的条件,取不同的手数开多仓,
                      当 收盘价下穿60均线立即平掉所有的多单持仓,并再次取得平多单的,本次平仓盈亏值前一周期累计亏损本次平仓亏损累计值,将这三个值,进行组合后有三种条件AABB,CC,满足不同的条件,取不同的手数开空仓,
    结合30楼的取三个值框架,加入我的策略,发觉三个取值的结果不对了,是否是结构框架存在问题,请老师按照我的思路,改写框架并能平空单与平多单多都取到正确的三个值,并且有连续性,
INPUT:m(60,5,100,1);
INPUT:ss(1,1,10,1);
MA1:MA(CLOSE,m);
variable:a2=0,a3=0;
variable:num=0;//记录开仓时的k序号
手数:=ss;
//交易条件
平空开多条件:=CROSS(c,MA1);//开多平空条件
平多开空条件:=CROSS(MA1,c);//开空平多条件
if 平空开多条件 then  begin
SELLSHORT(1,holding,MARKETr);        
num:=barpos;
end
a1:=NUMPROFIT(1);         
a2:=ref(a3,barpos-num);   
a3:=if(ref(a2,barpos-num)+a1<0,ref(a2,barpos-num)+a1,0);   
b1:a1,NODRAW;
b2:a2,NODRAW;
b3:a3,NODRAW;
SS1://取得平空仓前的多仓持仓手数,
AA:=//B1.B2.B3 组合等于AA
BB:=//B1.B2.B3 组合等于BB        
CC:=//B1.B2.B3 组合等于CC
DD:=IF(AA,手数,IF(BB,SS1,IF(CC,手数+1,返回空值)))
if 平空开多条件 then  begin
BUY(holding=0,DD,MARKETr);
num:=barpos;
end
if 平多开空条件 then begin
SELL(平多开空条件,holding,MARKETr);
num:=barpos;
end
a1:=NUMPROFIT(1);         
a2:=ref(a3,barpos-num);   
a3:=if(ref(a2,barpos-num)+a1<0,ref(a2,barpos-num)+a1,0);   
b11:a1,NODRAW;
b22:a2,NODRAW;
b33:a3,NODRAW;
SS1://取得平多仓前的空仓持仓手数,
AA1:=//B1.B2.B3 组合等于AA
BB1:=//B1.B2.B3 组合等于BB        
CC1:=//B1.B2.B3 组合等于CC
DD1:=IF(AA,手数,IF(BB,SS1,IF(CC,手数+1,返回空值)))
if 平多开空条件 then begin
BUYSHORT(holding=0,DD1,MARKETr);
num:=barpos;
end
 

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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
  发帖心情 Post By:2015/12/6 18:42:13    Post IP:180.126.4.171[显示全部帖子]

老师,30楼与33楼取三个值是正确的,加入我的新策略,己将原框架分开了,因策略要求,一平仓即刻取到三个值,然后再开仓,我将取值分笔加入开多仓与开空仓之前来取值了,形成了34楼的框架取值,发生错误,请老师按34楼的思路,写框架并取值,谢谢!

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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
  发帖心情 Post By:2015/12/9 12:10:37    Post IP:106.110.34.206[显示全部帖子]

老师好

1,后台能否实现挂单,撤单,

2,NUMPROFIT(1);    这个就是本次平仓的一个盈亏值 ,是平1手的盈亏,还是2手的盈亏,


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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
  发帖心情 Post By:2015/12/9 14:28:33    Post IP:106.110.34.206[显示全部帖子]

老师,在下面这个思路中再加上一条止盈,开多成交价+n点,止盈1手,开空成交价-n点,止盈1手,请老师写好直接加入代码中,谢谢!

INPUT:m(60,5,100,1);
INPUT:ss(1,1,10,1);
MA1:ROUNDS(MA(CLOSE,m),0);
variable:a1=0,a2=0,a3=0;
variable:numbuy=1,numsell=1;
手数:=ss;
//交易条件
平空开多条件:=CROSS(c,MA1);//开多平空条件
平多开空条件:=CROSS(MA1,c);//开空平多条件


if 平空开多条件 and holding<0 then  begin
SELLSHORT(1,holding,MARKETr);
a1:=NUMPROFIT(1);        
a2:=a3;
SS1:=numsell,NODRAW;//取得平空仓的持仓手数,
end       
a3:=if(a2+a1<0,a2+a1,0);  //a3放到这边来取到数值

if 平空开多条件 then  begin 
平空盈亏b1:a1,NODRAW;
平空前周期亏累计b2:a2,NODRAW;
平空亏损累计b3:a3,NODRAW;
BUY(holding=0,2,MARKETr);
numbuy:=1;
end

 

if 平多开空条件 and holding>0 then begin
SELL(1,holding,MARKETr);
a1:=NUMPROFIT(1);        
a2:=a3;
SS111:=numbuy,NODRAW;//取得平多仓的持仓手数,
end
a3:=if(a2+a1<0,a2+a1,0);  //a3放到这边来取到数值
if 平多开空条件 then  begin 
平多盈亏b11:a1,NODRAW;
平多前周期亏累计b22:a2,NODRAW,COLORWHITE;
平多亏损累计b33:a3,NODRAW;
BUYSHORT(holding=0,2,MARKETr);
numsell:=1;                         //每次开仓后把对应得手数赋值给全局变量numsell,
end


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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
  发帖心情 Post By:2015/12/9 14:52:09    Post IP:106.110.34.206[显示全部帖子]

老师,开2手,要求只止盈1手,另1手必须满条件才能平仓,上楼代码在2根k线上都平了,

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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
  发帖心情 Post By:2015/12/9 15:22:02    Post IP:106.110.34.206[显示全部帖子]

老师,如果开3手或3手以上的手数,要求只止盈1手,如何表达,谢谢!

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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
  发帖心情 Post By:2015/12/10 12:12:03    Post IP:114.236.175.6[显示全部帖子]

老师好,金字塔软件全局变量太神奇了,我不明白这怎么能取到平仓前的手数,怎么就不取其它咆,请老师讲解一下,谢谢!

variable:numbuy=1,numsell=1;

平空开多条件:=CROSS(c,结算价);//开多平空条件
平多开空条件:=CROSS(结算价,c);//开空平多条件

if 平空开多条件 and holding<0 then  begin
SELLSHORT(1,holding,MARKETr);
a1:=NUMPROFIT(1);        
a2:=a3;
SS1:numsell,NODRAW;//取得平空仓前的多仓持仓手数,--------------

end


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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
  发帖心情 Post By:2015/12/10 15:54:45    Post IP:114.236.175.6[显示全部帖子]

老师好,请求帮助将54楼中的三个取值改为曰内的取值

b1:a1,NODRAW;//本次平仓盈亏值,
b2:a2,NODRAW;//前一周期累计亏损值,改为曰内取值主要是这个前一周期累计亏损值,如改成当天第一次平仓取值为0,就ok了
b3:a3,NODRAW;//本次平仓亏损累计值


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


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2015/11/29 19:04:29
  发帖心情 Post By:2015/12/12 14:22:05    Post IP:121.234.49.134[显示全部帖子]

老师好,

上楼策略,加上止盈,取得平仓前的持仓手数,是平仓前的开仓手数,而我要求取的是平仓的手数,

  比如,满足平多开空条件,开空仓5手,持单中满足止盈条件,止盈1手空单,满足平空开多条件,平掉余下的4手空单,我要求取得平仓前的持仓手数,也就是满足平空开多条件平仓的手数,4手,

          上楼代码取得平仓前的持仓手数,是平仓前的开仓手数了,

请老师帮我改一下,取满足平仓条件的平仓的手数,谢谢!


 回到顶部
总数 29 1 2 3 下一页