Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Farbe Zwischen 2 Indicatorlevel anzeigen lassen (http://www.expert-advisor.com/forum/showthread.php?t=7023)

Sirocool 20.06.21 14:34

Farbe Zwischen 2 Indicatorlevel anzeigen lassen
 
wie kann ich beim RSI zischen 70 und 30 oder anderen Einstellungen eine Fabe anzeigen lassen. wie auf dem Bild ist ein helles Lila

https://s3.tradingview.com/l/l2cV7bJG_mid.webp

Sirocool 20.06.21 20:26

habe was gefunden aber bei was anderen
 
Zitat:

Zitat von Sirocool (Beitrag 45495)
Weiss jemand einen Weg und kann mir dabei Helfen. zwischen 70 und 30 eine Fabe anzeigen lassen. wie auf dem Bild ist ein helles Lila bin auch schon dabei aber bin mit mein latein fast am ende :-).

https://s3.tradingview.com/l/l2cV7bJG_mid.webp



diesen Code Habe ich gefunden da gehts ab Linie 278 los kann ich dies irgendwie umbauen für einen normalen rsi


Code:

//+------------------------------------------------------------------------------------------------------------------+
#property description                                                                          "[!!!-MT4 X-XARDg-RSI]"
#define Version                                                                                          "[XARDg-RSI]"
//+------------------------------------------------------------------------------------------------------------------+
#property link        "https://forex-station.com/viewtopic.php?p=1294848283#p1294848283"
#property description "THIS IS A FREE INDICATOR"
#property description "                                                      "
#property description "Welcome to the World of Forex"
#property description "Let light shine out of darkness and illuminate your world"
#property description "and with this freedom leave behind your cave of denial"
#property indicator_separate_window
#property indicator_buffers  7
#property indicator_color1  DeepSkyBlue
#property indicator_color2  PaleVioletRed
#property indicator_color3  DimGray
#property indicator_color4  DeepSkyBlue
#property indicator_color5  DeepSkyBlue
#property indicator_color6  PaleVioletRed
#property indicator_color7  PaleVioletRed
#property indicator_width1  1
#property indicator_width2  1
#property indicator_width4  3
#property indicator_width5  3
#property indicator_width6  3
#property indicator_width7  3
#property indicator_minimum  -25
#property indicator_maximum  25
#property indicator_height  180
#define lvl1 "lvl1"
#define lvl2 "lvl2"
 extern color clrLine=clrDarkBlue,clrUp=C'34,34,90',clrDn=C'90,34,34';
//+------------------------------------------------------------------------------------------------------------------+
extern string TimeFrame              = "Current time frame";
extern int    RSIper                = 20;
extern ENUM_APPLIED_PRICE Price      = PRICE_CLOSE;
extern double RSIModifier            = 0.9;
extern double LevelUp                =  1.;
extern double LevelDn                = -1.;
extern double SmoothLength          =  5;
extern double SmoothPhase            =  0;
extern bool  ShowHistogram          = false;
extern bool  Interpolate            = true;
extern bool  alertsOn              = false;
extern bool  alertsOnZoneEnter      = true;
extern bool  alertsOnCurrent        = true;
extern bool  alertsMessage          = true;
extern bool  alertsSound            = false;
extern bool  alertsEmail            = false;
extern bool  verticalLinesVisible  = false;
extern string verticalLinesID        = "RsiSmoothLines";
extern bool  verticalLinesShowBreak  = true;
extern bool  verticalLinesShowRetrace = false;
extern color  verticalLinesUpColor  = DeepSkyBlue;
extern color  verticalLinesDownColor = PaleVioletRed;
extern ENUM_LINE_STYLE verticalLinesStyle = STYLE_DOT;
extern int    verticalLinesWidth    = 2;
//+------------------------------------------------------------------------------------------------------------------+
extern string STR05                      = "<<<==== [05] BOXtxt2 Settings ====>>>";
  extern bool showBOXtxt2                = true;
  extern int PanelBorderWidth          = 1;
 extern color PanelBorderColor          = C'120,120,120';
  extern int moveTxtLR                  = 0,moveTxtUD=0,FontSize=15; int BOXsize2; string ID,BOXtxt2; color BOXclr2;
//+------------------------------------------------------------------------------------------------------------------+
  double rsi[],rsiUa[],rsiUb[],rsiDa[];
  double rsiDb[],rsiHu[],rsiHd[],trend[];
  string indicatorFileName;
  bool  returnBars,calculateValue;
  int    timeFrame;
//+------------------------------------------------------------------------------------------------------------------+
  int init(){IndicatorBuffers(8);
  if(Period()==PERIOD_M1) {RSIper=15.;}
  if(Period()==PERIOD_M5) {RSIper=13.;}
  if(Period()==PERIOD_M15){RSIper=11.;}
  if(Period()==PERIOD_M30){RSIper= 9.;}
  if(Period()==PERIOD_H1) {RSIper= 7.;}
  if(Period()>=PERIOD_H4) {RSIper= 5.;}
  SetIndexBuffer(0,rsiHu); SetIndexStyle(0,DRAW_HISTOGRAM);
  SetIndexBuffer(1,rsiHd); SetIndexStyle(1,DRAW_HISTOGRAM);
  SetIndexBuffer(2,rsi);
  SetIndexBuffer(3,rsiUa);
  SetIndexBuffer(4,rsiUb);
  SetIndexBuffer(5,rsiDa);
  SetIndexBuffer(6,rsiDb);
  SetIndexBuffer(7,trend);
        RSIper = fmax(RSIper ,1);

        indicatorFileName = WindowExpertName();
        calculateValue    = TimeFrame=="calculateValue"; if (calculateValue) { return(0); }
        returnBars        = TimeFrame=="returnBars";    if (returnBars)    { return(0); }
        timeFrame        = stringToTimeFrame(TimeFrame);
       
        string PriceType;  switch(Price){
        case PRICE_CLOSE:    PriceType = "Close";    break;  // 0
        case PRICE_OPEN:    PriceType = "Open";    break;  // 1
        case PRICE_HIGH:    PriceType = "High";    break;  // 2
        case PRICE_LOW:      PriceType = "Low";      break;  // 3
        case PRICE_MEDIAN:  PriceType = "Median";  break;  // 4
        case PRICE_TYPICAL:  PriceType = "Typical";  break;  // 5
        case PRICE_WEIGHTED: PriceType = "Weighted"; break;} // 6
  ID = "c";  IndicatorShortName("RSI");
  //for(int Bufx=0;Bufx<indicator_buffers;Bufx++){SetIndexLabel(Bufx,NULL);} 
  return(0);}
//+------------------------------------------------------------------------------------------------------------------+
  int deinit(){CleanUpOnIsle6();  string lookFor = verticalLinesID+":";  int lookForLength = StringLen(lookFor);
  for(int i=ObjectsTotal()-1; i>=0; i--){string objectName = ObjectName(i);
  if(StringSubstr(objectName,0,lookForLength) == lookFor) ObjectDelete(objectName);}  return(0);}
//+------------------------------------------------------------------------------------------------------------------+
  int start(){CreateLVL();  int Win=WindowFind("RSI");  if(Win==-1) Win=0;
  int counted_bars=IndicatorCounted();  int i,k,n,limit;

  if(counted_bars<0) return(-1);
  if(counted_bars>0) counted_bars--;  limit = MathMin(Bars-counted_bars,Bars-1);
  if(returnBars){rsiHu[0] = MathMin(limit+1,Bars-1); return(0);}

  if(calculateValue || timeFrame == _Period){
  if(!calculateValue && trend[limit]== 1) CleanPoint(limit,rsiUa,rsiUb);
  if(!calculateValue && trend[limit]==-1) CleanPoint(limit,rsiDa,rsiDb);
  for(i=limit;i>=0;i--){CleanUpOnIsle6();
      rsi[i] = iSmooth(RSIModifier*(iRSI(NULL,0,RSIper,Price,i)-50.0),SmoothLength,SmoothPhase,i);
  if(ShowHistogram){
      rsiHu[i] = EMPTY_VALUE;
      rsiHd[i] = EMPTY_VALUE;
  if(rsi[i]>0) rsiHu[i] = rsi[i];
  if(rsi[i]<0) rsiHd[i] = rsi[i];}
      rsiUa[i] = rsiUb[i] = EMPTY_VALUE;
      rsiDa[i] = rsiDb[i] = EMPTY_VALUE;         
      trend[i] = trend[i+1];
     
  if(rsi[i]<LevelUp && rsi[i]>LevelDn) trend[i]= 0;
  BOXtxt2=" WAITING..."; BOXclr2=C'30,40,50'; BOXsize2=124;
  if(rsi[i]>LevelUp){trend[i]= 1; BOXtxt2=" BUYS ONLY - CLOSE ALL SELL TRADES"; BOXclr2=clrBlue; BOXsize2=430;}
  if(rsi[i]<LevelDn){trend[i]=-1; BOXtxt2="SELLS ONLY - CLOSE ALL BUY TRADES"; BOXclr2=clrCrimson; BOXsize2=430;}
 
  if(!calculateValue && trend[i] ==  1) PlotPoint(i,rsiUa,rsiUb,rsi);
  if(!calculateValue && trend[i] == -1) PlotPoint(i,rsiDa,rsiDb,rsi);
//+---BOXtxt2 DISPLAY------------------------------------------------------------------------------------------------+
        if(showBOXtxt2){SetPanel2(0,ID+"Drak1",1,0,0,0,BOXsize2,22,BOXclr2,PanelBorderColor,PanelBorderWidth,false);
            ObjectSetInteger(0,ID+"Drak1",OBJPROP_BGCOLOR,BOXclr2);
                  SetLabel2(0,ID+"Drak2",1,0,4,0,BOXtxt2,16,"Arial Bold",clrSilver,0,false,true,0,ANCHOR_LEFT_UPPER);}
//+------------------------------------------------------------------------------------------------------------------+ 
      manageLines(i);}  manageAlerts();  return(0);} 
//+------------------------------------------------------------------------------------------------------------------+ 
  limit = fmax(limit,fmin(Bars,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/_Period));
  for (i=limit;i>=0;i--){int y = iBarShift(NULL,timeFrame,Time[i]);
    rsi[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RSIper,Price,RSIModifier,LevelUp,LevelDn,SmoothLength,SmoothPhase,2,y);
  trend[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RSIper,Price,RSIModifier,LevelUp,LevelDn,SmoothLength,SmoothPhase,7,y);
  rsiUa[i] = rsiUb[i] = EMPTY_VALUE;
  rsiDa[i] = rsiDb[i] = EMPTY_VALUE;
  if(ShowHistogram){
              rsiHu[i] = EMPTY_VALUE;
              rsiHd[i] = EMPTY_VALUE;
  if(rsi[i]>0) rsiHu[i] = rsi[i];
  if(rsi[i]<0) rsiHd[i] = rsi[i];}           
        manageLines(i);
     
  if(!Interpolate || y==iBarShift(NULL,timeFrame,Time[i-1])) continue;

  datetime time = iTime(NULL,timeFrame,y);
  for(n = 1; i+n < Bars && Time[i+n] >= time; n++) continue;       
  for(k = 1; k < n; k++){
      rsi[i+k] = rsi[i] + (rsi[i+n]-rsi[i])*k/n;
  if(rsiHu[i+k]!=EMPTY_VALUE) rsiHu[i+k] = rsi[i+k];
  if(rsiHd[i+k]!=EMPTY_VALUE) rsiHd[i+k] = rsi[i+k];}}
  for(i=limit;i>=0;i--){
  if(trend[i]== 1) PlotPoint(i,rsiUa,rsiUb,rsi);
  if(trend[i]==-1) PlotPoint(i,rsiDa,rsiDb,rsi);}  manageAlerts();  return(0);}
//+------------------------------------------------------------------------------------------------------------------+
  void manageAlerts(){if(!calculateValue && alertsOn){if(alertsOnCurrent)
  int whichBar = 0; else whichBar = 1; whichBar = iBarShift(NULL,0,iTime(NULL,timeFrame,whichBar));
  if(trend[whichBar] != trend[whichBar+1]){
  if(alertsOnZoneEnter && trend[whichBar]  ==  1) doAlert(whichBar, "the Up Zone");
  if(alertsOnZoneEnter && trend[whichBar]  == -1) doAlert(whichBar, "the Down Zone");}}}
//+------------------------------------------------------------------------------------------------------------------+
  void doAlert(int forBar, string doWhat){static string previousAlert="nothing";
  static datetime previousTime; string msg;
  if(previousAlert != doWhat || previousTime != Time[forBar]){previousAlert  = doWhat;  previousTime  = Time[forBar];
      msg=StringConcatenate(Symbol()," ",timeFrameToString(timeFrame)," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," RSI entered ",doWhat);
  if(alertsMessage) Alert(msg);
  if(alertsEmail)  SendMail(StringConcatenate(Symbol(),"rsi"),msg);
  if(alertsSound)  PlaySound("alert2.wav");}}
//+------------------------------------------------------------------------------------------------------------------+
  void manageLines(int i){
  if(!calculateValue && verticalLinesVisible){deleteLine(Time[i]);
  if(trend[i]!=trend[i+1]){
  if(verticalLinesShowBreak){
  if(trend[i] == 1) drawLine(i,verticalLinesUpColor);
  if(trend[i] ==-1) drawLine(i,verticalLinesDownColor);}             
  if(verticalLinesShowRetrace){
  if(trend[i] == 0 && trend[i+1]==-1) drawLine(i,verticalLinesUpColor);
  if(trend[i] == 0 && trend[i+1]== 1) drawLine(i,verticalLinesDownColor);}}}}             
//+------------------------------------------------------------------------------------------------------------------+
  void drawLine(int i,color theColor){string name = verticalLinesID+":"+Time[i];
      ObjectCreate(name,OBJ_VLINE,0,Time[i],0);
        ObjectSet(name,OBJPROP_COLOR,theColor);
        ObjectSet(name,OBJPROP_STYLE,verticalLinesStyle);
        ObjectSet(name,OBJPROP_WIDTH,verticalLinesWidth);
        ObjectSet(name,OBJPROP_BACK,true);}
//+------------------------------------------------------------------------------------------------------------------+
  void deleteLine(datetime time){string lookFor = verticalLinesID+":"+time; ObjectDelete(lookFor);}
//+------------------------------------------------------------------------------------------------------------------+
  void CleanPoint(int i,double& first[],double& second[]){
  if((second[i]!=EMPTY_VALUE) && (second[i+1]!=EMPTY_VALUE)) second[i+1]=EMPTY_VALUE; else
  if((first[i] !=EMPTY_VALUE) && (first[i+1]!=EMPTY_VALUE) && (first[i+2]==EMPTY_VALUE)) first[i+1]=EMPTY_VALUE;}
//+------------------------------------------------------------------------------------------------------------------+
  void PlotPoint(int i,double& first[],double& second[],double& from[]){
  if(first[i+1] == EMPTY_VALUE){
  if(first[i+2] == EMPTY_VALUE){first[i] = from[i];  first[i+1] = from[i+1];
      second[i]  = EMPTY_VALUE;} else {second[i] = from[i];  second[i+1] = from[i+1];
      first[i]    = EMPTY_VALUE;}} else {first[i] = from[i];
      second[i]  = EMPTY_VALUE;}}
//+------------------------------------------------------------------------------------------------------------------+
  string sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"};
  int    iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};
//+------------------------------------------------------------------------------------------------------------------+
  int stringToTimeFrame(string tfs){tfs = stringUpperCase(tfs);
  for(int i=ArraySize(iTfTable)-1; i>=0; i--)
  if(tfs==sTfTable[i] || tfs==""+iTfTable[i]) return(MathMax(iTfTable[i],Period())); return(Period());}
//+------------------------------------------------------------------------------------------------------------------+
  string timeFrameToString(int tf){for(int i=ArraySize(iTfTable)-1; i>=0; i--)
  if(tf==iTfTable[i]) return(sTfTable[i]); return("");}
//+------------------------------------------------------------------------------------------------------------------+
  string stringUpperCase(string str){string s = str;
  for(int length=StringLen(str)-1; length>=0; length--){int tchar = StringGetChar(s,length);
  if((tchar > 96 && tchar < 123) || (tchar > 223 && tchar < 256))  s = StringSetChar(s,length,tchar-32); else
  if(tchar > -33 && tchar < 0)  s = StringSetChar(s,length,tchar + 224);} return(s);}
//+------------------------------------------------------------------------------------------------------------------+
double wrk[][10];
#define bsmax  5
#define bsmin  6
#define volty  7
#define vsum  8
#define avolty 9
//+------------------------------------------------------------------------------------------------------------------+
  double iSmooth(double price, double length, double phase, int i, int s=0){
  if(length <=1) return(price);
  if(ArrayRange(wrk,0) != Bars) ArrayResize(wrk,Bars);
 
  int r = Bars-i-1;
  if (r==0) { for(int k=0; k<7; k++) wrk[r][k+s]=price; for(; k<10; k++) wrk[r][k+s]=0; return(price); }

  double len1  = MathMax(MathLog(MathSqrt(0.5*(length-1)))/MathLog(2.0)+2.0,0);
  double pow1  = MathMax(len1-2.0,0.5);
  double del1  = price - wrk[r-1][bsmax+s];
  double del2  = price - wrk[r-1][bsmin+s];
  double div    = 1.0/(10.0+10.0*(MathMin(MathMax(length-10,0),100))/100);
  int    forBar = MathMin(r,10);
       
      wrk[r][volty+s] = 0;
            if(MathAbs(del1) > MathAbs(del2)) wrk[r][volty+s] = MathAbs(del1);
            if(MathAbs(del1) < MathAbs(del2)) wrk[r][volty+s] = MathAbs(del2);
      wrk[r][vsum+s] =        wrk[r-1][vsum+s] + (wrk[r][volty+s]-wrk[r-forBar][volty+s])*div;
 
      wrk[r][avolty+s] = wrk[r-1][avolty+s]+(2.0/(MathMax(4.0*length,30)+1.0))*(wrk[r][vsum+s]-wrk[r-1][avolty+s]);
            if(wrk[r][avolty+s] > 0)
            double dVolty = wrk[r][volty+s]/wrk[r][avolty+s]; else dVolty = 0; 
                if(dVolty > MathPow(len1,1.0/pow1)) dVolty = MathPow(len1,1.0/pow1);
            if(dVolty < 1)                      dVolty = 1.0;
               
        double pow2 = MathPow(dVolty, pow1);
  double len2 = MathSqrt(0.5*(length-1))*len1;
  double Kv  = MathPow(len2/(len2+1), MathSqrt(pow2));

  if(del1 > 0) wrk[r][bsmax+s] = price; else wrk[r][bsmax+s] = price - Kv*del1;
  if(del2 < 0) wrk[r][bsmin+s] = price; else wrk[r][bsmin+s] = price - Kv*del2;
     
  double R    = MathMax(MathMin(phase,100),-100)/100.0 + 1.5;
  double beta  = 0.45*(length-1)/(0.45*(length-1)+2);
  double alpha = MathPow(beta,pow2);

        wrk[r][0+s] = price + alpha*(wrk[r-1][0+s]-price);
        wrk[r][1+s] = (price - wrk[r][0+s])*(1-beta) + beta*wrk[r-1][1+s];
        wrk[r][2+s] = (wrk[r][0+s] + R*wrk[r][1+s]);
        wrk[r][3+s] = (wrk[r][2+s] - wrk[r-1][4+s])*MathPow((1-alpha),2) + MathPow(alpha,2)*wrk[r-1][3+s];
        wrk[r][4+s] = (wrk[r-1][4+s] + wrk[r][3+s]);

  return(wrk[r][4+s]);}
//+------------------------------------------------------------------------------------------------------------------+
  void Createlevel(string objName,double start,double start2,double end,double end2,color clr){
  static int window=-1; if(window<0) window=WindowFind("RSI");
  ObjectCreate(objName,OBJ_RECTANGLE,1,0,start,Time[0],end,Time[0]);
      ObjectSet(objName,OBJPROP_COLOR,clr);
      ObjectSet(objName,OBJPROP_WIDTH,1);
      ObjectSet(objName,OBJPROP_RAY,false);
      ObjectSet(objName,OBJPROP_BACK,1);}
//+------------------------------------------------------------------------------------------------------------------+
  void DeleteCreatelevel(){ObjectDelete(lvl1); ObjectDelete(lvl2);}
//+------------------------------------------------------------------------------------------------------------------+
  void CreateLVL(){DeleteCreatelevel();
  Createlevel(lvl1,LevelUp, LevelUp, 25.,25.,clrUp);
  Createlevel(lvl2,LevelDn,LevelDn,-25.,-25.,clrDn);}
//+----SetPanel2 Function---------------------------------------------------------------------------------------------+
  void SetPanel2(long IDchart=0,string name="PanelZ",int window=0,int corner=0,int PosX=0,int PosY=0,int width=0,int height=0,
  int bg_color=0,int border_color=0,int border_width=1,bool bg=true,bool del=false){if(StringLen(name)<1)return;
  if(del) ObjectDelete(IDchart,name); window=MathMax(window,0);
  if(bg_color<0) bg_color=White; if(border_color<0) border_color=White;
  if (ObjectCreate(IDchart,name,OBJ_RECTANGLE_LABEL,window,0,0)){
  ObjectSetInteger(IDchart,name,OBJPROP_XDISTANCE,PosX);
  ObjectSetInteger(IDchart,name,OBJPROP_YDISTANCE,PosY);
  ObjectSetInteger(IDchart,name,OBJPROP_XSIZE,width);
  ObjectSetInteger(IDchart,name,OBJPROP_YSIZE,height);
  ObjectSetInteger(IDchart,name,OBJPROP_COLOR,border_color);
  ObjectSetInteger(IDchart,name,OBJPROP_BORDER_TYPE,BORDER_FLAT);
  ObjectSetInteger(IDchart,name,OBJPROP_WIDTH,border_width);
  ObjectSetInteger(IDchart,name,OBJPROP_CORNER,corner);
  ObjectSetInteger(IDchart,name,OBJPROP_STYLE,STYLE_SOLID);
  ObjectSetInteger(IDchart,name,OBJPROP_BACK,bg);
  ObjectSetInteger(IDchart,name,OBJPROP_SELECTABLE,0);
  ObjectSetInteger(IDchart,name,OBJPROP_SELECTED,0);
  ObjectSetInteger(IDchart,name,OBJPROP_HIDDEN,true);
  ObjectSetInteger(IDchart,name,OBJPROP_ZORDER,0);
  ObjectSetInteger(IDchart,name,OBJPROP_BGCOLOR,bg_color);}}
//+----SetLabel2 Function---------------------------------------------------------------------------------------------+
  void SetLabel2(long IDchart=0,string name="LabelZ",int window=0,int corner=0,int PosX=0,int PosY=0,string thetext=" ",
  int fontsize=12,string fontname="Arial",int colour=0,double angle=0,bool back=true,bool del=false,int vis=0,
  int align=ANCHOR_LEFT_UPPER,bool HideObjects=true){if(del) ObjectDelete(IDchart,name);
  corner=MathMax(corner,0);  window=MathMax(window,0);
  if(colour<0) colour = White;
  if(fontsize==0) fontsize = 8;
  if(fontname=="")  fontname = "Arial";
      if(ObjectFind(IDchart,name) < 0)
      ObjectCreate(IDchart,name,OBJ_LABEL,window,0,0,0,0);
  ObjectSetInteger(IDchart,name,OBJPROP_CORNER,corner);
  ObjectSetInteger(IDchart,name,OBJPROP_XDISTANCE,PosX);
  ObjectSetInteger(IDchart,name,OBJPROP_YDISTANCE,PosY);
    ObjectSetString(IDchart,name, OBJPROP_TEXT, thetext);
  ObjectSetInteger(IDchart,name,OBJPROP_FONTSIZE,fontsize);
    ObjectSetString(IDchart,name, OBJPROP_FONT, fontname);
  ObjectSetInteger(IDchart,name,OBJPROP_COLOR,colour);
    ObjectSetDouble(IDchart,name,OBJPROP_ANGLE,angle);
  ObjectSetInteger(IDchart,name,OBJPROP_BACK,back);
  ObjectSetInteger(IDchart,name,OBJPROP_TIMEFRAMES,vis);
  ObjectSetInteger(IDchart,name,OBJPROP_ANCHOR,align);
  ObjectSetInteger(IDchart,name,OBJPROP_HIDDEN,HideObjects);}
//+----Clean Chart Function------------------------------------------------------------------------------------------+
  void CleanUpOnIsle6(){string namek; for(int m=ObjectsTotal()-1; m>=0; m--){namek=ObjectName(m);
  if(StringSubstr(namek,0,StringLen(ID))==ID) {ObjectDelete(namek);}}}//EOF
//+----END OF FILE---------------------------------------------------------------------------------------------------+


AVT 21.06.21 00:54

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Sirocool (Beitrag 45496)
diesen Code Habe ich gefunden da gehts ab Linie 278 los kann ich dies irgendwie umbauen für einen normalen rsi

Beispiel im Anhang, wie es geht, 2 Blocks mehr damit man die Logik sieht.
Hoffe, das hilft Dir. AVT

Sirocool 21.06.21 08:07

Danke dir AVT
 
Herzlichen Dank von dir AVT




Zitat:

Zitat von AVT (Beitrag 45499)
Beispiel im Anhang, wie es geht, 2 Blocks mehr damit man die Logik sieht.
Hoffe, das hilft Dir. AVT


Sirocool 21.06.21 11:33

RSICode
 
https://bilderupload.org/image/thumb...5c2ee24268.jpg




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);
  }
//+------------------------------------------------------------------+



Alle Zeitangaben in WEZ +2. Es ist jetzt 23:18 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum