| 以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=183359)  | 
    
| --  作者:Ritter -- 发布时间:2020/12/8 13:39:01 -- [求助]请老师帮忙编写 请老师帮忙更改一下下面的代码: 
			大概思路是满足开仓和加仓条件后分别进场(最多进场5次),进场之后,再根据每次的进场价设置对应的止损位; input:num(5,1,10,1),ZS(0.009,0.001,0.02,0.001); VARIABLE : TURTLEUNITS=0 ;
				 VARIABLE : POSITION=0 ; IF POSITION=0 THEN BEGIN 
					//开仓 
					IF  B_COND  THEN BEGIN 
					BUY(HOLDING=0,CW%,MARKET); 
					POSITION=1; 
					TURTLEUNITS=1; 
					END IF POSITION=1  THEN BEGIN 
		//加仓 
			WHILE JD AND  TURTLEUNITS<=NUM DO BEGIN 
			BUY(HOLDING>0,CW%,MARKET); 
			TURTLEUNITS=TURTLEUNITS+1; 
			END 
			//止损 
			WHILE TURTLEUNITS>0  AND ( ENTERPRICE-C)>C*ZS DO BEGIN 
			SELL(1,ENTERVOL,MARKET); 
			TURTLEUNITS=TURTLEUNITS-1;
			 
			END 
			IF 
			TURTLEUNITS=0 THEN BEGIN 
			POSITION=0; 
			END END
			 
         | 
    
| --  作者:FireScript -- 发布时间:2020/12/8 13:49:07 -- 上面的这段代码实现不了的。循环里面的信号虽然可以在同一个K的同一个下单语句下出多个,但实际交易时候只会下一次,其他信号直接被忽略掉的。目前只有后台程序化才能在同一个K内在同一个下单语句上执行多次下单。  | 
    
| --  作者:FireScript -- 发布时间:2020/12/8 13:56:44 -- 你不要参考上面那个代码,你直接回退一步 提出你的原始需求,从你原始需求出发思路解决方案。  | 
    
| --  作者:Ritter -- 发布时间:2020/12/8 14:04:30 -- 不需要在同一根K线上实现,而且我是K线走完模式下的; 以多头突破为例:第一次突破开仓,第二次突破加仓....第五次突破加仓; 再根据每次的开仓价设置对应的止损价,分别触及止损后逐个离场;( ENTERPRICE-C)>C*ZS  请老师帮忙编写一下,我写的实现不了。 
         | 
    
| --  作者:FireScript -- 发布时间:2020/12/8 14:18:35 --  1.那你这个最多限制五次是怎么限制的。同一个交易日限制五次?日内收盘时候是否需要清仓?不清仓的话,可能影响次日开仓加仓逻辑的。  2.没办法分别止损的。只能根据持仓均价去止损平仓。上面那个代码里面的方式只能体现思路,不能实际奏效。  | 
    
| --  作者:Ritter -- 发布时间:2020/12/8 15:02:18 -- 有没有其它办法或者数组去存每次开仓的价格呢? 
         | 
    
| --  作者:FireScript -- 发布时间:2020/12/8 15:35:03 -- 1.循环不能实现限制开仓次数的,还额外消耗不必要的资源消耗。原因很简单,上面那个循环每次执行都是在一个K上的。它不是跨K线的。如果是一个完整的策略,这个循环的结果就是在一个K上出五个信号。而且这五个信号,仅仅能执行一个。 限制交易次数只能用全局变量去控制,但是每次限制次数达到了,你如果不选择时机进行重置,那么这个策略后续就没有信号了。也就是下面这个例子里的做法,这个是日内限制次数的,也可以拓展下的。比如在全部止损完成之后,重新运行开仓。 http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=173541&page=2 2.这个真没有办法。数组也不行,逻辑太复杂,需要考虑的情况太多了。很难有个稳健的解决方式。这个问题很早就有人提过的,当时也尝试过,最后发现是个爬不出来的坑。主要是我们的数值目前其实只能做些简单的需求,复杂的都只能pass.  |