以文本方式查看主题

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

--  作者:系统使用者
--  发布时间:2017/6/13 12:08:56
--  [求助]编写程序交易问题。
//交易系统 走完K线模式
if holding>0 and kkcond and not(islastbar) then sell(1,ss,marketr);
if holding<0 and kdcond and not(islastbar) then sellshort(1,ss,marketr);
if holding=0 and buycond and not(islastbar) then buy(1,ss,marketr);
if holding=0 and sellcond and not(islastbar) then buyshort(1,ss,marketr);
//用全局变量EXTGBDATA,实现信号消失处理功能 
if islastbar and tholding2<>holding then
 begin 
  if barpos=EXTGBDATA(\'kai\')+1 then//开仓信号消失,平原持仓
  begin
  sell(tholding2>0,ss,marketr);
  sellshort(tholding2<0,ss,marketr);
  EXTGBDATASET( \'kai\',0);
  end
  
  if barpos=EXTGBDATA(\'ping\')+1 then//平仓信号消失,平原持仓
  begin
  sell(holding>0,ss,marketr);
  sellshort(holding<0,ss,marketr);
  EXTGBDATASET( \'ping\',0);
  end    
 end
if holding>0 and kkcond and islastbar then 
begin
sell(1,ss,marketr);
EXTGBDATASET( \'ping\',BARPOS);
end
if holding<0 and kdcond and islastbar then 
begin
sellshort(1,ss,marketr);
EXTGBDATASET( \'ping\',BARPOS);
end
 上面是我编写想实现处理功能。实盘中不处理。
程序要求这样:
1)开多,开空,平多空采用走完K线模式。
2)处理情况:有时候出现开仓或者平仓后,信号消失,这样就需要处理原开仓的平仓处理,原仓位直接平掉。
3)要求不开启金子塔持仓同步功能就可以自动实现。
请帮忙编写?


[此贴子已经被作者于2017/6/13 12:09:49编辑过]

--  作者:wenarm
--  发布时间:2017/6/13 12:25:29
--  

抱歉能力有限。满足不了你的需求。


--  作者:系统使用者
--  发布时间:2017/6/13 12:46:41
--  
我是要求不开启你们的同步功能,就能使用自己编写的处理信号消失问题。
--  作者:系统使用者
--  发布时间:2017/6/13 12:48:46
--  
还有一个问题请教;
//止损止盈
 if enterbars>1 and l<=Tl-2*MINDIFF and holding>0 then sell(1,ss,marketr);
 if enterbars>1 and h>=Th+2*MINDIFF and holding<0 then sellshort(1,ss,marketr);
若信号消失了,这开仓历时还有效否?enterbars

--  作者:wenarm
--  发布时间:2017/6/13 12:54:51
--  

信号消失了,enterbars返回的就不是信号在的时候的值,而是消失后,当前历史上最近的开仓位置的值。


--  作者:系统使用者
--  发布时间:2017/6/13 13:44:50
--  
//交易系统 走完K线模式
temp_ll:=llv(l,2); temp_hh:=hhv(h,2);
if holding>0 and kkcond and not(islastbar) then sell(1,ss,marketr);
if holding<0 and kdcond and not(islastbar) then sellshort(1,ss,marketr);
if holding=0 and buycond and not(islastbar) then begin
   buy(1,ss,marketr);
   extgbdataset(\'kaiduo\',temp_ll); 
end
if holding=0 and sellcond and not(islastbar) then begin
   buyshort(1,ss,marketr);
   extgbdataset(\'kaikong\',temp_hh); 
end
//信号消失止损处理
 if tholding2<>holding and l<extgbdata(\'kaiduo\') then 
  begin 
    sell(holding>0,ss,marketr);
  end
 if tholding2<>holding and h>extgbdata(\'kaikong\') then 
  begin 
    sellshort(holding<0,ss,marketr);
  end   
     
if holding=0 then begin
 extgbdataset(\'kaikong\',drawnull);
 extgbdataset(\'kaiduo\',drawnull);
end

这样可以处理信号消失的单子?

--  作者:pyd
--  发布时间:2017/6/13 14:12:13
--  

不行,如果开仓信号消失了,是不会出平仓信号的,就不会执行”信号消失止损处理”的平仓动作。

 

--  作者:系统使用者
--  发布时间:2017/6/13 15:20:41
--  
使用extgbdataset(\'kaikong\',temp_hh); 记录当时开仓的高低点,止损不行?这个不会消失?
 if tholding2<>holding and l<extgbdata(\'kaiduo\') then 
  begin 
    sell(holding>0,ss,marketr);
  end


--  作者:wenarm
--  发布时间:2017/6/13 15:39:23
--  

你这种用法,在图表上只会造成历史信号不断变化。extgbdata只在最新值上有效。它发生变化,历史k线条件就会跟着变化。