ForexTrend





//+------------------------------------------------------------------+
//|                                                 SilverTrend .mq4 |
//|                             SilverTrend  rewritten by CrazyChart |
//|                                                 http://viac.ru/  |
//+------------------------------------------------------------------+
#property copyright "SilverTrend  rewritten by CrazyChart"
#property link      "http://viac.ru/ "

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Blue  //Red  //Aqua
#property indicator_color2 Red
#property indicator_color3 Red
#property indicator_color4 Yellow
//---- input parameters

double buycntr , sellcntr;
extern int       SSP=7;
extern double    Kmin=1.6;
extern double    Kmax=50.6; //24 21.6 21.6 
extern int       CountBars=300;



//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double Bufferup[];
double Bufferdwn[];
double up , down ,val1prev , val2prev;

buycntr=0;
sellcntr=0;
up=1;
down=1;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(4);
   SetIndexStyle(0,DRAW_LINE,0,5,Blue);  //Red
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE,0,5,Red);  //Aqua
   SetIndexBuffer(1,ExtMapBuffer2);
   
   SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,5,Red);  //SELL
   SetIndexBuffer(2,Bufferdwn);
   SetIndexArrow(2,234);
   
   SetIndexStyle(3,DRAW_ARROW,STYLE_SOLID,5,Yellow);  //BUY
   SetIndexBuffer(3,Bufferup);
   SetIndexArrow(3,233);
 
      
   
  // IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
   
   //===============SHORT NAME========================================   
   string short_name;
   short_name="FxTrend("+SSP+")";
    IndicatorShortName(short_name);
     SetIndexLabel(0,short_name);

   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {

   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
 
  if (CountBars>=Bars) CountBars=Bars;
   SetIndexDrawBegin(0,Bars-CountBars+SSP);
   SetIndexDrawBegin(1,Bars-CountBars+SSP);
  int i, i2,loopbegin,counted_bars=IndicatorCounted();
  double SsMax, SsMin, K, val1, val2, smin, smax, price; 
  
  if(Bars<=SSP+1) return(0);
  //---- initial zero

//K=33-RISK; 

/*
if (firstTime==true)   { 
   loopbegin = CountBars; 
   if (loopbegin>(Bars-2*SSP+1)) loopbegin=Bars-2*SSP+1; 
   firstTime=False; 
}; ðóäèìåíò ñòàðîé ïðîãðàììû 
*/
  if(Bars<=SSP+1) return(0);
//---- initial zero

//+++++++
if(counted_bars<SSP+1)
   {
      for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;
      for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;
   }
//+++++++-SSP


for(i=CountBars-SSP;i>=0;i--) { 


  SsMax = High[Highest(NULL,0,MODE_HIGH,SSP,i-SSP+1)]; 
  SsMin = Low[Lowest(NULL,0,MODE_LOW,SSP,i-SSP+1)]; 
   smin = SsMin-(SsMax-SsMin)*Kmin/100; 
   smax = SsMax-(SsMax-SsMin)*Kmax/100;  
   ExtMapBuffer1[i-SSP+6]=smax; 
   ExtMapBuffer2[i-SSP-1]=smax; 
   val1 = ExtMapBuffer1[i]; 
   val2 = ExtMapBuffer2[i]; 
   val1prev = ExtMapBuffer1[i+1]; 
   val2prev = ExtMapBuffer2[i+1]; 


   if (val1 > val2 +Point*1 &&
      val1prev < val2prev &&
      up==1)
      {
      Bufferup[i]=(ExtMapBuffer2[i])- Point * 10;
      }
      
   if (val1 < val2 +Point*1 &&
      val1prev > val2prev &&
      down==1)
      {
      Bufferdwn[i]=(ExtMapBuffer1[i])+ Point * 10;
      }
    


/*
if (val1 > val2+Point*2) 
{
//Comment("Buy ",val1);
if (buycntr==0)
{
//Alert(Symbol()," ",Period(),"min  FXtrend BUY ","\n",
//      "      ","\n",
//      "Price = ",val1);
buycntr=buycntr+1;
sellcntr=0;
}
}

if (val1 < val2-Point*2) 
{
//Comment("Sell ",val2);
if (sellcntr==0)
{
//Alert(Symbol()," ",Period(),"min  FXtrend SELL ","\n",
//      "     ","\n",
//      "Price = ",val2);
sellcntr=sellcntr+1;
buycntr=0;
}
*/


}
return(0);
}



Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE

Implements a curve of type DRAW_ARROW

Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: