以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=174250) |
-- 作者:marks -- 发布时间:2020/2/11 13:30:17 -- [原创]请教开仓问题 请看如下代码开不了仓,在图表上也没有箭头显示,但是回测历史正常。 测试出来问题出在开仓次数:=1上,如果没有这行代码就可以开仓. 请问是什么原因。 VARIABLE:开仓次数=0; 初始开仓手数:=1; 多单开仓条件:=1; if holding=0 and 开仓次数=0 THEN begin 开多: buy(多单开仓条件,初始开仓手数,THISCLOSE); 止损位:=ENTERPRICE-止损跳点*MINDIFF; 开仓次数:=1; end |
-- 作者:FireScript -- 发布时间:2020/2/11 13:42:04 -- 你图表上肯定是有的,但是因为在第一个K,所以你可能没注意到。 如果上面这段就是完整代码得话,那么 开仓次数:=1; 这个加不加效果都是一样的。因为代码逻辑决定你这个只会开一次仓。
|
-- 作者:marks -- 发布时间:2020/2/11 15:20:56 -- 这个不是完整代码,我一条条的排到这的。我需要根据这个开仓次数做后续判断。 |
-- 作者:FireScript -- 发布时间:2020/2/11 15:46:20 -- 那就是了。 这个全局变量会限制这个地方只开仓一次。你需要在其他地方 比如平仓的时候 执行一个: 开仓次数:=0;
|
-- 作者:marks -- 发布时间:2020/2/11 15:48:57 -- 平仓后赋0有写,我现在单独拿出这一小段代码是开不了仓的,把开仓次数注释掉就能开。 |
-- 作者:FireScript -- 发布时间:2020/2/11 15:59:19 -- 你给出完整代码吧。否则我也不知道你这里其他地方什么逻辑。全局变量是很常规的用法,并无特殊之处。 |
-- 作者:marks -- 发布时间:2020/2/11 16:14:20 -- VARIABLE:开仓次数=0; VARIABLE: 回撤平仓跳点=10; 止损跳点:=20; 加仓间距:=10; 初始开仓手数:=1; 加仓倍数:=1; 加仓次数循环:=3; 空单开仓条件:=1; //回撤跳点评测1:=(DYNAINFO( 3)*初始开仓手数+DYNAINFO( 3)*加仓间距*加仓倍数*初始开仓手数)/(加仓倍数*初始开仓手数+初始开仓手数); //回撤跳点评测2:=DYNAINFO( 3)*加仓间距-回撤平仓跳点; if holding=0 and 开仓次数=0 THEN begin 开空: buyshort(1,初始开仓手数,MARKETR); 止损:=ENTERPRICE+止损跳点*MINDIFF; 开仓次数:=1; end //回撤出:=ENTERPRICE+回撤平仓跳点*MINDIFF; if holding<0 then begin
if c>=止损 then begin sellshort(holding<0,0,MARKETR); 开仓次数:=0; end if 开仓次数>1 then begin
if c>=ENTERPRICE+回撤平仓跳点*MINDIFF then begin
sellshort(holding<0,0,MARKETR);
开仓次数:=0;
end
end //----------------------------------------------------------------------------
if 0<开仓次数 and 开仓次数>=开仓次数%加仓次数循环 and 开仓次数%加仓次数循环<>0 then
begin
if c<=ENTERPRICE-加仓间距*MINDIFF THEN
begin
开空2:buyshort(1,entervol*加仓倍数,MARKETR);
开仓次数:=开仓次数+1;
end end if 0<开仓次数 and 开仓次数%加仓次数循环=0 then begin
if c<=ENTERPRICE-加仓间距*MINDIFF THEN
begin
开空1:buyshort(1,初始开仓手数,MARKETR);
开仓次数:=开仓次数+1;
end end end
|
-- 作者:FireScript -- 发布时间:2020/2/11 16:27:46 -- 你这个看效果不是正常的么。见下图: |
-- 作者:marks -- 发布时间:2020/2/11 16:30:21 -- 看图是正常的,真正SHIFT+Z跑的时候不开仓 |
-- 作者:FireScript -- 发布时间:2020/2/11 17:01:50 -- 有几个地方要明确下: 1.是完整代码 不开仓 还是只那单独的一部分程序化不开仓? 2.单独那部分代码。无论是注释还是保留 赋值为1的那一句代码。效果都是一样,你这里说注释了就开仓 这个现象和代码效果不是一致的。我建议你再确认下。 目前完整代码过了遍,应该不存在大问题。建议明天盘中再观察下再反馈下。
|