以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  亏损加仓的代码问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=168558)

--  作者:火焱14895
--  发布时间:2019/3/4 9:46:22
--  亏损加仓的代码问题
请教:我想在以下的基础上加上亏损加仓,怎么写?我试了两天都没搞定!谢谢。
        代码:
             VARIABLE:ct1:=0,ct2:=0;
jc1:holding>0 and MID>AvGENTERPRICE;//多头加仓条件
if jc1 then  
begin 
buy(holding>0 and ct1<2,1,market);
ct1:=ct1+1;
end

jc2:holding<0 and AvGENTERPRICE<MID;//空头加仓条件
if jc2 then begin 
buyshort(holding<0 and ct2<2,1,market);
ct2:=ct2+1;
end

zs1:holding>0 and MID<AvGENTERPRICE;//多头止损条件
if zs1 then 
begin
sell(holding>0,holding,market);
ct1:=0;
end
zs2:holding<0 and MID>AvGENTERPRICE;//空头止损条件
if zs2 then 
begin 
sellshort(holding<0,holding,market);
ct2:=0; 
end
我要加入的是:连续亏损两次后,在后面的交易开始,每亏损一次加一手单,直到盈利为止。而原来的加仓条件不变。(上面颜色部分)十分感谢!

--  作者:FireScript
--  发布时间:2019/3/4 9:53:52
--  
你只要把你这里的所有开仓语句里面的手数参数换成:ss+NUMLOSSTRADE
比如这里:
ss定义成1
buyshort(holding<0 and ct2<2,ss+NUMLOSSTRADE,market);

不过现在有个问题。这个函数能获取亏损次数,但是这个是不区分多空的,多头亏损和空头亏损都统计在内的。

--  作者:火焱14895
--  发布时间:2019/3/4 10:49:21
--  
老师:这里是加仓的条件喔。我要的是第一次开单,平仓后,亏损了,下一手单还是亏,第三手单开多一手单。而多头加仓只是盈利后才加的。
--  作者:FireScript
--  发布时间:2019/3/4 14:21:03
--  
 1. 你这里的亏损统计是多头和空头一并统计在一起吗?比如最近开过一次多 亏损 一次空 亏损,那么如果是合并统计的话,那就已经算是2次亏损了。第三次无论开多空都会增加开仓手数。
 2.“每亏损一次加一手单,直到盈利为止。” 这里的盈利是指总的资金的盈利还是说单笔交易的盈利?
[此贴子已经被作者于2019/3/4 14:21:27编辑过]

--  作者:火焱14895
--  发布时间:2019/3/4 14:29:36
--  
1.总资金盈利怎么写?
2.如果是单笔盈利又怎么写?
我把现在的代码写给您看看,应该改?
VARIABLE:
ct1:=0,
ct2:=0;


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

ss1:CEILING(30/(UPPER-MID));
ss2:CEILING(30/(MID-LOWER));
ss3:=(30/(UPPER-MID));
ss4:=(30/(MID-LOWER));

buycond1:h>=UPPER;
buycond2:l<=LOWER;

开多:buy(buycond1 and holding=0,ss1+NUMLOSSTRADE,market);
开空:buyshort(buycond2 and holding=0,NUMLOSSTRADE+SS2,market);

jc1:=holding>0 and MID>=AVGENTERPRICE and ct1<2;//多头加仓条件
if jc1 then begin
加仓1:buy(holding>0 and ct1<2,SS3,market);
ct1:=ct1+1;

end

jc2:=holding<0 and AVGENTERPRICE>=MID and ct2<2 ;//空头加仓条件
if jc2 then begin
加仓2:buyshort(holding<0 and ct2<2,ss4,market);
ct2:=ct2+1;
end

ydzs1:l<MID and holding>0;//多头止损条件
if ydzs1 then
begin
止损1:sell(holding>0,holding,market);
ct1:=0;
end
ydzs2:h>MID and holding<0;//空头止损条件
if ydzs2 then
begin
止损2:sellshort(holding<0,holding,market);
ct2:=0;
end



当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY; 

非常感谢!!!!!!!!!!!!

--  作者:火焱14895
--  发布时间:2019/3/4 14:32:09
--  
现在的这个代码是做不到我想要的。
--  作者:火焱14895
--  发布时间:2019/3/4 14:41:00
--  
还有,是连亏2次后,才开起开多一手单。謝
--  作者:FireScript
--  发布时间:2019/3/4 15:27:10
--  
 你先解决下我4楼的疑问,不然没办法帮你处理。
--  作者:火焱14895
--  发布时间:2019/3/4 17:35:37
--  
十分感谢你的回答:
 1. 你这里的亏损统计是多头和空头一并统计在一起吗?比如最近开过一次多 亏损 一次空 亏损,那么如果是合并统计的话,那就已经算是2次亏损了。第三次无论开多空都会增加开仓手数。
答:是的。是多头和空头一并统计在一起。
 2.“每亏损一次加一手单,直到盈利为止。” 这里的盈利是指总的资金的盈利还是说单笔交易的盈利?
答:总资金盈利。
可以的话,我想看看“总的资金的盈利”和“单笔交易的盈利”的差别,和写法上的不同。

--  作者:loubo899
--  发布时间:2019/3/4 22:56:30
--  
我服一楼,你亏损加仓,这是什么操作?千万不可啊