
Originariamente Scritto da
Apocalips
Buongiorno,
Si potrebbe costruire in Bt un indicatore intraday overlap che disegni in automatico le fascie Pidi alla sola richiesta di input dell' open della giornata. Potresti gentilmente fare uno specchietto riepilogativo, per coloro che desiderano implementare questa cosa, di come si calcolano queste fascie ?
grazie
è in altro linguaggio quindi usalo come se fosse uno pseudocodice per capirne la logica e tradurlo
AmpStrike = Param( "Ampiezza Strike", 0.5, 0.01, 1000, 0.0001 );
AmpPidi = Param( "Ampiezza Fascia Pidi", 0.22, 0.01, 1000, 0.0001 );
AmpFdD = Param( "Ampiezza Frontiera della Direzione", 0.22, 0.01, 1000, 0.0001 );
PlotTerzoPivot = ParamToggle("Plotta terzo Pivot","Off|On");
TimeFrameSet( inDaily );
P = ( H + L + C ) / 3;
R1 = ( P * 2 ) - L;
S1 = ( P * 2 ) - H;
R2 = P + ( R1 - S1 );
S2 = P - ( R1 - S1 );
R3 = R2 + ( H - L );
S3 = S2 - ( H - L ) ;
FdDUp = O + AmpFdD ;
FdDDown = O - AmpFdD ;
StrikeUP = ceil( O / AmpStrike ) * AmpStrike ;
StrikeDown = floor( O / AmpStrike ) * AmpStrike ;
SogliaPidiUp = IIf( O > Ref( P, -1 ) ,
IIf( StrikeUP < Ref( R1, -1 ) , Ref( R1, -1 ) , IIf( StrikeUP < Ref( R2, -1 ), StrikeUP , Ref( R2, -1 ) ) ),
IIf( StrikeUP < Ref( P, -1 ) , Ref( P, -1 ), IIf( StrikeUP < Ref( R1, -1 ), StrikeUP , Ref( R1, -1 ) ) ) );
SogliaPidiDown = IIf( O < Ref( P, -1 ) ,
IIf( StrikeDown > Ref( S1, -1 ) , Ref( S1, -1 ) , IIf( StrikeDown > Ref( S2, -1 ), StrikeDown , Ref( S2, -1 ) ) ),
IIf( StrikeDown > Ref( P, -1 ) , Ref( P, -1 ), IIf( StrikeDown > Ref( S1, -1 ), StrikeDown , Ref( S1, -1 ) ) ) );
TimeFrameRestore();
P = TimeFrameExpand( P, inDaily );
R1 = TimeFrameExpand( R1, inDaily );
S1 = TimeFrameExpand( S1, inDaily );
R2 = TimeFrameExpand( R2, inDaily );
S2 = TimeFrameExpand( S2, inDaily );
R3 = TimeFrameExpand( R3, inDaily );
S3 = TimeFrameExpand( S3, inDaily );
FdDUp = TimeFrameExpand( FdDUp , inDaily, expandFirst );
FdDDown = TimeFrameExpand( FdDDown , inDaily, expandFirst );
SogliaPidiUp = TimeFrameExpand( SogliaPidiUp, inDaily, expandFirst );
SogliaPidiDown = TimeFrameExpand( SogliaPidiDown , inDaily, expandFirst );
PNRUp = SogliaPidiUp + AmpPidi ;
PNRDown = SogliaPidiDown - AmpPidi ;
P = IIf( DateNum() == Ref( DateNum(), 1 ), P , Null );
R1 = IIf( DateNum() == Ref( DateNum(), 1 ), R1 , Null );
S1 = IIf( DateNum() == Ref( DateNum(), 1 ), S1 , Null );
R2 = IIf( DateNum() == Ref( DateNum(), 1 ), R2 , Null );
S2 = IIf( DateNum() == Ref( DateNum(), 1 ), S2 , Null );
R3 = IIf( DateNum() == Ref( DateNum(), 1 ), R3 , Null );
S3 = IIf( DateNum() == Ref( DateNum(), 1 ), S3 , Null );
FdDUp = IIf( DateNum() == Ref( DateNum(), -1 ), FdDUp , Null );
FdDDown = IIf( DateNum() == Ref( DateNum(), -1 ), FdDDown , Null );
SogliaPidiUp = IIf( DateNum() == Ref( DateNum(), -1 ), SogliaPidiUp , Null );
SogliaPidiDown = IIf( DateNum() == Ref( DateNum(), -1 ), SogliaPidiDown , Null );
PNRUp = IIf( DateNum() == Ref( DateNum(), -1 ), PNRUp , Null );
PNRDown = IIf( DateNum() == Ref( DateNum(), -1 ), PNRDown , Null );
Plot( FdDUp , "FdDUp", colorRed, styleDashed );
Plot( FdDDown , "FdDDown ", colorRed, styleDashed );
Plot( SogliaPidiUp , "SogliaPidiUp", colorDarkGreen, styleLine );
Plot( SogliaPidiDown , "SogliaPidiDown ", colorDarkGreen, styleLine );
Plot( PNRUp , "PNRUp", colorDarkGreen, styleLine );
Plot( PNRDown , "PNRDown", colorDarkGreen, styleLine );
Plot( P, "P", colorBlack, styleDashed );
Plot( R1, "R1", colorGrey50, styleDashed );
Plot( R2, "R2", colorGrey50, styleDashed );
Plot( S1, "S1", colorGrey50, styleDashed );
Plot( S2, "S2", colorGrey50, styleDashed );
if ( PlotTerzoPivot )
{
Plot( R3, "R3", colorGrey50, styleDashed | styleNoRescale );
Plot( S3, "S3", colorGrey50, styleDashed | styleNoRescale);
}
PlotOHLC( PNRUp , PNRUp , SogliaPidiUp , SogliaPidiUp , "", colorPink, styleCloud, Null, Null, Null, -1 );
PlotOHLC( SogliaPidiDown , SogliaPidiDown , PNRDown , PNRDown , "", colorPink, styleCloud, Null, Null, Null, -1 );