Support Board
Date/Time: Fri, 31 Jan 2025 14:47:01 +0000
Post From: Can you please add ACSIl two timeframe additive study
[2019-05-08 19:03:52] |
Sierra Chart Engineering - Posts: 104368 |
The code is old and poorly formatted. It was not developed by us: SCSFExport scsf_2TrendAdd(SCStudyInterfaceRef sc)
{ SCSubgraphRef EnterNow = sc.Subgraph[0], LTF = sc.Subgraph[1], TF = sc.Subgraph[2], R1 = sc.Subgraph[3], se5 = sc.Subgraph[12], se12 = sc.Subgraph[13], sr = sc.Subgraph[14], xe5 = sc.Subgraph[15], xe12 = sc.Subgraph[16], xr = sc.Subgraph[17], lc = sc.Subgraph[20], le5 = sc.Subgraph[21], le12 = sc.Subgraph[22], lr = sc.Subgraph[23], ple5 = sc.Subgraph[24], ple12 = sc.Subgraph[25], plr = sc.Subgraph[26]; if (sc.SetDefaults) { sc.GraphName="Two Timeframe Trend Additive"; EnterNow.Name="EnterNow"; LTF.Name="LTF"; TF.Name="TF"; R1.Name="R1"; se5.Name="se5"; se12.Name="se12"; sr.Name="sr"; xe5.Name="se5"; xe12.Name="se12"; xr.Name="sr"; lc.Name="lc"; le5.Name="le5"; le12.Name="le12"; lr.Name="lr"; ple5.Name="ple5"; ple12.Name="ple12"; plr.Name="plr"; sc.CalculationPrecedence = STD_PREC_LEVEL ; sc.DrawZeros=0; return; } /* This takes the trend from 5m and 30m using rsi>50 and ema1>ema2 for +ve When both trends are in the same direciton positive trend exists and price/value signals can be taken So it is the addition of 2 trends */ int i,p,p2,lp,hour,minute,second, minute2, as=sc.ArraySize-1, ST_Direction; int& li = sc.PersistVars->i1; int& offset = sc.PersistVars->i2; int& lastshifted = sc.PersistVars->i3; int& lastdot = sc.PersistVars->i4; float& LT_Direction = sc.PersistVars->f1; if(sc.UpdateStartIndex==0) { li=0; offset=5; lastshifted=0; LT_Direction=0; ST_Direction=0; } for (i=sc.UpdateStartIndex; i < sc.ArraySize; i++) { p=i-1; lp=li-1; p2=i-2; sc.BaseDateTimeIn[i-1].GetTimeHMS(hour, minute, second); sc.BaseDateTimeIn[i].GetTimeHMS(hour, minute2, second); if( (minute2 % 30)==0 || (((minute+5) % 30)==0 && (minute2 % 30)!=0) ) { //|| (fmod(minute+5,30)==0 && fmod(minute2,30)!=0) lc[li]=sc.BaseDataIn[SC_LAST][p]; sc.MovingAverage(lc, le5, MOVAVGTYPE_EXPONENTIAL, li, 5 ); sc.MovingAverage(lc, le12, MOVAVGTYPE_EXPONENTIAL, li, 12); sc.RSI(lc, lr, li, MOVAVGTYPE_SIMPLE, 20); if(lr[li]>50 && (le5[li]>le12[li] || (le5[li]==le12[li] && le5[lp]>le12[lp]))) LT_Direction=+1; else if(lr[li]<50 && (le5[li]<le12[li] || (le5[li]==le12[li] && le5[lp]<le12[lp]))) LT_Direction=-1; else LT_Direction=0; if(i<as) li++; } LTF[i]=LT_Direction/1.1; sc.MovingAverage(sc.BaseDataIn[SC_LAST], se5, MOVAVGTYPE_EXPONENTIAL, i, 5 ); sc.MovingAverage(sc.BaseDataIn[SC_LAST], se12, MOVAVGTYPE_EXPONENTIAL, i, 12); sc.RSI(sc.BaseDataIn[SC_LAST], sr, i, MOVAVGTYPE_SIMPLE, 20); if(sr[p]>50 && (se5[p]>se12[p] || (se5[p]==se12[p] && se5[p2]>se12[p2]))) TF[i]=+0.8; else if(sr[p]<50 && (se5[p]<se12[p] || (se5[p]==se12[p] && se5[p2]<se12[p2]))) TF[i]=-0.8; else TF[i]=0; EnterNow[i]=0; // if( sc.BaseDateTimeIn[i].GetTimeInSeconds()>=HMS_TIME(10,00,00) && sc.BaseDateTimeIn[i].GetTimeInSeconds()<=HMS_TIME(12,00,00) ) { if(LTF[i]>0 && TF[i]>0) EnterNow[i]=.6; else if(LTF[i]<0 && TF[i]<0) EnterNow[i]=-.6; // } } }; Sierra Chart Support - Engineering Level Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy: https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service: Sierra Chart Teton Futures Order Routing |