Simple Coding Help - No Promise.

Nehal_s143

Well-Known Member
Hi

I want to plot Swing/Pivot High Low levels of Daily Chart into intraday chart, I am very much confused how to use Expand Time Frame command and where to use in this afl ? please help


Pivot High/Low Levels on Daily Chart


Wanted to plot above levels on Intraday Chart




AFL Code

_SECTION_BEGIN("Pivot High Pivot Low Orignal");

SetBarsRequired(350, -0);
// ------------- EazyTradePlus V1.1
SetChartOptions(0,chartShowDates|chartWrapTitle);
AboveUBB =0;
SellSignal=0;
BuySignal=0;
//--------------------------------EazyTradePlus V1.1 Main AFL
SetChartBkColor(ParamColor("Outer panel color ",colorLightYellow)); // color of outer border
SetChartBkGradientFill( ParamColor("Inner panel color upper half", colorBlack),
ParamColor("Inner panel color lower half", colorDarkOliveGreen)); // color of inner panel
//user parameters
parmPlotScoreCard = ParamToggle("Plot KPScoreCard", "No|Yes", 1);
parmPlotA900AutoStop = ParamToggle("Plot A900/AutoStop", "No|Yes", 0);
parmA900Color = ParamColor("A900 Color", colorWhite);
parmA900Style = ParamStyle("A900 Style", styleLine, maskAll);
parmAutoStopColor = ParamColor("AutoStop Color", colorYellow);
parmAutoStopStyle = ParamStyle("AutoStop Style", styleLine, maskAll);
parmPPTextColor = ParamColor("PP Text color", colorBlack);
parmPPTrndColorUp = ParamColor("PP Trend Up color", ColorRGB(167,224,243) );
parmPPTrndColorDn = ParamColor("PP Trend Dwn color", ColorRGB(255,192,203) );
parmPPTextOffSet = Param("PP OffSet", 0.60, 0.40, 1.5, 0.1);
parmTickMultipler = Param("M/W tick allowance", 1, 0, 10, 1);
parmA900AutoStopX = ParamToggle("Plot A900/AutoStop Cross", "No|Yes");
parmA900AutoStopColorX = ParamColor("A900/AutoStop Cross Color", colorBlack);
ParmSCThreshold = Param("ScoreCard Threshold", 3, 1, 9, 1);
parmVoice = ParamToggle("Voice 123 Setups", "No|Yes", 0);
parmAlert = ParamToggle("Alert 123 Setups", "No|Yes", 0);
parmPivotPop = ParamToggle("PivotPop", "No|Yes", 1);
parmBarCancel = Param("Bar Cancel", 7, 1, 20, 1);
parmWaterLevelColor = ParamColor("WalterLevel Color", ColorRGB(127,255,212));
parmWaterLevelStyle = ParamStyle("WaterLevel Style", styleLine, maskAll);
parmBBPeriod = Param("Bollinger Band Period", 10, 2, 30, 1);
parmBBSD = Param("bollinger Band SD", 0.8, 0.2, 3.0);
ParmPlotPPIndicators = ParamToggle("Plot Pivot Pop indicators", "No|Yes", 0);
parmBBColor = ParamColor("BBands Color", colorBlack);
parmBBStyle = ParamStyle("BBands Style", styleLine, maskAll);

ParmDebug = ParamToggle("Debug", "No|Yes", 0);

// constants
_N(PaneName = Name() + Interval(2)+ _SECTION_NAME());
_N(NewBarName = "NewBar" + PaneName);

//functions
function NewBarP()
{
PrevDT = StaticVarGet( NewBarName);
DT = LastValue(DateTime());
StaticVarSet( NewBarName,DT);
return DT != PrevDT;
}
function MRoundP(Number, Multiple )
{
if(Multiple == 0 )
{

xMultiple = 0.01; }
else
{
xMultiple = Multiple;
}
Divided = Number / xMultiple;
intDivided = int(Divided);
intDivided = intDivided + round(Divided - intDivided);
return intDivided * xMultiple;
}

//miscellaneous setups
ObjAB = CreateObject("Broker.Application");
ticker = objAB.Stocks(Name() );
if(ticker.TickSize == 0)
{
TickValue = 0.01; //set TickValue to a penney
}
else
{
TickValue = ticker.TickSize; // use Tick Size for this symbol
}
NewBarSignal = NewBarP();
// KP Indicators
KPA900 = E_TSKPA900(Close);
KPAutoStop = E_TSKPAUTOSTOP(High,Low,Close);
Ctmpl = E_TSKPCOLORTMPL(Open,High,Low,Close,Volume); //ScoreCard
KPScoreCard = 0;
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd0 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd1 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd2 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd3 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd4 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd5 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd6 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd7 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd8 > 0, 1, -1);

if(parmDebug == 1)
{
printf("a900: %0.6f% \nAutoStop: %0.6f%\nScoreCard: %0.0f%\n", KPA900, KPAutoStop, KPScoreCard);
}
if(parmPlotScoreCard == 1)
{
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g% (%0.4f%) {{VALUES}}", O, H, L, C, SelectedValue( C - Ref(C, -1)) ));
if( ParamToggle("Tooltip shows", "All Values|Only Prices" ) )
{
ToolTip=StrFormat("Open: %g\nHigh: %g\nLow: %g\nClose: %g (%.2f%%)\nVolume: "+NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 )));
}
Color = IIf(KPScoreCard >= parmSCThreshold, colorBlue, IIf(KPScoreCard <= -parmSCThreshold, colorRed, colorYellow) );
Plot( C, "Close", Color , styleNoTitle | ParamStyle("OHLC Style",styleBar | styleThick) | GetPriceStyle() );
}
//user want A900/AutoStop plotted
if(parmPlotA900AutoStop == 1)
{
Plot(KPA900, "A900", parmA900Color, parmA900Style);
Plot(KPAutoStop, "AutoStop", parmAutoStopColor, parmAutoStopStyle);
}
// find A900/AutoStop cross over/under with ScoreCard confirmation.
XOUp = (KPA900 > KPAutoStop) AND (KPScoreCard >= parmSCThreshold); // New Pivot Low
XODn = (KPA900 < KPAutoStop) AND (KPScoreCard <= -parmSCThreshold); // New Pivot High
if(parmDebug == 1)
{
printf(WriteIf(XOUp, "before= XOUp: True", "before= XOUp: False") + WriteIf(XODn, " XODn: True\n", " XODn: False\n") );
}
//remove duplicate signals
XOUp = ExRem(XOUp, XODn);
XODn = ExRem(XODn, XOUp);

if(parmDebug == 1)
{
printf(WriteIf(XOUp, "after= XOUp: True", "after= XOUp: False") + WriteIf(XODn, " XODn: True\n", " XODn: False\n") );
}
//find the current Pivot Points - PL and PH
//remember XOUp = 1 means a PL and XODn =1 means a PH
PLBars = IIf(XOUp, LowestSinceBars(XODn, L ,1), 0); //find the bar that produced the Lowest Low
PHBars = IIf(XODn, HighestSinceBars(XOUp, H, 1),0); //find the bar that produced the Highest High
//PLPrice = IIf(XOUp, Ref(L, -PLBars), 0);
//PHPrice = IIf(XODn, Ref(H, -PHBars),0);
PLPrice = Ref(L, -PLBars);
PHPrice = Ref(H, -PHBars);

//keep track of the previous Pivot Points
PrevPLBars = Ref(BarsSince(XOUp), -1) +1;
PrevPHBars = Ref(BarsSince(XODn), -1) +1;
PrevPLPrice = Ref(PLPrice, -prevPLBars);
PrevPHPrice = Ref(PHPrice, -PrevPHBars );
PivotsCloseEnough = TickValue * parmTickMultipler;
PLDifference = MroundP(PLPrice - PRevPLPrice, ticker.TickSize);
PHDifference = MroundP(PHPrice - PrevPHPrice, ticker.TickSize);
PPTrend = IIf(XOUp AND (PLDifference > PivotsCloseEnough) AND PrevPHPrice > PrevPLPrice AND PRevPHPrice > PLPrice, 1,
IIf(XOUp AND (PLDifference < - PivotsCloseEnough) AND PRevPHPrice > PrevPLPrice AND PrevPHPrice > PLPrice, -1,
IIf(XODn AND (PHDifference > PivotsCloseEnough) AND PrevPLPrice < PrevPHprice AND PrevPLPrice < PHPrice, 1,
IIf(XODn AND (PHDifference < -PivotsCloseEnough) AND PrevPLPrice < PrevPHPrice AND PrevPLPrice < PHPrice, -1,
IIf(XOUp AND (abs(PLDifference) <= PivotsCloseEnough) AND PrevPHPrice > PrevPLPrice AND PRevPHPrice > PLPrice, 2,
IIf(XODn AND (abs(PHDifference) <= PivotsCloseEnough) AND PrevPLPrice < PrevPHPrice AND PrevPLPrice < PHPrice, -2, 0)))) ));
if(ParmDebug)
{
printf("Current PH Bar: %g% /Price: %g%\n", PHBars, PHPrice);
printf("Current PL Bar: %g% /Price: %g%\n", PLBars, PLPrice);
printf("Previous PH Bar: %g% /Price: %g%\n", PrevPHBars, PrevPHPrice);
printf("Previous PL Bar: %g% /Price: %g%\n", PrevPLBars, PrevPLPrice) ;
printf("PP Trend: %g%\n", PPTrend);
printf("PHPrice - PrevPHPrice: %g%\nPLPrice - PrevPLPrice: %g%\nPivotsCloseEnough: %g%", PHDifference, PLDifference, PivotsCloseEnough);
}
//PLot pivots as text
dist = parmPPTextOffSet * ATR(10);
//for( i = 0; i < BarCount -1; i++)
for( i = 0; i < BarCount ; i++)
{
if(XOUp[i ] == 1 AND abs(PPTrend) != 2) //cross up -plot the Pivot Low
{
PlotText("PL", i - PLBars, PLPrice - dist , parmPPTextColor, IIf(PPTrend == 1, parmPPTrndColorUp, IIf(PPTrend == -1, parmPPTrndColorDn, colorYellow) ));
}
if(XODn[i ] == 1 AND abs(PPTrend) != 2) //cross down - plot the pivot high
{
PlotText("PH", i - PHBars, PHPrice + dist, parmPPTextColor, IIf(PPTrend == 1, parmPPTrndColorUp, IIf(PPTrend == -1, parmPPTrndColorDn, colorYellow) ));
}
if(XOUp[i ] == 1 AND (PPTrend) == 2) // the Pivot Low is a W Bottom
{
PlotText("PW", i - PLBars, PLPrice - dist , parmPPTextColor, colorYellow) ;
}
if(XODn[i ] == 1 AND PPTrend == -2) //cross down - pivot high is a M Top
{
PlotText("PM", i - PHBars, PHPrice + dist, parmPPTextColor, colorYellow) ;
}
} //end For
_SECTION_END();
 
Last edited:
mastermind, help me out with this..
mehtaka

What is the logic being used to decide these dates as expiry dates. I need the logic behind them. Only then, I can help you.
 
Last edited:
Did you really expect someone here to type the code again by looking at the code embedded in an image?
He probably expects everyone to use OCR?


Other than that replace hhv6 = hhv(high, 6); with hhv6 = ref( hhv( high, 6 ), -1 ); and llv6 = llv(low, 6); with llv6 = ref( llv( low, 6 ), -1 );

And next time use code tags or even better solve the problem yourself, @Abhi1284 comedian!
 
He probably expects everyone to use OCR?


Other than that replace hhv6 = hhv(high, 6); with hhv6 = ref( hhv( high, 6 ), -1 ); and llv6 = llv(low, 6); with llv6 = ref( llv( low, 6 ), -1 );

And next time use code tags or even better solve the problem yourself, @Abhi1284 comedian!
gary, After a long time... ? Good 2 see u!

I don't think Reffing backwards would work in this particular case. Check out what is intended. It was mentioned few pages ago.

And lastly, please refrain from any name-calling... Either help or stay silent!!
 
The dates which i have used in just for examples.
Actual dates are decided which commodity are to be traded. Different commodity have different expiry dates.
Yes, buy why only those dates. The seem random but will not be random. We need to know the rule that makes them predictable.

For e.g. the Rule of NSE is very well known and can be described in one line:
"NSE Contracts expire on Last Thursday of every month".

So you or I or anyone can take any calendar of any month and look backwards or forwards to find what date the NSE future contract will expire.

For .e.g. In Dec 2019 Contracts will expire on 26 Dec 2019. In Dec 2020 Contracts will expire on 31 Dec 2020.
 
Yes, buy why only those dates. The seem random but will not be random. We need to know the rule that makes them predictable.

For e.g. the Rule of NSE is very well known and can be described in one line:
"NSE Contracts expire on Last Thursday of every month".

So you or I or anyone can take any calendar of any month and look backwards or forwards to find what date the NSE future contract will expire.

For .e.g. In Dec 2019 Contracts will expire on 26 Dec 2019. In Dec 2020 Contracts will expire on 31 Dec 2020.
ok..
So lets take the Commodity ZINC.
Zinc has expiry at the end of every month.(except weekends or holidays)
so, in Nov 2013... expiry was 29th nov
in dec 2013, its 31st dec 2013
in jan 2014 its 31st jan 2014
 
gary, After a long time... ? Good 2 see u!
Yeah.

I don't think Reffing backwards would work in this particular case. Check out what is intended. It was mentioned few pages ago.
Well, I don't need to look back many pages as there was no context mentioned in his post or picture but just a picture! It is not my job to search for context! And I have not looked closely at that picture. Why should I do that? But now I did so and have seen that hhv and llv are included in valuewhen( sig, hhv) so it is not needed to use ref here as it is not including current bar's high.

If he would use Buy = Close > hhv6; then ref would be needed as hhv includes current bar's high also and current close can not be higher then current high.

And lastly, please refrain from any name-calling... Either help or stay silent!!
Nonsense. I'm allowed calling guys like him comedians since I have the knowledge and he doesn't have it and he wants to suck info from others like me for free and at the same time expects those ones who have the knowledge to do additional typing work.

BTW here is the solution. And I'm using picture mode also. My return favour.




PS: How long did it take you to find the solution?
Hurry, the picture will not stay for long.

EDIT

Here is the proof that limiting the number of the entry signals actually works.


compared to the comedian's picture. Forget about the data being different.
 
Last edited:

Similar threads