My visual effect afl collection.

yasu222

Active Member
DAY OF WEEK - Metastock Code

PHP:
{DAY OF WEEK_IND}

{Plots the day of the week. 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday, 7=Sunday.}

NO1:= Input("DAY_OF_WEEK",1,7,1);
A:= If(DayOfWeek()=NO1,1,0);
A;
 

yasu222

Active Member
Fno_cycle

{FNO_CYCLE}

PHP:
NO1:= Input("DAY_OF_WEEK",1,6,4);
A:=DayOfMonth()>=20 AND DayOfMonth()<=31;
B:= DayOfWeek()=NO1;
C1:= If(B AND A,1,If(B,-1,0));
C1;
 

yasu222

Active Member
Re: Fno_cycle

{FNO_CYCLE}

PHP:
NO1:= Input("DAY_OF_WEEK",1,6,4);
A:=DayOfMonth()>=20 AND DayOfMonth()<=31;
B:= DayOfWeek()=NO1;
C1:= If(B AND A,1,If(B,-1,0));
C1;

PHP:
NO1:= Input("BEFORE INTERVAL",1,5,1);
NO2:= Input("AFTER INTERVAL",1,5,5);
A1:=DayOfMonth()>11 AND DayOfMonth()<19;
A2:=DayOfMonth()>22 AND DayOfMonth()<30;
B1:=DayOfWeek()=NO1;
B2:=DayOfWeek()=NO2;
C1:= If(B1 AND A1,-1,If(B2 AND A2,1,0));
C1;
 

yasu222

Active Member
Re: Fno_cycle

PHP:
NO1:= Input("BEFORE INTERVAL",1,5,1);
NO2:= Input("AFTER INTERVAL",1,5,5);
A1:=DayOfMonth()>11 AND DayOfMonth()<19;
A2:=DayOfMonth()>22 AND DayOfMonth()<30;
B1:=DayOfWeek()=NO1;
B2:=DayOfWeek()=NO2;
C1:= If(B1 AND A1,-1,If(B2 AND A2,1,0));
C1;

PHP:
{!!!COMEX_DATES
ADJUST DATES AS PER CONTRACT EXPIRY}
NO1:= Input("DAY1_OF_MONTH",1,31,1);
NO2:= Input("DAY2_OF_MONTH",1,31,31);
A1:=DayOfMonth()=NO1;
A2:=DayOfMonth()=NO2;
C1:= If(A1,1,If(A2,-1,0));
C1;
 

yasu222

Active Member
Price_elasticity

PHP:
{PRICE_ELASTICITY}
NO1:= Input("BARS",2,100,14);
QTY:=(VOLUME*C)/500000;
QA:=QTY;
QB:= Ref(QA,-1);
QAVG:= (QA+QB)/2;
PA:= C;
PB:= Ref(C,-1);
PAVG:= (PA+PB)/2;
PQ:= ((QB-QA)/QAVG)*100;
PP:= ((PB-PA)/PAVG)*100;
ELADS:= (PQ/PP);
ELA:= RSI(ELADS,NO1);
ELA;60;40;
 
Last edited:

yasu222

Active Member
Trend_super

PHP:
_SECTION_BEGIN("!TREND_SUPER");

SetBarsRequired(100000,0);
GraphXSpace = 15;
SetChartOptions(0,chartShowArrows|chartShowDates);
dojidiv = 5;
CloseEqualOpen  = ( High - Low ) / dojidiv > abs( Open - Close );
RefC = Ref( C, -1 );
RefO = Ref( O, -1 );
Up = C > O;
Down = C < O ;
UpDoji = CloseEqualOpen AND RefC > RefO;
DownDoji = CloseEqualOpen AND RefC < RefO;
colcond = IIf( up || updoji, colorBrightGreen, colorRed );
SetBarFillColor( colcond );
Plot( C, "Price", colcond, styleCandle );


// Initial Values overrides your backtesting settings

HalfLife	= Param("channel halflife", 3, 1, 20, 1);
ChanLen	= Param("channel length", 10 , 1, 200, 1);
shrink		= 2^(-HalfLife);
shrink2	= 1 - shrink;
topChan[0]	= High[0];
botChan[0]	= Low[0];
HH	= HHV(High, ChanLen);
LL	= LLV(Low, Chanlen); 

for( i = 1; i < BarCount-1; i++ ) {
	topChan[i] = shrink * H[i] + shrink2 * topChan[i-1] ;
	botChan[i] = shrink * L[i] + shrink2 * botChan[i-1] ;
	if (HH[i] >= topChan[i])	topChan[i] = HH[i];
	if (LL[i] <= botChan[i])	botChan[i] = LL[i];
	}

Up=topChan;
Dn=botChan;
TrendUp=TrendDown=Null;
trend[0]=1;
changeOfTrend=0;
flag=flagh=0;

for (i = 1; i <BarCount-1; i++) {

      TrendUp[i] = Null;
      TrendDown[i] = Null;  
      trend[i]=1;

      if (Close[i]>Up[i-1]) {
         trend[i]=1;
         if (trend[i-1] == -1) changeOfTrend = 1;
      }
      else if (Close[i]<Dn[i-1]) {
         trend[i]=-1;
         if (trend[i-1] == 1) changeOfTrend = 1;
      }
      else if (trend[i-1]==1) {
         trend[i]=1;
         changeOfTrend = 0;  
      }
      else if (trend[i-1]==-1) {
         trend[i]=-1;
         changeOfTrend = 0;
      }
      if (trend[i]<0 && trend[i-1]>0) {
         flag=1;
      }
      else {
         flag=0;
      }
      if (trend[i]>0 && trend[i-1]<0) {
         flagh=1;
      }
      else {
         flagh=0;
      }
      if (trend[i]>0 && Dn[i]<Dn[i-1]){
         Dn[i]=Dn[i-1];
		}
      if (trend[i]<0 && Up[i]>Up[i-1])
        { Up[i]=Up[i-1];
		}
      if (flag==1)
       {  Up[i]=topchan[i];;
        } 
      if (flagh==1)
        { Dn[i]=botChan[i];;
         }
      if (trend[i]==1) {
         TrendUp[i]=Dn[i];
         if (changeOfTrend == 1) {
            TrendUp[i-1] = TrendDown[i-1];
            changeOfTrend = 0;
         }
      }
      else if (trend[i]==-1) {
         TrendDown[i]=Up[i];
         if (changeOfTrend == 1) {
            TrendDown[i-1] = TrendUp[i-1];
            changeOfTrend = 0;

         }

      }

   } 

Plot(TrendUp,"Trend",colorBrightGreen,styleNoTitle);
Plot(TrendDown,"Down",colorPink,styleNoTitle);

Buy = trend==1;
Sell=trend==-1;
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=Sell;
Cover=Buy;

PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);                      
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45); 
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);                      
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);

_SECTION_END();
 

yasu222

Active Member
Kokkoroko_chart_afl

PHP:
  SetBarsRequired(100000,100000);
//------------------------------------------------------------------+
// Block 1                                                          |
//------------------------------------------------------------------+
  VR=ParamToggle("View Renko","Bricks|Lines/Bars",0);                
  FV=Param("Initial size volatility",1,0.001,50,0.001);            
  MV=Param("Method calculation volatility",0,0,2,1);                 
  PeriodVol=Param("Period calculation volatility",14,2,100,1);       
  Multiplier=Param("Multiplier volatility",1,0.1,10,0.1);           
  MR=ParamToggle("Method Renko","floating|fixed",1);         
  SG=ParamToggle("Show gap","No|Yes",1);                     
  CG=ParamColor("Colour show gap",11);                     
  MaxBS=Param("Maximum size brick",0,0,10,0.1);             
  MinBS=Param("Minimum size brick",0,0,10,0.1);              
  RenkoUp=ParamColor("Colour Renko upwards",colorBrightGreen);      
  RenkoDown=ParamColor("Colour Renko downwards",colorRed);
  SB=ParamStyle("View bars",defaultval=styleCandle,mask=maskPrice);    
  color3=ParamColor("Colour bars",colorBlack);
  History=Param("History size",5000,2,BarCount-1,1);              
//------------------------------------------------------------------+
// Block 2                                                          |
//------------------------------------------------------------------+
  i=Max(BarCount-1-History,PeriodVol+1);                             
  r=j=0;                                                             
  direction=0;                                                       
  iGapUp=iGapDown=0; 
  rOpen[0]=rHigh[0]=rLow[0]=rClose[0]=jUp=jDown=Open[i];             
//------------------------------------------------------------------- 
  switch(MV)
    {
     case 0: Volatility=FV; break;                                   
     case 1: Volatility=ATR(PeriodVol)*Multiplier; break;             
     case 2: Volatility=StDev(Open,PeriodVol)*Multiplier; break;     
    }         
  BrickSize=Volatility[i-1];                                         
//-------------------------------------------------------------------+
// Block 3                                                           |
//-------------------------------------------------------------------+
  while(i<=BarCount-1)
    { 
     if(SG==1)
       {
        if(High[i-1]<Low[i])
          {
           iGapUp[i]=1;                                       
          }
          else
          {
           if(Low[i-1]>High[i])
             {
              iGapDown[i]=1;
             }
          }
       } 
//------------------------------------------------------------------- 
     if(MR==0)  
       {
        BrickSize=Volatility[i-1];
        if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);}                 
        if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);}                
       } 
//------------------------------------------------------------------+
// Block 4                                                          |
//------------------------------------------------------------------+
     if(direction==0)                                                 
       {                                                   
        if(Open[i]-rClose[r]>BrickSize)                              
          {                                                 
           rClose[r]=rOpen[r]+BrickSize;
           rHigh[r]=rClose[r];
           direction=1;
//------------------------------------------------------------------- 
           BrickSize=Volatility[i];
           if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);}                
           if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);}
//------------------------------------------------------------------- 
           if(iGapUp[i]==1|iGapDown[i]==1)                           
             {
              color[r]=CG;                                           
             }
             else
             {
              color[r]=RenkoUp;                                      
             }
           continue;                                                                                       
          }                                                           
//------------------------------------------------------------------- 
          else
          {
           if(rClose[r]-Open[i]>BrickSize)                             
             {
              rClose[r]=rOpen[r]-BrickSize;
              rLow[r]=rClose[r];
              direction=2;
//------------------------------------------------------------------- 
              BrickSize=Volatility[i];
              if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);}                
              if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);}
//------------------------------------------------------------------- 
              if(iGapUp[i]==1|iGapDown[i]==1)
                {
                 color[r]=CG;                                        
                }
                else
                {
                 color[r]=RenkoDown;                                         
                }
              continue;                                         
             }
          }
       }
//------------------------------------------------------------------+
// Block 5                                                          |
//------------------------------------------------------------------+
       else                                                          
       { 
        if(direction==1)                                             
          {
           if(rOpen[r]-Open[i]>BrickSize)                                                                     
             {
              r++;
              rOpen[r]=rOpen[r-1];
              rHigh[r]=rOpen[r];
              rClose[r]=rOpen[r]-BrickSize;
              rLow[r]=rClose[r];
              direction=2;
//------------------------------------------------------------------- 
              BrickSize=Volatility[i];
              if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);}                
              if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);}
//------------------------------------------------------------------- 
              if(iGapUp[i]==1|iGapDown[i]==1)
                {
                 color[r]=CG;                                        
                }
                else
                {
                 color[r]=RenkoDown;                                         
                }
              continue;                                                   
             }
//------------------------------------------------------------------- 
             else
             {
              if(Open[i]-rClose[r]>BrickSize)        
                {
                 r++;
                 rOpen[r]=rClose[r-1];
                 rLow[r]=rOpen[r];
                 rClose[r]=rOpen[r]+BrickSize;
                 rHigh[r]=rClose[r];
//------------------------------------------------------------------- 
                 BrickSize=Volatility[i];
                 if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);}                
                 if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);}
//------------------------------------------------------------------- 
                 if(iGapUp[i]==1|iGapDown[i]==1)
                   {
                    color[r]=CG;                                        
                   }
                   else
                   {
                    color[r]=RenkoUp;                                         
                   }
                }
             }
          }
//------------------------------------------------------------------+
// Block 6                                                          |
//------------------------------------------------------------------+
          else
          {
           if(direction==2)                                          
             {
              if(Open[i]-rOpen[r]>BrickSize)
                {
                 r++;
                 rOpen[r]=rOpen[r-1];
                 rLow[r]=rOpen[r];
                 rClose[r]=rOpen[r]+BrickSize;
                 rHigh[r]=rClose[r];
                 direction=1;
//------------------------------------------------------------------- 
                 BrickSize=Volatility[i];
                 if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);}                
                 if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);}
//------------------------------------------------------------------- 
                 if(iGapUp[i]==1|iGapDown[i]==1)
                   {
                    color[r]=CG;                                        
                   }
                   else
                   {
                    color[r]=RenkoUp;                                         
                   }
                 continue;  
                }
//------------------------------------------------------------------- 
                else
                {
                 if(rClose[r]-Open[i]>BrickSize)                                                        
                   {
                    r++;
                    rOpen[r]=rClose[r-1];
                    rHigh[r]=rOpen[r];
                    rClose[r]=rOpen[r]-BrickSize;
                    rLow[r]=rClose[r];
//------------------------------------------------------------------- 
                    BrickSize=Volatility[i];
                    if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);}                
                    if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);}
//-------------------------------------------------------------------
                    if(iGapUp[i]==1|iGapDown[i]==1)
                      {
                       color[r]=CG;                                        
                      }
                      else
                      {
                       color[r]=RenkoDown;                                         
                      }
                    }
                }
             }
          }
       }                                                             
//------------------------------------------------------------------+
// Block 7                                                          |
//------------------------------------------------------------------+
     if(VR==1)                                                       
       {
        jOpen[j]=Open[i];
        jHigh[j]=High[i];
        jLow[j]=Low[i];
        jClose[j]=Close[i];
//-------------------------------------------------------------------
        if(direction==1)
          {
           jUp[j]=rClose[r];
           jDown[j]=rOpen[r];
           color2[j]=color[r];
          }
          else
          {
           if(direction==2)
             {
              jUp[j]=rOpen[r];
              jDown[j]=rClose[r];
              color2[j]=color[r];
             }
          }
        j++;
       }                                                                    
     i++;                                                                                         
    }                                                                
//------------------------------------------------------------------+
// Block 8                                                          |
//------------------------------------------------------------------+
  if(VR==1)                                                          
    {
     delta=BarCount-j;
     jOpen=Ref(jOpen,-delta);                                        
     jHigh=Ref(jHigh,-delta);                                        
     jLow=Ref(jLow,-delta);
     jClose=Ref(jClose,-delta);
     jUp=Ref(jUp,-delta);
     jDown=Ref(jDown,-delta);
     color2=Ref(color2,-delta);
     SetChartOptions(0,chartShowArrows|chartShowDates);
     _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
     PlotOHLC(jOpen,jHigh,jLow,jClose,"SRI",color3,SB);                       
     Plot(jUp,"Up",color2,styleThick);                                                 
     Plot(jDown,"Down",color2,styleThick); 
    }
//-------------------------------------------------------------------
    else                                                             
    {  
     delta=BarCount-1-r;                                              
     rOpen=Ref(rOpen,-delta);                                        
     rHigh=Ref(rHigh,-delta);                                        
     rLow=Ref(rLow,-delta);
     rClose=Ref(rClose,-delta);
     color=Ref(color,-delta);
     PlotOHLC(rOpen,rHigh,rLow,rClose,"SRI",color,styleCandle);      
    }
 

yasu222

Active Member
Bollinger Band Trailing Stop Loss Trading AFL

PHP:
per=Param("Period",30, 5,50,1);
se = StdErr(C,per);

Bbup = BBandTop(C,per)+se;
Bbdown =BBandBot(C,per)-se;

MoneyRisk = 1.0;
iSignal = 1;
Line = 1;
Trend=0;
TrendUp=Null;
TrendDown=Null;
sig=Null;

g_ibuf_108 = 0;
g_ibuf_112 = 0;
g_ibuf_116 = 0;
g_ibuf_120 = 0;
iUp = Null;
iDown = Null;

   for(i=1;i<BarCount-1;i++) {

      if (Close[i] > Bbup[i - 1]) Trend = 1;
      if (Close[i] < Bbdown[i - 1]) Trend = -1;
      if (Trend > 0 && Bbdown[i] < Bbdown[i - 1]) Bbdown[i] = Bbdown[i - 1];
      if (Trend < 0 && Bbup[i] > Bbup[i - 1]) Bbup[i] = Bbup[i - 1];
      TrendUp[i] = Bbup[i] + (MoneyRisk - 1.0) / 2.0 * (Bbup[i] - Bbdown[i]);
      TrendDown[i] = Bbdown[i] - (MoneyRisk - 1.0) / 2.0 * (Bbup[i] - Bbdown[i]);
      if (Trend > 0 && TrendDown[i] < TrendDown[i - 1]) TrendDown[i] = TrendDown[i - 1];
      if (Trend < 0 && TrendUp[i] > TrendUp[i - 1]) TrendUp[i] = TrendUp[i - 1];
      if (Trend > 0) {
         if (sig > 0 && g_ibuf_108[i - 1] == -1.0) {
            g_ibuf_116[i] = TrendDown[i];
            g_ibuf_108[i] = TrendDown[i];
            if (Line > 0) iUp[i] = TrendDown[i];
         } else {
            g_ibuf_108[i] = TrendDown[i];
            if (Line > 0) iUp[i] = TrendDown[i];
            g_ibuf_116[i] = -1;
         }
         if (sig == 2) g_ibuf_108[i] = 0;
         g_ibuf_120[i] = -1;
         g_ibuf_112[i] = -1.0;
         iDown[i] = Null;
      }
      if (Trend < 0) {
         if (sig > 0 && g_ibuf_112[i - 1] == -1.0) {
            g_ibuf_120[i] = TrendUp[i];
            g_ibuf_112[i] = TrendUp[i];
            if (Line > 0) iDown[i] = TrendUp[i];
         } else {
            g_ibuf_112[i] = TrendUp[i];
            if (Line > 0) iDown[i] = TrendUp[i];
            g_ibuf_120[i] = -1;
         }
         if (sig == 2) g_ibuf_112[i] = 0;
         g_ibuf_116[i] = -1;
         g_ibuf_108[i] = -1.0;
         iUp[i] = Null;
      }
   }


Plot(iUp,"iUP",colorGreen,ParamStyle("Style", styleDots | styleNoLine, maskDefault | styleDots | styleNoLine ));
Plot(iDown,"iDown",colorRed,ParamStyle("Style", styleDots | styleNoLine, maskDefault | styleDots | styleNoLine ));

Buy = iUp>0;
Sell= iDown>0;
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=Sell;
Cover=Buy;

PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);  
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45); 
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);
 

yasu222

Active Member
Pastance afl

Paste this AFL at begining of trading system AFL and run back test to generate past time reports.

PHP:
//  Initialize the trading parameters


	BuyPrice = SellPrice = ShortPrice = CoverPrice = Close;

	SetTradeDelays( 1, 1, 1, 1 );
	RoundLotSize = 50;                                                             // Define Round Lot Size of the Trading Instrument
	SetPositionSize ( 100,spsShares);                                              // Define Fixed Trading Size for every Buy or Sell Transaction
	SetOption(	"InitialEquity",						200000	);
	SetOption(	"MinShares", 							1		);
	SetOption(	"MinPosValue",						1		);                     // Enable Futures Mode 
	SetOption(	"FuturesMode", 						True	);
	SetOption(	"AllowPositionShrinking", 			True	);
	SetOption(	"ActivateStopsImmediately",			False	);
	SetOption(	"ReverseSignalForcesExit", 			False	);
	SetOption(	"AllowSameBarExit",					False	);
	SetOption(	"CommissionMode", 					2		);						// Fixed Brokerage Commissions (Per Trade)
	SetOption(	"CommissionAmount", 					100		);                  // Rs 100/Leg Commisions
	SetOption(	"InterestRate", 						0		);
	SetOption(	"MarginRequirement", 				10		);                      //Define Margin Requirement in terms of Percentage
	SetOption("AccountMargin",						10		); 	                    //Define Account Margin in terms of Percentage
 
Re: Bollinger Band Trailing Stop Loss Trading AFL

PHP:
per=Param("Period",30, 5,50,1);
se = StdErr(C,per);

Bbup = BBandTop(C,per)+se;
Bbdown =BBandBot(C,per)-se;

MoneyRisk = 1.0;
iSignal = 1;
Line = 1;
Trend=0;
TrendUp=Null;
TrendDown=Null;
sig=Null;

g_ibuf_108 = 0;
g_ibuf_112 = 0;
g_ibuf_116 = 0;
g_ibuf_120 = 0;
iUp = Null;
iDown = Null;

   for(i=1;i<BarCount-1;i++) {

      if (Close[i] > Bbup[i - 1]) Trend = 1;
      if (Close[i] < Bbdown[i - 1]) Trend = -1;
      if (Trend > 0 && Bbdown[i] < Bbdown[i - 1]) Bbdown[i] = Bbdown[i - 1];
      if (Trend < 0 && Bbup[i] > Bbup[i - 1]) Bbup[i] = Bbup[i - 1];
      TrendUp[i] = Bbup[i] + (MoneyRisk - 1.0) / 2.0 * (Bbup[i] - Bbdown[i]);
      TrendDown[i] = Bbdown[i] - (MoneyRisk - 1.0) / 2.0 * (Bbup[i] - Bbdown[i]);
      if (Trend > 0 && TrendDown[i] < TrendDown[i - 1]) TrendDown[i] = TrendDown[i - 1];
      if (Trend < 0 && TrendUp[i] > TrendUp[i - 1]) TrendUp[i] = TrendUp[i - 1];
      if (Trend > 0) {
         if (sig > 0 && g_ibuf_108[i - 1] == -1.0) {
            g_ibuf_116[i] = TrendDown[i];
            g_ibuf_108[i] = TrendDown[i];
            if (Line > 0) iUp[i] = TrendDown[i];
         } else {
            g_ibuf_108[i] = TrendDown[i];
            if (Line > 0) iUp[i] = TrendDown[i];
            g_ibuf_116[i] = -1;
         }
         if (sig == 2) g_ibuf_108[i] = 0;
         g_ibuf_120[i] = -1;
         g_ibuf_112[i] = -1.0;
         iDown[i] = Null;
      }
      if (Trend < 0) {
         if (sig > 0 && g_ibuf_112[i - 1] == -1.0) {
            g_ibuf_120[i] = TrendUp[i];
            g_ibuf_112[i] = TrendUp[i];
            if (Line > 0) iDown[i] = TrendUp[i];
         } else {
            g_ibuf_112[i] = TrendUp[i];
            if (Line > 0) iDown[i] = TrendUp[i];
            g_ibuf_120[i] = -1;
         }
         if (sig == 2) g_ibuf_112[i] = 0;
         g_ibuf_116[i] = -1;
         g_ibuf_108[i] = -1.0;
         iUp[i] = Null;
      }
   }


Plot(iUp,"iUP",colorGreen,ParamStyle("Style", styleDots | styleNoLine, maskDefault | styleDots | styleNoLine ));
Plot(iDown,"iDown",colorRed,ParamStyle("Style", styleDots | styleNoLine, maskDefault | styleDots | styleNoLine ));

Buy = iUp>0;
Sell= iDown>0;
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=Sell;
Cover=Buy;

PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);  
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45); 
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);

Yasu,

Could you please help me with following request similar to your posted code:

Buy = 8ma cross 21ma
Stop loss = 21 ma - buffer (1%)
Sell = 8ma cross 21ma
Stop loss = 21 ma + buffer (1%)
Buy and Sell arrow when signal occurs
Visual Stop loss trail as new bar occurs
I want only last signal on the chart and if possible can toggle all signals via parameter.

TIA.

Warm regards,
Rakesh
 

Similar threads