以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教高手  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=29856)

--  作者:pig3009
--  发布时间:2012/10/16 10:15:53
--  请教高手
请教高手,我下面的这段代码在模拟测试时出现重复多次开仓的现象,还出现一个时间点反向开仓的现象,我只想一次开仓一手,不出现超过两手的开仓,请问如何修改,谢谢

IF 开多 AND TIME>090000 AND TIME<151200 THEN
BEGIN
  SELLSHORT(HOLDING<0,0,market);//先平
  BUY(HOLDING=0,1,market);//开多
  maxprofit:=0;
END
//MSGOUT(1,\'开多仓了\');

IF 开空 AND TIME>090000 AND TIME<151200 THEN
BEGIN
  SELL(HOLDING>0,0,market);//先平
  BUYSHORT(HOLDING=0,1,market);//开空
  maxprofit:=0;
END
//MSGOUT(1,\'开空仓了\');

//判断当前持仓状态下的最大盈利
win:=0;
if holding > 0 and enterbars > 0 then
begin
 win:=c-enterprice; //记录最大盈利
 if win > maxprofit then
  maxprofit:=win; 
 end

if holding < 0 and enterbars > 0 then
begin
 win:=enterprice-c; //记录最大盈利
 if win > maxprofit then
  maxprofit:=win;
end


另外,想在图表中划出止盈线,但是用下面语句划不出来,请问该如何写,谢谢

//出现浮盈1个点平仓
多仓止盈:SELL(win > 5,0,market);
DRAWLINE(win>5,win,0,0,3,colorred);
//MSGOUT(1,\'多仓止盈完成\');
//多仓止损:sell(win<3,0);
空仓止盈:SELLshort(win > 5,0 ,market);
DRAWLINE(win>5,win,0,0,3,colorred);
//MSGOUT(1,\'空仓止盈完成\');
//空仓止损:sellshort(win<3,0);



--  作者:jinzhe
--  发布时间:2012/10/16 10:21:58
--  

使用全局变量记录win

variable:win=0


--  作者:pig3009
--  发布时间:2012/10/16 10:42:49
--  
这个全局变量在前面有定义的,我忘了贴过来了。

请问我提的两个问题能否分开回答?今天模拟的时候多次开仓的情形特别明显。甚至开仓到4手,很奇怪的现象。期待回复

--  作者:jinzhe
--  发布时间:2012/10/16 10:48:23
--  

那么你 把公式中的win:=0去掉


--  作者:pig3009
--  发布时间:2012/10/16 11:16:27
--  
按照高手指点去掉了,win=0,目前还没有出现开多手的现象,但是出现反向开仓的现象。例如原持有一手多仓,随后又开出一手空仓。很奇怪,这个现象是不是系统刷新的问题?应该不是我代码的问题吧。我代码里已经写了先平后开的
--  作者:jinzhe
--  发布时间:2012/10/16 11:18:32
--  
图表在有多仓的情况下不开空的,你看错了吧?
--  作者:pig3009
--  发布时间:2012/10/16 13:12:49
--  
请看截图,最新刷下来的
不知道用实盘账户来做会不会存在这种情况?
图片点击可在新窗口打开查看此主题相关图片如下:截图1.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:截图2.png
图片点击可在新窗口打开查看


--  作者:RogarZ
--  发布时间:2012/10/16 13:24:42
--  

走完K线还是 固定时间间隔 ,

固定时间间隔的话,你开仓条件是否有信号闪烁问题?


--  作者:pig3009
--  发布时间:2012/10/16 13:28:45
--  
我用轮询模式,因为我的信号有闪烁才会出现这种情况,那么平仓的时候也会因为信号闪烁而无法完全平仓,对吧
--  作者:every
--  发布时间:2012/10/16 13:34:37
--  

轮训模式下,因为这时候的CLOSE是不确定的,

所以类似这样的写法   win:=enterprice-c; //记录最大盈利

是会造成造成信号闪烁的,对应的CLOSE用开盘/最高/最低,这样的基本可以固定的表示,尽量减少信号闪烁