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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 这个反手模型可以写出来吗,我没写出来呢

   

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


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

主题:这个反手模型可以写出来吗,我没写出来呢

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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2017/3/7 9:53:14
这个反手模型可以写出来吗,我没写出来呢  发帖心情 Post By:2017/4/5 15:17:29    Post IP:113.65.190.63[只看该作者]

满足条件开多或者开空后,亏损1%,平仓然后反手,是上次开仓数量的2倍;盈利超过1%后,回撤50%,平所有仓。怎么我写的不对呢。。。
M:=1;
VARIABLE:AA:=0; N:=1;
KD:CROSS(MA(C,5),MA(C,10));
KK:CROSS(MA(C,10),MA(C,5));
DTKS:=HOLDING>0 AND C<=ENTERPRICE-M/100*ENTERPRICE;
KTKS:=HOLDING<0 AND C>=ENTERPRICE+M/100*ENTERPRICE;
DTYL:=HOLDING>0 AND HHV(H,ENTERBARS)-AVGENTERPRICE>M/100*ENTERPRICE&&c<ENTERPRICE+(HHV(H,ENTERBARS)-c)/2;
KTYL:=HOLDING<0 AND llV(l,ENTERBARS)-AVGENTERPRICE>M/100*ENTERPRICE&&c>ENTERPRICE-(llV(l,ENTERBARS)-c)/2;



if KD then begin
BUY(AA=0&&HOLDING=0,N,MARKET);
AA:=N;
END
if KK THEN BEGIN
BUYSHORT(AA=0&&HOLDING=0,N,MARKET);
AA:=-N;
END

IF DTKS AND HOLDING>0 THEN BEGIN
sell(AA>0,0,MARKET);
BUYSHORT(AA>0,2,MARKET);
AA:=ABS(AA)*(-2);
END

IF DTYL AND HOLDING>0 THEN BEGIN
SELL(AA>0,0,MARKET);
AA:=0;
END

IF KTKS AND HOLDING<0 THEN BEGIN
sellshort(AA<0,0,MARKET);
BUY(AA<0,4,MARKET);
AA:=ABS(AA)*2;
END

IF KTYL AND HOLDING<0 THEN BEGIN
SELLSHORT(AA<0,0,MARKET);
AA:=0;
END


资产:asset,noaxis;
可用现金:cash(0),linethick0;


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


加好友 发短信
等级:超级版主 帖子:18691 积分:0 威望:0 精华:0 注册:2013/7/15 9:22:16
  发帖心情 Post By:2017/4/5 15:44:41    Post IP:180.169.30.6[只看该作者]

//开多为例
VARIABLE:n=1,x=0;//n是开仓手数
if kd and holding=0 then buy(1,n,marketr);
if (c-ENTERPRICE)/enterprice>=0.01 and holding>0 then begin //盈利超过1%平仓,手数赋值为2倍
sell(1,holding,marketr);
n:=2*n;
x:=1; //记录盈利1%
end
hh:=hhv(h,enterbars+1);
if x=1 and 2*(hh-c)>=hh-enterprice and holding>0 then begin //盈利超过1%后,回撤50%
sell(1,holding,marketr);
n:=1;
x:=0;
end

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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2017/3/7 9:53:14
  发帖心情 Post By:2017/4/5 16:08:06    Post IP:113.65.190.61[只看该作者]

盈利超过1%后,回撤50%,平所有仓,平所有仓后不用再开仓的哦。

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


加好友 发短信
等级:超级版主 帖子:18691 积分:0 威望:0 精华:0 注册:2013/7/15 9:22:16
  发帖心情 Post By:2017/4/5 16:45:59    Post IP:180.169.30.6[只看该作者]

平仓后当天不再开仓?还是永远不要再开仓?

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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2017/3/7 9:53:14
  发帖心情 Post By:2017/4/5 17:07:54    Post IP:113.65.190.61[只看该作者]

盈利1%后,回撤50%,然后平仓后,满足KD或者KK后才开仓。不反手了。

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


加好友 发短信
等级:超级版主 帖子:18691 积分:0 威望:0 精华:0 注册:2013/7/15 9:22:16
  发帖心情 Post By:2017/4/5 17:24:29    Post IP:180.169.30.6[只看该作者]

参考2楼写法

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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2017/3/7 9:53:14
  发帖心情 Post By:2017/4/6 9:22:36    Post IP:113.65.191.33[只看该作者]

为什么我改成这样依然运行不了我的那个意思的呢?就是说盈利1%后,盈利回撤50%平掉之前的所有仓;亏损1%后,如果之前开仓是N手的,反手做2N手,直到亏第三次,那就不反手了,直接平仓,怎么下面的源码只能运行一段时间呢?
VARIABLE:AA:=0;
KD:CROSS(MA(C,5),MA(C,10));
KK:CROSS(MA(C,10),MA(C,5));
DTKS:=HOLDING>0 AND C<=ENTERPRICE-M/100*ENTERPRICE;
KTKS:=HOLDING<0 AND C>=ENTERPRICE+M/100*ENTERPRICE;
DTYL:=HOLDING>0 AND HHV(H,ENTERBARS+1)-AVGENTERPRICE>M/100*ENTERPRICE&&c<ENTERPRICE+(HHV(H,ENTERBARS)-c)/2;
KTYL:=HOLDING<0 AND llV(l,ENTERBARS+1)-AVGENTERPRICE<-M/100*ENTERPRICE&&c>ENTERPRICE-(llV(l,ENTERBARS)-c)/2;

m:=1;
n:=1;

if KD then begin
BUY(AA=0&&HOLDING=0,1,MARKETR);
AA:=1;
END
if KK THEN BEGIN
BUYSHORT(AA=0&&HOLDING=0,2,MARKETR);
AA:=-1;
END
//开仓
IF DTKS AND HOLDING>0 THEN BEGIN
sell(AA=1,HOLDING,MARKETR);
BUYSHORT(AA=1,2,MARKETR);
AA:=-2;
END
IF DTYL AND HOLDING>0 THEN BEGIN
SELL(AA=1,HOLDING,MARKETR);
AA:=0;
END
IF KTKS AND HOLDING<0 THEN BEGIN
sellshort(AA=-1,HOLDING,MARKETR);
BUY(AA=-1,2,MARKETr);
AA:=2;
END
IF KTYL AND HOLDING<0 THEN BEGIN
SELLSHORT(AA=-1,HOLDING,MARKETR);
AA:=0;
END
//一次平
IF DTKS AND HOLDING>0 THEN BEGIN
sell(AA=2,HOLDING,MARKETR);
BUYSHORT(AA=2,4,MARKETR);
AA:=-4;
END
IF DTYL AND HOLDING>0 THEN BEGIN
SELL(AA=2,HOLDING,MARKETR);
AA:=0;
END
IF KTKS AND HOLDING<0 THEN BEGIN
sellshort(AA=-2,HOLDING,MARKETr);
BUY(AA=-2,4,MARKETr);
AA:=4;
END
IF KTYL AND HOLDING<0 THEN BEGIN
SELLSHORT(AA=-2,0,MARKETR);
AA:=0;
END
//二次平
IF DTKS AND HOLDING>0 THEN BEGIN
sell(AA=4,HOLDING,MARKETR);
AA:=0;
END
IF DTYL AND HOLDING>0 THEN BEGIN
SELL(AA=4,HOLDING,MARKETR);
AA:=0;
END
IF KTKS AND HOLDING<0 THEN BEGIN
sellshort(AA=-4,HOLDING,MARKETr);
AA:=0;
END
IF KTYL AND HOLDING<0 THEN BEGIN
SELLSHORT(AA=-4,0,MARKETR);
AA:=0;
END


[此贴子已经被作者于2017/4/6 9:22:54编辑过]

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


加好友 发短信
等级:超级版主 帖子:18691 积分:0 威望:0 精华:0 注册:2013/7/15 9:22:16
  发帖心情 Post By:2017/4/6 16:13:22    Post IP:180.169.30.6[只看该作者]

上边有点问题,套用下边这个

//开多为例
VARIABLE:x=0;//n是开仓手数
n:=1;
if kd and holding=0 then buy(1,n,marketr);
if (enterprice-c)/enterprice>=0.01 and holding>0 then begin //亏损超过1%平仓,平仓反手开仓以前的2倍
sell(1,holding,marketr);
buyshort(holding=0,2*n,marketr);
end
if (c-enterprice)/enterprice>=0.01 then x:=1;//记录盈利超过1%
hh:=hhv(h,enterbars+1);
if x=1 and 2*(hh-c)>=hh-enterprice and holding<0 then begin //盈利超过1%后,回撤50%
sellshort(1,holding,marketr);
n:=1;
x:=0;
end

[此贴子已经被作者于2017/4/6 16:14:23编辑过]

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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2017/3/7 9:53:14
  发帖心情 Post By:2017/4/6 17:02:15    Post IP:113.65.191.33[只看该作者]

为什么写出来之后,最大的开仓手数只有2手?
KD:CROSS(MA(C,5),MA(C,10));
KK:CROSS(MA(C,10),MA(C,5));
//开多为例
VARIABLE:x=0;//n是开仓手数
n:=1;
if kd and holding=0 then buy(1,n,marketr);
if (enterprice-c)/enterprice>=0.01 and holding>0 then begin //亏损超过1%平仓,平仓反手开仓以前的2倍
sell(1,holding,marketr);
buyshort(holding=0,2*n,marketr);
end
if (c-enterprice)/enterprice>=0.01 then x:=1;//记录盈利超过1%
hh:=hhv(h,enterbars+1);
if x=1 and 2*(hh-c)>=hh-enterprice and holding<0 then begin //盈利超过1%后,回撤50%
sellshort(1,holding,marketr);
n:=1;
x:=0;
end

if kk and holding=0 then buyshort(1,n,marketr);
if (c-enterprice)/enterprice>=0.01 and holding<0 then begin //亏损超过1%平仓,平仓反手开仓以前的2倍
sellshort(1,holding,marketr);
buy(holding=0,2*n,marketr);
end
if (c-enterprice)/enterprice<=-0.01 then x:=1;//记录盈利超过1%
ll:=llv(l,enterbars+1);
if x=1 and 2*(c-ll)>=enterprice-ll and holding>0 then begin //盈利超过1%后,回撤50%
sell(1,holding,marketr);
n:=1;
x:=0;
end



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


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

因为n始终都是1.


编程无捷径,技巧靠积累。
 回到顶部
总数 12 1 2 下一页