以文本方式查看主题

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

--  作者:凯奇
--  发布时间:2019/12/3 15:59:03
--  跨周期优化时结果一模一样
老师好。用下面这个公式,做股票策略优化时。输出的结果都是一模一样的。优化的时候步差也够大的。请老师们帮忙修改一下,谢谢
       
VARIABLE:a:=0;
sa1:=STKINDI(\'\',\'aaa1.aa\',0,8);
sa2:=STKINDI(\'\',\'aaa1.aa1\',0,8);
sa3:=STKINDI(\'\',\'aaa1.aa2\',0,8);
sa4:=STKINDI(\'\',\'aaa1.aa3\',0,8);
sa5:=STKINDI(\'\',\'aaa1.aa4\',0,8);

sa12:=STKINDI(\'\',\'aaa1.aa\',0,7);
sa22:=STKINDI(\'\',\'aaa1.aa1\',0,7);
sa32:=STKINDI(\'\',\'aaa1.aa2\',0,7);
sa42:=STKINDI(\'\',\'aaa1.aa3\',0,7);
sa52:=STKINDI(\'\',\'aaa1.aa4\',0,7);

sas:=sa1>sa2 and sa2>sa3 and sa3>sa4 and sa4>sa5;
sas2:=sa12>sa22 and sa22>sa32 and sa32>sa42 and sa42>sa52;
sb1:=STKINDI(\'\',\'aaa2.aa\',0,8);
sb2:=STKINDI(\'\',\'aaa2.aa1\',0,8);
sb3:=STKINDI(\'\',\'aaa2.aa2\',0,8);
sb4:=STKINDI(\'\',\'aaa2.aa3\',0,8);
sb5:=STKINDI(\'\',\'aaa2.aa4\',0,8);

sb12:=STKINDI(\'\',\'aaa2.aa\',0,7);
sb22:=STKINDI(\'\',\'aaa2.aa1\',0,7);
sb32:=STKINDI(\'\',\'aaa2.aa2\',0,7);
sb42:=STKINDI(\'\',\'aaa2.aa3\',0,7);
sb52:=STKINDI(\'\',\'aaa2.aa4\',0,7);

sbs:=sb1>sb2 and sb2>sb3 and sb3>sb4 and sb4>sb5;
sbs2:=sb12>sb22 and sb22>sb32 and sb32>sb42 and sb42>sb52;

sc1:=STKINDI(\'\',\'aaa3.GL(Q,W,R,M,P)\',0,7);
sc2:=STKINDI(\'\',\'aaa3.GL\',0,6);
sc3:=sum(sc2,5)>0;



开多平空条件:=WEEKDAY>2 and sc1 and sc3 and sbs and sbs2 and sas and sas2;
开空平多条件:=c<ma(c,30) ;
SELL(开空平多条件 AND HOLDING>0,HOLDING,MARKET);
if 开多平空条件 AND HOLDING=0 then 
begin
buy(1,1,MARKET);
n:=close;
end


下面是被引用的公式

新建公式  命名为aaa1,代码如下:
aa:ma(c,30);
aa1:ma(c,60);
aa2:ma(c,90);
aa3:ma(c,120);
aa4:ma(c,250);

新建公式  命名为aaa2,代码如下:
aa:ma(v,30);
aa1:ma(v,60);
aa2:ma(v,90);
aa3:ma(v,120);
aa4:ma(v,250);

新建公式  命名为aaa3,代码如下:
AA:=CROSS( C, REF(HHV(C,Q),1)  ) AND C>=HHV(C,W) ;
TJ1:=COUNT(AA,20)<=4  AND C=HHV(C,R) AND BARSLAST(L=LLV(L,M))>P; 
TJ2:=TJ1 AND NOT(REF(TJ1,1));
GL:COUNT(TJ2,60)<=5 AND TJ2;


--  作者:FireScript
--  发布时间:2019/12/3 16:03:29
--  
 你优化的是哪个变量?你这里进行优化时候都没有可以优化的参数啊。
--  作者:FireScript
--  发布时间:2019/12/3 16:03:59
--  

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



--  作者:凯奇
--  发布时间:2019/12/3 16:10:55
--  
对不起 我不知该如何上传图片


--  作者:凯奇
--  发布时间:2019/12/3 16:11:40
--  
对不起,我不知道如何上传图片。
--  作者:FireScript
--  发布时间:2019/12/3 16:25:15
--  
 你先文字描述下你的问题。传图不方便可以在QQ群里找客服帮你上传下。
官方群:309773613

--  作者:凯奇
--  发布时间:2019/12/3 16:25:52
--  图片已经上传 请老师帮忙看看。谢谢老师
图片已经上传 请老师帮忙看看。谢谢老师
图片点击可在新窗口打开查看此主题相关图片如下:111.jpg
图片点击可在新窗口打开查看

--  作者:凯奇
--  发布时间:2019/12/3 16:34:15
--  问题描述
问题是这样的,老师,在引用的AAA3,这个指标中,这是跨周期引用,引用的是周线的。嗯,在优化的时候,优化出来的结果都是一模一样的,就跟复制粘贴一样。每个数据组合出来的结果都是一样的。我的问题就是说,能使这些数据不一样。这样才能达到优化的目的  谢谢老师。
--  作者:FireScript
--  发布时间:2019/12/3 16:47:38
--  
你这优化的参数在交易指标中没有直接用到啊。 我知道你是要优化被引用指标的几个参数。

先看下stkindi函数说明的这部分内容,你大概就能明白问题所在,其一是你在交易策略里面没有传递参数,二是传递参数需要一些特殊处理,处理方式就是下面这部分内容说明:

若参数为数字变量,那么需要有个字符串转换的过程
s:=5;
m:=NUMTOSTR(s,0);//NUMTOSTR函数将数字转换到字符串,再带入变量中
vola:stkindi(\'if10\',\'ATR.ATR(\'&m&\')\',0,6,-1);//计算IF10合约的日线周期指标ATR的ATR指标线,传递参数m值为5。
//第2个参数\'\'里的是文本,由三部分组成:\'ATR.ATR(\'和m还有\')\',这三部分由两个连接符号&连接起来,实现对数值参数的文本传输。
引用数据时,需要实现确认被引用品种周期数据齐全,再首次使用或者在不确定时,请手工进行数据补充工作.
当周期参数为25或26时取设置中默认的等价等量设置,要注意使用不当(当等价等量数值过大)可能会造成未来数据引用!
所属函数组:引用函数

--  作者:凯奇
--  发布时间:2019/12/3 17:13:57
--  谢谢
谢谢老师,细致的,解答