Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共27 条记录, 每页显示 10 条, 页签: [1] [2][3]
[浏览完整版]

标题:[求助]怎样控制这个里面加仓的时候重复开仓?

1楼
HOPEWX 发表于:2020/9/8 13:10:18
设计的思路是,MA3上穿MA7时,开多,如果连续2天收盘价大于MA17,加多。
第一次平多是MA7下穿MA3时,平一半多;连续2天收盘价小于MA17时,多全平;
反过来一样,但是实际运行中发现,会不停的加仓开多开空,请问这是哪里写错了吗?请指教,谢谢

VARIABLE:mark:=0;
ss:2;//
MA3:=MA(CLOSE,3);    //
MA7:=MA(CLOSE,7);   //
MA17:=MA(CLOSE,17);

KD1:=CROSS(MA3,MA7);
KD2:=EVERY(C>MA17,2);

KK1:=CROSS(MA7,MA3);
KK2:=EVERY(C<MA17,2);

开多1:KD1 and mark>=0;
开空1:KK1 and mark<=0;

加多:KD2;
加空:KK2;

平多1:KK1;
平空1:KD1;

全平多:KK2;
全平空:KD2;

//
if 开多1  then  begin
buy(holding=0,ss,market);
end

if 开空1 then 
begin
buyshort(holding=0,ss,market);
end

if 加多  then  begin
buy(holding>0,ss,market);
end

if 加空 then 
begin
buyshort(holding<0,ss,market);
end
 
if 平多1  and holding>0 then 
begin
sell(holding>0,holding/2,market);
mark:=-1;
end

if 平空1 and holding<0 then 
begin
sellshort(holding<0,holding/2,market);
mark:=1;
end

if 全平多  and holding>0 then 
begin
sell(holding>0,holding,market);
mark:=-1;
end

if 全平空 and holding<0 then 
begin
sellshort(holding<0,holding,market);
mark:=1;
end
2楼
HOPEWX 发表于:2020/9/8 13:12:33
应该如何控制,加仓只加一次?

第一次平多或平空只平一半,后面的全平我这样写的可对?
3楼
FireScript 发表于:2020/9/8 13:18:30
 “如果连续2天收盘价大于MA17”  这个条件
基本上只要是个上涨趋势,就会触发很多次, 反正空头的条件也是一样。


4楼
HOPEWX 发表于:2020/9/8 13:22:46
是的,我的意思是,控制只加一次该如何用语句来控制呢?请您指点,谢谢
5楼
FireScript 发表于:2020/9/8 13:35:49
 VARIABLE:mark:=0,mark1:=0,mark2:=0;
ss:2;//
MA3:=MA(CLOSE,3);    //
MA7:=MA(CLOSE,7);   //
MA17:=MA(CLOSE,17);

KD1:=CROSS(MA3,MA7);
KD2:=EVERY(C>MA17,2);

KK1:=CROSS(MA7,MA3);
KK2:=EVERY(C<MA17,2);

开多1:KD1 and mark>=0;
开空1:KK1 and mark<=0;

加多:KD2;
加空:KK2;

平多1:KK1;
平空1:KD1;

全平多:KK2;
全平空:KD2;

if 加多 and mark1=0  then  begin
加多仓:buy(holding>0,ss,market);
mark1:=mark1+1;
end

if 加空 and mark2=0 then
begin
加空仓:buyshort(holding<0,ss,market);
mark2:=mark2+1;
end



if 开多1  then  begin
buy(holding=0,ss,market);
mark1:=0;
end

if 开空1 then
begin
buyshort(holding=0,ss,market);
mark2:=0;
end


 
if 平多1  and holding>0 then
begin
sell(holding>0,holding/2,market);
mark:=-1;
end

if 平空1 and holding<0 then
begin
sellshort(holding<0,holding/2,market);
mark:=1;
end

if 全平多  and holding>0 then
begin
sell(holding>0,holding,market);
mark:=-1;
end

if 全平空 and holding<0 then
begin
sellshort(holding<0,holding,market);
mark:=1;
end


用全局变量控制下。另外我把加仓代码置开仓前面了。
6楼
FireScript 发表于:2020/9/8 13:37:42
还有就是这个加仓,我只限制在开仓之后的加仓。如果中间减仓后又满足 加仓的条件也是忽略掉的。
7楼
HOPEWX 发表于:2020/9/8 15:29:14
以下是引用FireScript在2020/9/8 13:37:42的发言:
还有就是这个加仓,我只限制在开仓之后的加仓。如果中间减仓后又满足 加仓的条件也是忽略掉的。
谢谢谢谢,我来测试下

8楼
FireScript 发表于:2020/9/8 16:03:14
 好的。
9楼
HOPEWX 发表于:2020/9/8 16:13:27
请问下,为什么要把加仓的代码放到开仓前面呢?这样会不会有些就不开了?
10楼
FireScript 发表于:2020/9/8 16:14:33
也可以放在后面。只是这样 会有加仓 开仓在一个K的情况。就是这么个区分了。
共27 条记录, 每页显示 10 条, 页签: [1] [2][3]


Powered By Dvbbs Version 8.3.0
Processed in 0.01563 s, 3 queries.