均线上穿下穿检查函数

2016-06-06 20:00
程序化

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

标签:MATLAB    MATLAB量化投资    price2    price1    

点击切换 到互动模式(当前为阅读模式)