以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  [求助]逐K线模式机制有点不是很了解  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=82157)

--  作者:dbsx
--  发布时间:2015/8/7 22:18:10
--  [求助]逐K线模式机制有点不是很了解
我在逐k线模式下测试了使用zig函数的顶底(peak,trough)来构造买卖点,并在买卖条件形成时用drawtext在图表上显示。
然后再回测时候就出现了原先成立的已经画出(drawtext)的地方之后因为新的k线使得zig之前的顶底不成立而抹去了drawtext书写上去的内容



我不理解的是逐k线模式既然是从左到右一个k线计算一次,那么除了zig这类特殊函数本身外, 正常情况下应该不会对之前k线画的东西(drawtext)产生影响呀, 怎么会连我之前自己写上去的文字都一并随着条件不成立而抹去了呢????

如果我希望之前自己标示的文字不会因为zig函数在之后其顶底的变化而发生变动,那应该怎么做呢?

///////////////////////////////////////////////////////////////////////////////////////////////////////
//预设
ZIG(3,Z);
VARIABLE:持仓状态=0;

//条件
买入条件:=TROUGH(3,z,2) <TROUGH(3,z,1) AND  TROUGH(3,z,3) <TROUGH(3,z,2) AND PEAK(3,z,2) <PEAK(3,z,1) 
 AND PEAKBARS(3,z,1) > TROUGHBARS(3,z,1) AND  TROUGHBARS(3,z,1) AND 持仓状态=0;
卖出条件:= 持仓状态>0 AND CLOSE<TROUGH(3,Z,2);


//执行
IF 买入条件 THEN BEGIN
DRAWTEXT(1,CLOSE,\'买\',COLORRED);
持仓状态:=1;
END
IF 卖出条件 THEN BEGIN
DRAWTEXT(1,CLOSE,\'卖\',COLORGREEN);
持仓状态:=0;
END

//显示
持仓:持仓状态,NODRAW;

--  作者:fantasynew
--  发布时间:2015/8/8 15:14:12
--  
仅刷最后一根k线
--  作者:dbsx
--  发布时间:2015/8/8 22:12:34
--  [求助]逐K线模式机制有点不是很了解
这个好像并没有什么影响吧。。。。我测试了下一样只要条件又不成立了就把之前我之前标注的给抹掉
--  作者:yukizzc
--  发布时间:2015/8/9 23:11:55
--  

因为你这个条件本身就是闪烁的,如果要达到您这个效果这样处理下

if 买入条件 and islastbar then WRITEINIFILE(\'C:\\TESTNINFILE.INI\',\'SETTING\',NUMTOSTR(barpos,0),买入条件);   //自在最新k时候把条件保存到ini

DRAWTEXT(GETINIFILE(\'C:\\TESTNINFILE.INI\',\'SETTING\',NUMTOSTR(barpos,0),),CLOSE,\'买\',COLORRED);

--  作者:dbsx
--  发布时间:2015/8/10 7:40:59
--  [求助]逐K线模式机制有点不是很了解
先谢谢您的回复,不过我用了这几句代码后,我发现原来有的买卖信号也没有了。。。

//预设
ZIG(3,Z);
VARIABLE:持仓状态=0;
VARIABLE:1买止损价=0;
VARIABLE:信号灯=0;

信号灯:=0;
//条件
买入条件:=TROUGH(3,z,2) <TROUGH(3,z,1) AND  TROUGH(3,z,3) <TROUGH(3,z,2) AND PEAK(3,z,2) <PEAK(3,z,1) 
 AND PEAKBARS(3,z,1) > TROUGHBARS(3,z,1) AND  TROUGHBARS(3,z,1) AND 持仓状态=0;
卖出条件:= 持仓状态>0 AND CLOSE<1买止损价;
//ATR
ATR:"ATR.ATR"(Z),NODRAW;

//执行
if 买入条件 and islastbar then BEGIN 
WRITEINIFILE(\'C:\\TESTNINFILE.INI\',\'SETTING\',NUMTOSTR(barpos,0),买入条件);   //自在最新k时候把条件保存到ini
DRAWTEXT(GETINIFILE(\'C:\\TESTNINFILE.INI\',\'SETTING\',NUMTOSTR(barpos,0)),CLOSE,\'买\',COLORRED);
//IF 买入条件 THEN BEGIN
//DRAWTEXT(1,CLOSE,\'买\',COLORRED);
持仓状态:=1;
信号灯:=1;
END
IF 卖出条件 THEN BEGIN
DRAWTEXT(1,CLOSE,\'卖\',COLORGREEN);
持仓状态:=0;
1买止损价:=0;
信号灯:=-1;
END

IF 持仓状态=1 THEN BEGIN
1买止损价:= MAX(1买止损价,CLOSE-2*ATR);
DRAWTEXT(1,1买止损价,\'●\',COLORWHITE);
END

//显示
止损价:1买止损价,NODRAW;
持仓:持仓状态,NODRAW;
信号:信号灯,NODRAW;

--  作者:yukizzc
--  发布时间:2015/8/10 9:37:02
--  

你看下ini文件里保存的买入条件都是多少。

因为这个没法处理历史信号的,只能记录下你当下加载图表后记录的值。

你或者自己把历史的一些买入条件事先放入到ini文件中

您这种依靠未来的思路本身在程序化中就不建议使用


--  作者:dbsx
--  发布时间:2015/8/10 20:50:57
--  [求助]逐K线模式机制有点不是很了解
好吧,看来我只能放弃未来函数了。。。。