以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp)
-- 策略编写求助区 (http://weistock.com/bbs/list.asp?boardid=11)
---- 请教编写方法,要求第一次开仓也是自动,提示往前取前若干K线收盘价定虚拟交易点 (http://weistock.com/bbs/dispbbs.asp?boardid=11&id=6026)
|
-- 作者:xxn139
-- 发布时间:2011/4/5 18:02:48
-- 请教编写方法,要求第一次开仓也是自动,提示往前取前若干K线收盘价定虚拟交易点
请教版主,前时我曾以这个语句:
开多仓条件:CLOSE>=开空以来的最低价+X;
平多仓条件:CLOSE<=开多以来的最高价-X;
开空仓条件:CLOSE<=开多以来的最高价-X;
平空仓条件:CLOSE>=开空以来的最低价+X;请教编写方法,要求第一次开仓也是自动,提示往前取前若干K线收盘价定虚拟交易点,已蒙版主帮忙编有语句(具体原码看XXN139的有关求助帖),但几经测试未能成交,一时无法找到问题,故再次求助,现将语句完善如下,请版主帮忙在原来基础上修改编译一下,非常谢谢:
缺省设置: X缺省=350;最小=0.00001;最大=1000;
N缺省=60;最小=1;最大=1000;
E缺省=10;最小=1;最大=1000;
M1缺省=1.5;最小=0.01;最大=100;
M2缺省=0.5;最小=0.01;最大=100;
开多条件:CLOSE>=开空以来的最低价+X并且N分钟分析周期REF(VOL,1)/REF(VOL,2)>=M1或者N分钟分析周期VOL/REF(VOL,1)>=M1;
平多条件:CLOSE<=开多以来的最高价-X并且N分钟分析周期REF(VOL,1)/REF(VOL,2)<=M2或者N分钟分析周期离收盘时间<E并且
VOL/REF(VOL,1)<=M2;
开空条件:=平多条件,即平多语句的重复;
平空条件:=开多条件,即开多语句的重复;
|
-- 作者:王锋
-- 发布时间:2011/4/6 10:45:07
--
问题正在给您解决,根据您所提交问题的难易不同,完成的时间有可能在1-2个工作日内,请用户耐心等待
|
-- 作者:董小球
-- 发布时间:2011/4/6 13:08:14
--
input:X(350,0.00001,1000),N(60,1,1000),E(10,1,1000),M1(1.5,0.01,100),M2(0.5,0.01,100);
开多以来的最高价:=HHV(H,TYPEBAR(1,1)); 开空以来的最低价:=LLV(L,TYPEBAR(1,3)); 开多仓条件:=CLOSE>=开空以来的最低价+X; 平多仓条件:=CLOSE<=开多以来的最高价-X; 开空仓条件:=CLOSE<=开多以来的最高价-X; 平空仓条件:=CLOSE>=开空以来的最低价+X;
开多平空条件:=CLOSE>=开空以来的最低价+X AND REF("VOL#MIN5",1)/REF("VOL#MIN5",2)>=M1 OR "VOL#MIN5"/REF("VOL#MIN5",1)>=M1;//这里使用5分钟为例 平多开空条件:=CLOSE<=开多以来的最高价-X AND REF("VOL#MIN5",1)/REF("VOL#MIN5",2)<=M2 OR TIME-150000<E AND "VOL#MIN5"/REF("VOL#MIN5",1)<=M2; SELL(平多开空条件,1 ,market),ORDERQUEUE; BUYSHORT(平多开空条件,1 ,market),ORDERQUEUE;
SELLSHORT(开多平空条件,1 ,market),ORDERQUEUE; BUY(开多平空条件,1 ,market),ORDERQUEUE; 持仓量:holding,linethick0;
以上代码可以执行,但不知道是否完全符合你的意图,你可以测测。
另外,楼主说的虚拟开仓点,最好能给出确切的量化实例,或者自己研究研究改进改进。
|
-- 作者:xxn139
-- 发布时间:2011/4/6 17:35:09
--
以上回复没有解决第一次自动买入的问题,不符原MT4方案原理,现将方案简化重贴一次,希望高手帮忙编译完整代码。
缺省设置:
N缺省=60;最小=1;最大=1000;
X缺省=350;最小=0.00001;最大=1000;
M1缺省=1.5;最小=0.001;最大=10;
M2缺省=0.5;最小=0.001;最大=10;
程序运行于1秒或10秒K线图上,程序启动时取前100根K线的收盘价为开空仓的点位,循环交易的策略如下:
开多条件:CLOSE>=开空以来的最低价+X并且N分钟分析周期的前一期VOL/前二期VOL>=M1;
平多条件:CLOSE<=开多以来的最高价-X并且N分钟分析周期的前一期VOL/前二期VOL<=M2;
开空条件:CLOSE<=开多以来的最高价-X并且N分钟分析周期的前一期VOL/前二期VOL<=M2;
平空条件:CLOSE>=开空以来的最低价+X并且N分钟分析周期的前一期VOL/前二期VOL>=M1;
|
-- 作者:董小球
-- 发布时间:2011/4/7 10:04:54
--
根据你说的又改进了下
input:X(350,0.00001,1000),N(60,1,1000),E(10,1,1000),M1(1.5,0.01,100),M2(0.5,0.01,100); variable:AA=0; IF DATACOUNT-BARPOS=100 AND C>O AND AA=0 THEN BEGIN BUY(1,1,MARKET); AA:=AA+1; END ELSE IF DATACOUNT-BARPOS=100 AND C<O AND AA=0 THEN BEGIN BUYSHORT(1,1,MARKET); AA:=AA+1; END 开多以来的最高价:=HHV(H,ENTERBARS); 开空以来的最低价:=LLV(L,EXITBARS); 开多仓条件:=CLOSE>=开空以来的最低价+X; 平多仓条件:=CLOSE<=开多以来的最高价-X; 开空仓条件:=CLOSE<=开多以来的最高价-X; 平空仓条件:=CLOSE>=开空以来的最低价+X; 开多平空条件:=CLOSE>=开空以来的最低价+X AND REF("VOL#MIN5",1)/REF("VOL#MIN5",2)>=M1 OR "VOL#MIN5"/REF("VOL#MIN5",1)>=M1;//这里使用5分钟为例 平多开空条件:=CLOSE<=开多以来的最高价-X AND REF("VOL#MIN5",1)/REF("VOL#MIN5",2)<=M2 OR TIME-150000<E AND "VOL#MIN5"/REF("VOL#MIN5",1)<=M2;
{IF BARSTATUS=1 AND C>O THEN BEGIN BUY(开多平空条件,1,market) END IF BARSTATUS=1 AND C<O THEN BEGIN BUYSHORT(平多开空条件,1,market) ; END}
IF DATACOUNT-BARPOS<100 THEN BEGIN SELL(平多开空条件,HOLDING,market); BUYSHORT(平多开空条件,1,market);
SELLSHORT(开多平空条件,HOLDING,market); BUY(开多平空条件,1,market); 持仓量:holding,linethick0; 资产:ASSET,NOAXIS,colorblue; end
[此贴子已经被作者于2011-4-7 10:15:08编辑过]
|
-- 作者:xxn139
-- 发布时间:2011/4/11 11:30:01
--
请版主再审查,看首次买入条件是否可行,谢谢!
A1:=TIME>=090000 AND TIME<112000 AND REF("VOL#MIN5",1)/REF("VOL#MIN5", 2)>=M1; A2:=CLOSE>=LLV(L,TYPEBAR(1,3))+X AND REF("VOL#MIN5",1)/REF("VOL#MIN5", 2)>=M1; B1:=TIME>=090000 AND TIME<112000 AND REF("VOL#MIN5",1)/REF("VOL#MIN5", 2)<=M2; B2:=CLOSE<=HHV(H,TYPEBAR(1,1))-X AND REF("VOL#MIN5",1)/REF("VOL#MIN5", 2)<=M2; COND1:=A1; COND2:=A2; COND3:=B1; COND4:=B2; BUY(COND1 OR COND2,1,MARKET),ORDERQUEUE; SELL(COND4,1,MARKET),ORDERQUEUE; BUYSHORT(COND3 OR COND4,1,MARKET),ORDERQUEUE; SELLSHORT(COND2,1,MARKET),ORDERQUEUE;
|
-- 作者:董小球
-- 发布时间:2011/4/11 11:32:16
--
好 我先看看~
|
-- 作者:董小球
-- 发布时间:2011/4/11 14:50:01
--
VOL#MIN5 这里调用 切忌不要调用其他格式的,并不是所有的都可以命名为 min4 min6 min19 之类的
要按照#号说明里的支持周期来调用
|
-- 作者:董小球
-- 发布时间:2011/4/12 14:52:04
--
input:X(350,0.00001,1000),N(60,1,1000),E(10,1,1000),M1(1.5,0.01,100),M2(0.5,0.01,100); variable:AA=0; IF DATACOUNT-BARPOS=100 AND C>O AND AA=0 THEN BEGIN BUY(1,1,MARKET); AA:=AA+1; END ELSE IF DATACOUNT-BARPOS=100 AND C<O AND AA=0 THEN BEGIN BUYSHORT(1,1,MARKET); AA:=AA+1; END 开多以来的最高价:=HHV(H,ENTERBARS); 开空以来的最低价:=LLV(L,EXITBARS); 开多仓条件:=CLOSE>=开空以来的最低价+X; 平多仓条件:=CLOSE<=开多以来的最高价-X; 开空仓条件:=CLOSE<=开多以来的最高价-X; 平空仓条件:=CLOSE>=开空以来的最低价+X; 开多平空条件:=CLOSE>=开空以来的最低价+X AND REF("VOL.volume#MIN5",1)/REF("VOL.volume#MIN5",2)>=M1 OR "VOL.volume#MIN5"/REF("VOL.volume#MIN5",1)>=M1;//这里使用5分钟为例 平多开空条件:=CLOSE<=开多以来的最高价-X AND REF("VOL.volume#MIN5",1)/REF("VOL.volume#MIN5",2)<=M2 OR TIME-150000<E AND "VOL.volume#MIN5"/REF("VOL.volume#MIN5",1)<=M2;
IF DATACOUNT-BARPOS<100 THEN BEGIN SELL(平多开空条件,HOLDING,market); BUYSHORT(平多开空条件,1,market);
SELLSHORT(开多平空条件,HOLDING,market); BUY(开多平空条件,1,market); 持仓量:holding,linethick0; 资产:ASSET,NOAXIS,colorblue; end
|
-- 作者:董小球
-- 发布时间:2011/4/14 15:49:32
--
input:X(350,0.00001,1000),N(60,1,1000),E(10,1,1000),M1(1.5,0.01,100),M2(0.5,0.01,100); variable:AA=0; IF DATACOUNT-BARPOS=100 AND C>O AND AA=0 THEN BEGIN BUY(1,1,MARKET); AA:=AA+1; END ELSE IF DATACOUNT-BARPOS=100 AND C<O AND AA=0 THEN BEGIN BUYSHORT(1,1,MARKET); AA:=AA+1; END 开多以来的最高价:=HHV(H,ENTERBARS); 开空以来的最低价:=LLV(L,EXITBARS); 开多仓条件:=CLOSE>=开空以来的最低价+X; 平多仓条件:=CLOSE<=开多以来的最高价-X; 开空仓条件:=CLOSE<=开多以来的最高价-X; 平空仓条件:=CLOSE>=开空以来的最低价+X; 开多平空条件:=CLOSE>=开空以来的最低价+X AND REF("VOL.volume#MIN5",1)/REF("VOL.volume#MIN5",2)>=M1 OR "VOL.volume#MIN5"/REF("VOL.volume#MIN5",1)>=M1;//这里使用5分钟为例 平多开空条件:=CLOSE<=开多以来的最高价-X AND REF("VOL.volume#MIN5",1)/REF("VOL.volume#MIN5",2)<=M2 OR TIME-150000<E AND "VOL.volume#MIN5"/REF("VOL.volume#MIN5",1)<=M2;
IF DATACOUNT-BARPOS<100 THEN BEGIN IF HOLDING>=0 THEN BEGIN SELL(平多开空条件,HOLDING,market); BUYSHORT(平多开空条件,1,market); END IF HOLDING<=0 THEN BEGIN SELLSHORT(开多平空条件,HOLDING,market); BUY(开多平空条件,1,market); END 持仓量:holding,linethick0; 资产:ASSET,NOAXIS,colorblue; end
|