均线上穿下穿检查函数

by faruto

检测两根均线上穿、下破的函数,一些基本的东西,高手绕行。

这里上穿定义:



% 上穿定义:


%   Price1(Index)=Price2(Index-2)

举例来说:对于5日均线MA5和20日均线MA20,对于检查点 Index,要求

在检查点Index,MA5>MA20,

前一个点Index-1,MA5>MA20,

前两个点Index-2,MA5MA20 就是上穿,之所以要求 前一个点Index-1,MA5>MA20,和 在检查点Index,MA5>MA20,是为了对于上穿进行确认,防止假突破。

对于下穿(下破),类似。

上穿检查MATLA代码:



function CrossOver_Flag = CrossOver(Price1, Price2, Index)


% 上穿检查


% by liyang 2011/12/13


% farutoliyang@gmail.com


% Input:


%       Price1: 输入的序列1


%       Price2: 输入的序列2


%       Index: 检查位置 


% Output:


%       CrossOver_Flag: 上穿检查结果


%            CrossOver_Flag = 1 在Index索引处上穿


%            CrossOver_Flag = 0 在Index索引处没有上穿


% 上穿定义:


%   Price1(Index)>Price2(Index) && Price1(Index-1)>Price2(Index-1) 


%   &&  Price1(Index-2)= 3');


end


%% 上穿检查


CrossOver_Flag = Price1(Index) > Price2(Index) ...


                && Price1(Index-1) > Price2(Index-1) ...


                &&  Price1(Index-2) =Price2(Index-2)


%% 输入参数检查


error(nargchk(3, 3, nargin));


if Index = 3');


end


%% 下穿检查


CrossUnder_Flag = Price1(Index) = Price2(Index-2);

下穿检查(下破检查)matlab代码:



function CrossUnder_Flag = CrossUnder(Price1, Price2, Index)


% 下穿检查(下破检查)


% by liyang 2011/12/13


% farutoliyang@gmail.com


% Input:


%       Price1: 输入的序列1


%       Price2: 输入的序列2


%       Index: 检查位置 


% Output:


%       CrossUnder_Flag: 上穿检查结果


%            CrossUnder_Flag = 1 在Index索引处下穿


%            CrossUnder_Flag = 0 在Index索引处没有下穿


% 上穿定义:


%   Price1(Index)=Price2(Index-2)


%% 输入参数检查


error(nargchk(3, 3, nargin));


if Index = 3');


end


%% 下穿检查


CrossUnder_Flag = Price1(Index) = Price2(Index-2);

再看一下TB平台下上穿和下破的代码:

TB_CrossOver



//------------------------------------------------------------------------


// 简称: CrossOver


// 名称: 求是否上穿


// 类别: 用户函数


// 类型: 内建函数


// 输出: 布尔型


//------------------------------------------------------------------------


Params


        NumericSeries Price1(1); 


        NumericSeries Price2(1);


Vars


        Bool Con1(False);


        Bool PreCon(False);


        Numeric Counter(0);


Begin


        If(Price1 > Price2)


        {


                Counter = 1;  


                Con1 = Price1[1] == Price2[1];          


                While (Con1 and Counter  Price2[Counter];


                Return PreCon;


        }Else


        {


                Return False;


        }


End


//------------------------------------------------------------------------


// 编译版本        GS2010.12.08


// 版权所有        TradeBlazer Software 2003-2010


// 更改声明        TradeBlazer Software保留对TradeBlazer平


//                        台每一版本的TradeBlazer公式修改和重写的权利


//------------------------------------------------------------------------

关键字:MATLAB, MATLAB量化投资, price2, price1

原文发布于宽客论坛,点击阅读原文

风险提示及免责条款

市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部