以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=176123)

--  作者:圣啥塔内罗
--  发布时间:2020/5/19 13:37:05
--  [求助][原创]真心请教模型问题
刚转过了这个软件,编了个模型,有不少问题,

MA1:MA(C,5); 

MA5:MA(C,10);     

  

AMA1>MA5;

BMA1<MA5; 

  

A5:STKINDI(\'\',\'MA.A\',0,6,0);      //引用当下日周期ma1>ma5

B5:STKINDI(\'\',\'MA.B\',0,6,0);      //引用当下日周期ma1<ma5

  

Kd:=A AND A5;        开多条件   分钟线和日线同向      

Kk:=B AND B5;         开空条件  分钟线和日线同向

PD:=CROSS(MA5,MA1);    平多条件 死叉平

PK:=CROSS(MA1,MA5);     平空条件 金叉平

 

下面不知道写的对不对:

开多:BUY(KD and HOLDING=0,50%,THISCLOSE);  想表达开仓50%

平多:SELL(PD,1,THISCLOSE);                想表达全部平仓

:BUYSHORT(KK  and  HOLDING=0,50%,THISCLOSE);   想表达开仓50% 

平空:SELLSHORT(PK,1,THISCLOSE);                 想表达全部平仓


出来的信号和想的不一样,直接会有反向开仓,没有过滤掉,不知道哪错了,,求助


此主题相关图片如下:1111.png
按此在新窗口浏览图片


--  作者:FireScript
--  发布时间:2020/5/19 13:55:09
--  
1.不考虑日线的那个调用。其实你这里平空和开多,平多和开空条件是一致的。

CROSS(MA5,MA1) 的位置   BMA1<MA5;  也一定是满足的。


所以就看下面这部分了。这个是调用日线的结果了。但是如果你本身就是加载在日线了。那么A和A5是一样的,B和B5是一样的。
这个跨周期调用就没有用了。

A5:STKINDI(\'\',\'MA.A\',0,6,0);      //引用当下日周期ma1>ma5

B5:STKINDI(\'\',\'MA.B\',0,6,0);      //引用当下日周期ma1<ma5


2.全平写法不对。按照下面方式

开多:BUY(KD and HOLDING=0,50%,THISCLOSE); 

平多:SELL(PD,HOLDING,THISCLOSE);               

空:BUYSHORT(KK  and  HOLDING=0,50%,THISCLOSE); 

平空:SELLSHORT(PK,HOLDING,THISCLOSE); 



综上:

1.你的代码不适用于日线。因为本身就是日线,自然无法拿日线来过滤

2.全平的代码有问题。


--  作者:圣啥塔内罗
--  发布时间:2020/5/19 13:59:56
--  
谢谢FireScript版主的详细解答,我是想做60f和15f这两个周期来调用日线的数据,上面贴的图是60分钟的图形,
--  作者:FireScript
--  发布时间:2020/5/19 14:15:31
--  


是这样的。下面代码中,B满足,PD不一定满足,但是如果PD是满足的那么B一定是满足的。
Kk:=B AND B5;        
PD:=CROSS(MA5,MA1);   


那意思就是说如果平多满足了。 下面的的A5也满足,这时候就会反手。 你的跨周期调用是无法限定不反手操作的。

A5:STKINDI(\'\',\'MA.A\',0,6,0);      //引用当下日周期ma1>ma5







--  作者:FireScript
--  发布时间:2020/5/19 14:32:03
--  
 就是你看下A5或者B5那时候的值的情况。
--  作者:圣啥塔内罗
--  发布时间:2020/5/19 15:09:22
--  
引用版主分析:B满足,PD不一定满足,但是如果PD是满足的那么B一定是满足的。
Kk:=B AND B5;         
PD:=CROSS(MA5,MA1);    pd满足,B一定满足,没问题,但是B5不一定满足,为什么会开空呢,我设定的条件只有B5和B都满足才开空啊.



真不知道该怎么编写了:就是想表达共振开仓,小级别反向交叉平,难道跨周期调用解决不了这问题吗,还是我的逻辑不能形成闭环,请FIRESCRIPT帮忙改写;

Kd:=A AND A5;        开多条件:60分钟线和日线同向      

Kk:=B AND B5;         开空条件:60分钟线和日线同向

PD:=CROSS(MA5,MA1);    平多条件: 死叉平且A5中日线ma1>ma5

PK:=CROSS(MA1,MA5);     平空条件: 金叉平且B5中日线ma1<ma5


谢谢您Firescript



--  作者:圣啥塔内罗
--  发布时间:2020/5/19 15:10:41
--  
是应该看a5和b5当时的情况,但是反馈的结果是感觉没有引用到日线数据,,是不是我的软件不行,昨天刚下的是免费版本
--  作者:FireScript
--  发布时间:2020/5/19 15:20:07
--  
1.和免费版,没有关系。 你这里如果调用到了日线级别的指标,A5和B5肯定有值的。如果图表上没有值。你要补充下这个品种的日线数据。你可以看下A5,B5在图上是否有值。正常肯定 是有值才对的。

2.另外我想问下因为你调用的是系统自带的ma指标,这个指标里面是没有你这里定义的a和b。不知道你是否有在ma指标里面进行相应的修改了?
系统的ma里面代码是这样的。

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

3.“但是B5不一定满足,为什么会开空呢,我设定的条件只有B5和B都满足才开空啊.”是的。就是B5不一定满足,所以才会出现偶尔会反手。我本地这边加载看 就是部分信号是反手。  总之你先尝试解决下1,2的问题

--  作者:圣啥塔内罗
--  发布时间:2020/5/19 16:31:17
--  
哈哈,真是忘了,谢谢您,我马上试下,
--  作者:圣啥塔内罗
--  发布时间:2020/5/19 19:31:55
--  
系统ma改了,还是不行,还是平仓即反手
ma1:ma(c,1);
ma5:ma(c,10);
ma3:ma(c,n3);
ma4:ma(c,n4);

a:=ma1>ma5;
b:=ma1<ma5;

曲线特别的稳健,直奔右下角,反过来做,没准赚大钱.请版主再帮我分析下,
图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看