Login Page - Create Account

Support Board


Date/Time: Sun, 22 Dec 2024 08:23:44 +0000



Post From: User Discussion: ACSIL for Gap studies

[2015-04-02 03:55:11]
Kiwi - Posts: 375
Do gaps matter in your tradable?

Recency often makes me think that they do for M1 HSI but a study will show you whether its true or not. Here's some code you can use in a dll (modify as you will) that shows gaps between close and the next low or high until they are filled or the day ends.

Note that you'll need to change the hours ... mine is based on 2 hsi sessions.


/***********************************************************************/
SCSFExport scsf_gap(SCStudyGraphRef sc)
{
SCSubgraphRef   gtop = sc.Subgraph[0], gbot = sc.Subgraph[1], gp = sc.Subgraph[5];
SCSubgraphRef   o0 = sc.Subgraph[7], o1 = sc.Subgraph[8];
if (sc.SetDefaults) {
    sc.GraphName="Gap";
    sc.StudyDescription="";
    gtop.Name="Gt";
    gbot.Name="Gb";
    gp.Name="Gap";
    o0.Name="0";
    o1.Name="1";
    sc.DrawZeros=0;
    sc.GraphRegion=0;
    sc.FreeDLL = 1;
    return;
  }
  
  int    i, j, gap;
  float  gaph, gapl, gapc;
  SCBaseDataRef DIn = sc.BaseDataIn;      
  int const hx = 1, lx = 2, cx = 3;

  for (i=sc.UpdateStartIndex; i < sc.ArraySize; i++) {
    gtop[i]=0; gbot[i]=0; int p=i-1;
    if((sc.BaseDateTimeIn[i].GetTime()>HMS_TIME(9,55,00) && sc.BaseDateTimeIn[i].GetTime()<HMS_TIME(12,30,00))
      || (sc.BaseDateTimeIn[i].GetTime()>HMS_TIME(14,32,00) && sc.BaseDateTimeIn[i].GetTime()<HMS_TIME(16,15,00)))
    {
      int const lookback=2;
      gap=+1;
      gapl=DIn[cx][i-lookback];
      gaph=DIn[lx][i-lookback+1];
       for(j=i;j>i-lookback;j--) { // looking for gap up
          if(DIn[lx][j]<=gapl) gap=0; else if(DIn[lx][j]<gaph) gaph=DIn[lx][j];
        }
      if(gap==0) {
        gap=-1;
        gaph=DIn[cx][i-lookback];
        gapl=DIn[hx][i-lookback+1];
        for(j=i;j>i-lookback;j--) { // looking for gap down
          if(DIn[hx][j]>=gaph) gap=0; else if(DIn[hx][j]>gapl) gapl=DIn[hx][j];
        }
      }
      
      if(gap==+1) for(j=i;j>i-lookback;j--) { gtop[j]=gaph; gbot[j]=gapl; } else
      if(gap==-1) for(j=i;j>i-lookback;j--) { gtop[j]=gapl; gbot[j]=gaph; }
      gp[i]=gap;
      if(gp[p]==+1 && DIn[lx][i]>=gtop[p]) { gtop[i]=gtop[p]; gbot[i]=gbot[p]; gp[i]=gp[p]; } else
      if(gp[p]==-1 && DIn[hx][i]<=gbot[p]) { gtop[i]=gtop[p]; gbot[i]=gbot[p]; gp[i]=gp[p]; }
    }
  }
}




Here's what it draws.

http://i.imgur.com/w9TREkG.png