Einzelnen Beitrag anzeigen
  #5 (permalink)  
Alt 21.06.21
Sirocool Sirocool ist offline
Mitglied
 
Registriert seit: Feb 2014
Ort: Berlin
Beiträge: 42
Sirocool befindet sich auf einem aufstrebenden Ast
Standard RSICode






Code:
//+-----------------------------------------------------------------------------------------------------------+
//| NOTIZEN UND INFOS                                                                                         |
//+-----------------------------------------------------------------------------------------------------------+
/*

*/
//+-----------------------------------------------------------------------------------------------------------+
//| PROPERTY                                                                                                  |
//+-----------------------------------------------------------------------------------------------------------+
#property copyright"SHARK_RSI_V.21"
#property copyright "©_SHARK_RSI_V.21,  Sirocool."

#property indicator_separate_window
#property indicator_buffers   4
#property indicator_color1 clrDarkSlateGray
#property indicator_color2 clrDarkRed
#property indicator_color3 clrDarkGreen

#property indicator_level1 70;
#property indicator_level2 50;
#property indicator_level3 30



#property indicator_minimum   0
#property indicator_maximum 100
#property indicator_levelcolor clrDarkSlateGray
#property indicator_levelstyle DRAW_ZIGZAG





//#property strict

extern string SHARK_RSI_SETTINGS ="------Relative Strength Index------";

extern int    SHARK_RSI_PERIODE =  14;



input ENUM_APPLIED_PRICE SHARK_APPLEY = PRICE_CLOSE;

extern int    Shark_Overbought    =  70;
extern int    Shark_Oversold      =  30;

//---- Global variables

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
const long   Chart_ID=ChartID();
double SHARK_BUFFER_M[],SHARK_BUFFER_DN[],SHARK_BUFFER_UP[],SHARK_BUFFER_S[];
int period[]= {1,5,15,30,60,240,1440,10080,43200};








//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

int    SubWin  = -1;                    //OurSubwindow
string INDI_SHORTNAME ="SHARK_RSI_V.21";           //OurIndicatorName
// ==================================== rectangle names
string NameTopLev=INDI_SHORTNAME+"LevelTop";       //50 -
string NameWaitUp=INDI_SHORTNAME+"LevelWaitTop";   // 55
string NameWaitLo=INDI_SHORTNAME+"LevelWaitBot";   //-45
string NameBotLev=INDI_SHORTNAME+"LevelBot";       //30



//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorBuffers(5);
   IndicatorDigits(Digits+2);

   SetIndexBuffer(0,SHARK_BUFFER_M);
   SetIndexStyle(0,DRAW_LINE,EMPTY,1);
   SetIndexBuffer(1,SHARK_BUFFER_DN);
   SetIndexLabel(1,NULL);
   SetIndexStyle(1,DRAW_LINE,EMPTY,1);
   SetIndexBuffer(2,SHARK_BUFFER_UP);
   SetIndexLabel(2,NULL);
   SetIndexStyle(2,DRAW_LINE,EMPTY,1);
   SetIndexBuffer(3,SHARK_BUFFER_S);
   SetIndexStyle(3,DRAW_LINE,EMPTY,1,clrAntiqueWhite);

   IndicatorSetString(INDICATOR_LEVELTEXT,0,"Overbought > " + Shark_Overbought+ "%");
   IndicatorSetString(INDICATOR_LEVELTEXT,2,"Oversold < " + Shark_Oversold + "%");


   IndicatorSetString(INDICATOR_SHORTNAME,INDI_SHORTNAME+
                      "("+IntegerToString(SHARK_RSI_PERIODE)+
                      ","+IntegerToString(Shark_Overbought)+
                      ","+IntegerToString(Shark_Oversold)+
                      ","+PriceTypeToString(SHARK_APPLEY)+")");

   SubWin=ChartWindowFind();                     //OurSubWindowNo

   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| INDICATOR_LÖSCHUNG                                               |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectsDeleteAll();
   return(0);
  }


//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//+------------------------------------------------------------------+

   int counted_bars=IndicatorCounted(),limit,i;
   if(counted_bars<0)
      return(-1);
   limit=Bars-counted_bars;


   for(i = limit; i >= 0 && !IsStopped(); i--)
     {





      SHARK_BUFFER_M[i]=iRSI(Symbol(),PERIOD_CURRENT,SHARK_RSI_PERIODE,SHARK_APPLEY,i);

      SHARK_BUFFER_S[i]=iMA(Symbol(),PERIOD_CURRENT,50,0,MODE_SMA,SHARK_APPLEY,i)-iMA(Symbol(),PERIOD_CURRENT,200,0,MODE_SMMA,SHARK_APPLEY,i) ;

      CreateLevelChanel();



      if((SHARK_BUFFER_M[i+1] > Shark_Overbought && SHARK_BUFFER_M[i] < Shark_Overbought))
        {
         SHARK_BUFFER_DN[i]=SHARK_BUFFER_M[i];
         SHARK_BUFFER_DN[i+1]=SHARK_BUFFER_M[i+1];

        }
      else
        {
         SHARK_BUFFER_DN[i+1]=EMPTY_VALUE;
         if(SHARK_BUFFER_DN[i+2]==EMPTY_VALUE)
            SHARK_BUFFER_DN[i+1]=EMPTY_VALUE;
        }
      if((SHARK_BUFFER_M[i+1] < Shark_Oversold && SHARK_BUFFER_M[i]> Shark_Oversold))
        {
         // ChartSetInteger(Symbol(),CHART_COLOR_BACKGROUND,clrForestGreen);
         SHARK_BUFFER_UP[i]=SHARK_BUFFER_M[i];
         SHARK_BUFFER_UP[i+1]=SHARK_BUFFER_M[i+1];
        }
      else
        {
         SHARK_BUFFER_UP[i+1]=EMPTY_VALUE;
         if(SHARK_BUFFER_UP[i+2]==EMPTY_VALUE)
            SHARK_BUFFER_UP[i+1]=EMPTY_VALUE;
        }









      //+------------------------------------------------------------------+
     }
   return(0);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CreateLevelChanel()
  {
   if(ObjectFind(0,NameTopLev)!=SubWin)
      if(!ObjectCreate(0,NameTopLev,OBJ_RECTANGLE,SubWin,
                       Bars-1,50,                     //ChartBegin,70
                       Time[0],Shark_Overbought)      //Now,100
        )
         Print(__FUNCTION__+" "+NameTopLev+" failed, Code="+IntegerToString(_LastError));
   ObjectSetInteger(0,NameTopLev,OBJPROP_COLOR,clrAqua);

   if(ObjectFind(0,NameBotLev)!=SubWin)
      if(!ObjectCreate(0,NameBotLev,OBJ_RECTANGLE,SubWin,
                       Bars-1,50,                      //ChartBegin,50
                       Time[0],Shark_Oversold)                    //Now,500
        )
         Print(__FUNCTION__+" "+NameBotLev+" failed, Code="+IntegerToString(_LastError));
   ObjectSetInteger(0,NameBotLev,OBJPROP_COLOR,clrAqua);


  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string PriceTypeToString(int pt)
  {
   string answer;
   switch(pt)
     {
      case 0:
         answer = "Close"    ;
         break;
      case 1:
         answer = "Open"     ;
         break;
      case 2:
         answer = "High"     ;
         break;
      case 3:
         answer = "Low"      ;
         break;
      case 4:
         answer = "Median"   ;
         break;
      case 5:
         answer = "Typical"  ;
         break;
      case 6:
         answer = "Wighted"  ;
         break;
      default:
         answer = "Invalid price field requested";
         Alert(answer);
     }
   return(answer);
  }
//+------------------------------------------------------------------+