// Downloaded From https://www.WiseStockTrader.com _SECTION_BEGIN("Price 396"); SetChartBkColor(colorGrey50); _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%){{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) )); SelPds = ParamList("Periods:", "34,55,89,144",0); if( SelPds == "34" ) Pds= 34; if( SelPds == "55" ) Pds= 55; Middle = EMA(C,pds); Himid = EMA(H,Pds); Lomid = EMA(L,Pds); UpperBand = Middle + 3.5 * ATR(Pds); UpperBand1 = Middle + 1.75 * ATR(Pds); LowerBand = Middle - 3.5 * ATR(Pds); LowerBand1 = Middle - 1.75 * ATR(Pds); Plot(C,"",colorBlack,styleCandle); Plot(Middle, "Middle",colorCustom12,styleThick); Plot(Himid, "",colorCustom12,styleDashed); Plot(Lomid, "",colorCustom12,styleDashed); Plot(UpperBand, "Upper",colorGold,styleThick); Plot(UpperBand1, "",colorGold,styleDashed); Plot(LowerBand, "Lower",colorGold,styleThick); Plot(LowerBand1, "",colorGold,styleDashed); PlotOHLC(Lomid,Himid,Lomid,Himid,"",ColorRGB(230,200,200),styleCloud | styleNoLabel); _SECTION_END(); _SECTION_BEGIN("Price 3150"); // /* ********************************** // // Code to automatically identify pivots // // ********************************** */ // // // -- what will be our lookback range for the hh and ll? // // farback=Param("How Far back to go",100,50,5000,10); // // nBars = Param("Number of bars", 12, 5, 40); // // // -- Title. // // Title = Name() + " (" + StrLeft(FullName(), 15) + ") O: " + Open + ", // // H: " + High + ", L: " + Low + ", C: " + Close; // // // -- Plot basic candle chart // // PlotOHLC(Open, High, Low, Close, // // "BIdx = " + BarIndex() + // // "\n" + "O = " + O + "\n"+"H = "+ H + "\n"+"L = " + L // // + "\n"+"C ", // // colorBlack, styleCandle); // // GraphXSpace=7; // // // -- Create 0-initialized arrays the size of barcount // // aHPivs = H - H; // // aLPivs = L - L; // // // -- More for future use, not necessary for basic plotting // // aHPivHighs = H - H; // // aLPivLows = L - L; // // aHPivIdxs = H - H; // // aLPivIdxs = L - L; // // nHPivs = 0; // // nLPivs = 0; // // lastHPIdx = 0; // // lastLPIdx = 0; // // lastHPH = 0; // // lastLPL = 0; // // curPivBarIdx = 0; // // // -- looking back from the current bar, how many bars // // // back were the hhv and llv values of the previous // // // n bars, etc.? // // aHHVBars = HHVBars(H, nBars); // // aLLVBars = LLVBars(L, nBars); // // aHHV = HHV(H, nBars); // // aLLV = LLV(L, nBars); // // // -- Would like to set this up so pivots are calculated back from // // // last visible bar to make it easy to "go back" and see the pivots // // // this code would find. However, the first instance of // // // _Trace output will show a value of 0 // // aVisBars = Status("barvisible"); // // nLastVisBar = LastValue(Highest(IIf(aVisBars, BarIndex(), 0))); // // _TRACE("Last visible bar: " + nLastVisBar); // // // -- Initialize value of curTrend // // curBar = (BarCount-1); // // curTrend = ""; // // if (aLLVBars[curBar] < // // aHHVBars[curBar]) { // // curTrend = "D"; // // } // // else { // // curTrend = "U"; // // } // // // -- Loop through bars. Search for // // // entirely array-based approach // // // in future version // // for (i=0; i lastHPIdx) { // // // -- Bar and price info for candidate pivot // // candIdx = curBar - aHHVBars[curBar]; // // candPrc = aHHV[curBar]; // // if ( // // lastHPH < candPrc AND // // candIdx > lastLPIdx AND // // candIdx < curBar) { // // // -- OK, we'll add this as a pivot... // // aHPivs[candIdx] = 1; // // // ...and then rearrange elements in the // // // pivot information arrays // // for (j=0; j candPrc AND // // candIdx > lastHPIdx AND // // candIdx < curBar) { // // // -- OK, we'll add this as a pivot... // // aLPivs[candIdx] = 1; // // // ...and then rearrange elements in the // // // pivot information arrays // // for (j=0; j lastHPIdx) { // -- Bar and price info for candidate pivot candIdx = curBar - aHHVBars[curBar]; candPrc = aHHV[curBar]; if ( lastHPH < candPrc AND candIdx > lastLPIdx AND candIdx < curBar) { // -- OK, we'll add this as a pivot... aHPivs[candIdx] = 1; // ...and then rearrange elements in the // pivot information arrays for (j=0; j candPrc AND candIdx > lastHPIdx AND candIdx < curBar) { // -- OK, we'll add this as a pivot... aLPivs[candIdx] = 1; // ...and then rearrange elements in the // pivot information arrays for (j=0; j