开拓者期货期权程序化系统交易论坛

标题: 文华版的SAR指标的计算,请高手指点. [打印本页]

作者: yk787    时间: 2013-2-5 16:54:32     标题: 文华版的SAR指标的计算,请高手指点.

本帖最后由 yk787 于 2013-2-28 12:36 编辑

SAR指标的计算公式:

1、 画SAR之前,首先要决定你开始画的第一天,是属于多头或空头趋势?
2、 如果第一天属于多头,则第一天的SAR一定是4天来的最低点(包括今天在内)。
3、 找出开始第一天的SAR之后,紧接着计算下一日的SAR:
下一日的SAR=第一天SAR+(0•02*XP)
XP=第一天的最高点—第一天的SAR
4、 第二天收盘时,又可以计算出第三天的SAR,如果第二天最高价>第一天最高价,则第三天的SAR=第二天SAR+(0•04*XP)
XP=第二天的最高点—第二天的SAR
只要最高价>前一日最高价,则其乘数因子一律增加0•02,如果一直累增下去,最高只能累增至0•2为止,之后一律以0•2为乘数因子。
如果最高价≤前一日最高价,则第三天的SAR和第二天的SAR相同,而且乘数因子也不必累加。
第三天收盘后,依上述步骤持续在每日价格下方画出SAR,直到某一天收盘价跌破SAR,则代表行情转为空头应卖出股票,而行情转为空头的当天,立即将四天来的最高点,做为次一日的空头SAR。


5、 反转后第二天的最低点如果≥前一天的最低点,则SAR和前一天相同。
注意!SAR虽然和前一天相,也必须在图形上画出来。
6、 反转后第二天的最低点若<前一天的最低点,则
第三天的SAR=第二天的SAR+0•02*XK。
XK=第二天的最低价—第二天的SAR。
第三天以后持续依照上述步骤,在每日价格上方画出SAR,直到某一天收盘价向上突破SAR,代表行情为多头应买进股票,而行情转为多头的当天,立刻按照2的步骤设定SAR。

作者: yk1234    时间: 2013-2-28 12:14:58

本帖最后由 yk1234 于 2013-3-6 16:00 编辑

文华版的SAR

Params
          Numeric AfStep(1.50);
                  Numeric AfLimit(2);
          Numeric Length(20);
Vars
          Numericseries Mysar;
          NumericSeries Mysar1;
          NumericSeries Mysar2;
          NumericSeries HH;
          NumericSeries LL;
          NumericSeries MaxH;
          NumericSeries MinL;
          Numeric       Xp;
          Numeric       Xk;
          Numeric       J;
          
          
Begin
                 HH = HighestFC(H,Length);
                 LL = LowestFC(L,Length);
         If(CurrentBar< Length+1)
            {
                  Mysar = 0.5*(L+H);
                  Mysar1 = 0;
                  Mysar2 = 88888;
                  MaxH  = HH;
                  MinL  = LL;
                     }Else
                 If(CurrentBar == Length+1)
            {
                       If(H<MaxH)
                       {
                         MaxH = Max(HH,MaxH[1]);
                         MinL = Min(LL,MinL[1]);
                         Mysar = MaxH;
                         Mysar1 = MaxH;
                         Mysar2 = 88888;
                         SetGlobalVar(0,CurrentBar);
                   }Else
                   {
                         MaxH = Max(HH,MaxH[1]);
                         MinL = Min(LL,MinL[1]);
                         Mysar = MinL;
                         Mysar1 = 0;
                         Mysar2 = MinL;
                     SetGlobalVar(0,CurrentBar);
                   }
                }Else
      If(CurrentBar > Length+1)
        {
                  J = CurrentBar - GetGlobalVar(0);
                  If(J == 0)
           {
                        If(Mysar1 > 0)
                         {
                           MaxH = Max(H,MaxH[1]);
                           MinL = Min(L,MinL[1]);
                           Mysar = MaxH;
                           Mysar1 = MaxH;
                           Mysar2 = 88888;
                         }Else
                        If(Mysar2<88888)
                     {
                           MaxH = Max(H,MaxH[1]);
                           MinL = Min(L,MinL[1]);
                           Mysar = MinL;
                           Mysar1 = 0;
                           Mysar2 = MinL;
                         }
           }Else
                  If( J>0 )
                   {                          
                         If(H[1] <= Mysar1[1])
              {
               
                                Xp = L[1] - Mysar1[1];
                                If(J<11)
                                 {
                                   Mysar1 = Mysar1[1]+AfStep*j*XP/100;
                                   MaxH = Min(H,MaxH[1]);
                                   MinL = Min(L,MinL[1]);
                                   Mysar2 = 88888;                          
                               If(H > Mysar1)
                    {
                                         
                                         SetGlobalVar(0,CurrentBar);    //满足条件的Bar索引号//
                     MaxH = Max(H,MaxH[1]);
                                 MinL = Min(L,MinL[1]);
                                 Mysar1 = 0;
                                 Mysar2 = MinL;                                         
                                         Return;
                                        }
                 }Else
                                 {
                   Mysar1 = Mysar1[1]+AfLimit*XP/10;
                                   MaxH = Min(H,MaxH[1]);
                                   MinL = Min(L,MinL[1]);
                                   Mysar2 = 88888;               
                               If(H > Mysar1)
                    {
                                         
                                         SetGlobalVar(0,CurrentBar);    //满足条件的Bar索引号//
                     MaxH = Max(H,MaxH[1]);
                                 MinL = Min(L,MinL[1]);
                                 Mysar1 = 0;
                                 Mysar2 = MinL;                                         
                                         Return;
                                        }
                             }
              }Else
                        If(Low[1] >= Mysar2[1])
                          {  
                               
                            Xk =High[1] - Mysar2[1];
                                If(J<11)
                                 {
                                   Mysar2 = Mysar2[1]+AfStep*j*Xk/100;
                                   MaxH = Max(H,MaxH[1]);
                                   MinL = Max(L,MinL[1]);
                                   Mysar1 = 0;                          
                               If(Low < Mysar2)
                    {
                                         
                                         SetGlobalVar(0,CurrentBar);    //满足条件的Bar索引号//
                     MaxH = Max(H,MaxH[1]);
                                 MinL = Max(L,MinL[1]);
                                 Mysar1 = MaxH;
                                 Mysar2 = 88888;                                         
                                         Return;
                                        }
                 }Else
                                 {
                   Mysar2 = Mysar2[1]+AfLimit*Xk/10;
                                   MinL = Max(L,MinL[1]);
                                   MaxH = Max(H,MaxH[1]);
                                   Mysar1 = 0;                          
                               If(Low < Mysar2)
                    {
                                          
                                         SetGlobalVar(0,CurrentBar);    //满足条件的Bar索引号//
                     MaxH = Max(H,MaxH[1]);
                                 MinL = Max(L,MinL[1]);
                                 Mysar1 = MaxH;
                                 Mysar2 = 88888;                                         
                                         Return;
                                        }
                             }                                                       
                          }

             If(Mysar1 > 0)
                         {
                       
                           Mysar = Mysar1;                       
                         }Else
                        If(Mysar2<88888)
                     {
                          
                           Mysar = Mysar2;
                         }
                                                 
                   }
                }
                PlotNumeric( "1" , Mysar) ;
                End
作者: yk787    时间: 2013-2-28 12:20:59

本帖最后由 yk787 于 2013-2-28 12:35 编辑

谢谢
作者: lansong    时间: 2021-6-11 15:11:29

yk1234 发表于 2013-2-28 12:14
文华版的SAR

Params

这个转折的第一天不显示SAR值




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2