以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  策略编写求助区  (http://222.73.7.161/bbs/list.asp?boardid=11)
----  求编写。  (http://222.73.7.161/bbs/dispbbs.asp?boardid=11&id=12398)

--  作者:id773161
--  发布时间:2012/6/13 11:14:29
--  求编写。

1 赋值

 

求出4个品种1分钟周期上一根K线上的最高价 与 最低价

编写指标H

HH:=HHV(H,5);

 

引用:

ycuh:=stkindi(\'CU00\',\'H\',0,1,-1);
yruh:=stkindi(\'RU00\',\'H\',0,1,-1);
yznh:=stkindi(\'ZN00\',\'H\',0,1,-1);
ylh:=stkindi(\'L00\',\'H\',0,1,-1);

 

 

中间语句

求出 上面4个连续合约 最高值最大的一个品种做多

平多:如果该品种不是最大值 平仓

求出 上面4个连续合约  最高值最小的一个品种做空

平空:如果该品种不是最小值 平仓

 

哪位老师能用后台交易 写出来 谢谢 

 

对我而言难题:1 品种最大,最小的定义;

                     2 在开平仓语句里,如何做到多品种交易逻辑的准确性,开平仓控制等;

[此贴子已经被作者于2012-6-13 11:21:52编辑过]

--  作者:rushtaotao
--  发布时间:2012/6/13 11:20:55
--  
直接放进去吧  后台可以用stkindi函数
--  作者:id773161
--  发布时间:2012/6/13 11:31:26
--  
在线等解,谢谢各位老师了。
--  作者:just
--  发布时间:2012/6/13 13:36:02
--  帮我 看看有什么问题,图表交易没有信号,我想要平仓后马上反手交易

问题1

在后台里你可以写4组开平仓语句,用指定品种下单功能,例,

ycuh:=stkindi(\'CU00\',\'H\',0,1,-1);
yruh:=stkindi(\'RU00\',\'H\',0,1,-1);
yznh:=stkindi(\'ZN00\',\'H\',0,1,-1);
ylh:=stkindi(\'L00\',\'H\',0,1,-1);

 

 

if ycuh>yruh and ycuh>yznh and ycuh>ylh then begin

tbuy(tholding=0,1,mkt,0,0,\'\',\'cu00\');

end

 

问题2要如何控制。

 


--  作者:id773161
--  发布时间:2012/6/13 13:52:43
--  

后台交易里,多品种多策略交易,很容易开平仓混乱的,如何解决还有日内交易和非日内交易仓位读取问题


--  作者:id773161
--  发布时间:2012/6/13 14:19:44
--  

后台交易里,多品种多策略交易,很容易开平仓混乱的,如何解决还有日内交易和非日内交易仓位读取问题

 

大概我懂了,傻瓜写法就是多条件都写上去。

 

1

 

if  conda1 and var1>var2 then tbuy(1,1,mkt,0,0,\'\',\'sqcu00\');

if conda1 and not(var1>var2 ) then tbuy(1,1,mkt,0,0,\'\',\'sqru00\');

满足conda1的情况下,对引用的数值较大的合约下单

 

 

2

a1:=max(var1,var2);
a2:=max(var3,var4);
a3:=max(var5,var6);
a4:=max(var7,var8);
a5:=max(var9,var10);
a6:=max(var11,var12);
a7:=max(var13,var14);
a8:=max(var15,var16);
a9:=max(a1,a2);
a10:=max(a3,a4);
a11:=max(a5,a6);
a12:=max(a7,a8);
a13:=max(a9,a10);
a14:=max(a11,a12);
a15:=max(a13,a14);
conda1:=a15;

 

||

 
a1:=max(var1,max(var2,max(var3,max(var4,max(var5,max(var6,max(var7,max(var8,max(var9,max(var10,max(var11,max(var12,max(var13,max(var14,max(var15,var16)))))))))))))));
a2:=if(a1=var1,\'if00\',if(a1=var2,\'ru00\',if(a1=var3,\'cu00\',if(a1=var4,\'rb00\'........一直比较到var16以及所对应的品种合约代码))))
然后a2就是所要的品种合约代码

 

这是我求最大值的16个合约 (var1-var16) ,求出 conda1只是一个值,并不是指定的那个合约 (此办法在多品种下 会同时开多个仓出来)(逐K模式下很卡)

 

3

我的思路就是这么依次类推,希望能帮助你

var1:stkindi(\'CU00\',\'ypm.zd\',2,1,-1);
var1-1:=1;
var2:stkindi(\'RU00\',\'ypm.zd\',2,1,-1);
var2-2:=2;
var3:stkindi(\'if00\',\'ypm.zd\',2,1,-1);
var3-3:=3;
var4:stkindi(\'if01\',\'ypm.zd\',2,1,-1);
var4-4:=4;

variable:a1-1:0;
a1:=max(var1,var2);
a1-1:if(a1=var1,var1-1,var2-2);

variable:a2-2:0;
a2:=max(var3,var4);
a2-2:if(a2=var3,var3-3,var4-4);

也就是说,后台是序列模式的,因此你需要全局变量的话 你就要用EXTGBDATA( )。variable只能用在逐k线
 
4
 

各位老师,如果我用 a:=TINSORT(\'自选股\',\'ypm.zd\',0); 板块指标升序排列
                          b:=TINSORT(\'自选股\',\'ypm.zd\',1); 板块指标降序排列
此函数引用比较简单,但是我不知道怎么使用,

 

(此种方法最简单,但是后台测试也是同时开几个品种)

 

总结上述情况,

1

我个人觉得我开平仓的逻辑有问题。

2

中间语句的定义有问题

3

上面第3种不会,序列模式下的全局变量

[此贴子已经被作者于2012-6-13 14:21:19编辑过]

--  作者:id773161
--  发布时间:2012/6/13 14:35:48
--  

还有哪位老师能帮我看看第4种方法,如何实现

 

只做多头第一

 

和空头第一 

[此贴子已经被作者于2012-6-13 14:36:33编辑过]