以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=171104)

--  作者:xhbsy007
--  发布时间:2019/7/17 16:03:25
--  请老师看下代码哪里有问题
老师:请帮忙看下这个代码盈利5跳后不止盈?(固定轮询)美原油

KD:=REF(high>=REF(high,1),1) ;

KK:=REF(high<REF(high,1),1);

 

 

//开多止盈5

IF H-ENTERPRICE>=5*MINDIFF and holding>0 THEN BEGIN

SELL(1,0,MARKET),orderQueue;

END

 

//开空止盈5

IF ENTERPRICE-low>=5*MINDIFF and holding<0 THEN BEGIN

sellshort(1,0,MARKET),orderQueue;

END

 

//开多止损20

IF ENTERPRICE-low>=20*MINDIFF and holding>0 THEN BEGIN

SELL(1,0,MARKET),orderQueue;

END

 

//开空止损20

IF HIGH-ENTERPRICE>=20*MINDIFF and holding<0 THEN BEGIN

sellshort(1,0,MARKET),orderQueue;

END

 

//------------------开多

if (KD AND HOLDING=0) then

begin

BUY(1 ,手数,marketr),orderQueue;

end

//-----------------开空

if (KK AND HOLDING=0) then

begin

BUYSHORT(1,手数,marketr),orderQueue;

end

 

//-----------------------------k走完提前2秒平仓

abb:=(time0-timetot0(dynainfo(207))<=2) or not(islastbar); //tq是设定的提前下单的秒数

if abb then begin

sell(1,0,MARKET),orderQueue;

sellshort(1,0,MARKET),orderQueue;                          

END


--  作者:FireScript
--  发布时间:2019/7/17 16:38:27
--  
 有没有输出当时的条件呢。因为我看你用的止盈是按照H-ENTERPRICE>=5*MINDIFF 这个计算的。最好把条件单独输出下看的比较直观点。代码逻辑上应该没有影响到止盈止损的执行。
[此贴子已经被作者于2019/7/17 16:39:23编辑过]

--  作者:xhbsy007
--  发布时间:2019/7/17 16:44:35
--  
止盈可以用 ENTERPRICE  吗? AvGENTERPRICE 还是用这个合适?条件单独输出?看日志吗?从哪里看
--  作者:FireScript
--  发布时间:2019/7/17 16:52:01
--  
 2个函数都可以啊。如果有加仓用AvGENTERPRICE比较好。

不是日志输出,是把条件当做一个变量输出下。
类似这样:
//开多止盈5
cd:H-ENTERPRICE>=2*MINDIFF and holding>0;
IF cd THEN BEGIN

SELL(1,0,MARKET),orderQueue;

END

然后你代码里面点数设置的不是很合理吧。美原油的话,设置3-4个点差不多。否则平仓条件都触发了,也触发不了止盈止损。

--  作者:FireScript
--  发布时间:2019/7/17 16:53:00
--  
另外就是可以这样:
IF ENTERPRICE-low>=2*MINDIFF and holding<0 THEN BEGIN
止盈2:sellshort(1,0,MARKET),orderQueue;
END
这样可以在图表上看到止盈止损的字样。



图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

比较明显。