Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43248
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 254
Gesamt: 254
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 20.06.21
Mitglied
 
Registriert seit: Feb 2014
Ort: Berlin
Beiträge: 42
Sirocool befindet sich auf einem aufstrebenden Ast
Standard 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


Geändert von Sirocool (20.06.21 um 14:49 Uhr)
  #2 (permalink)  
Alt 20.06.21
Mitglied
 
Registriert seit: Feb 2014
Ort: Berlin
Beiträge: 42
Sirocool befindet sich auf einem aufstrebenden Ast
Standard habe was gefunden aber bei was anderen

Zitat:
Zitat von Sirocool Beitrag anzeigen
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 :-).



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---------------------------------------------------------------------------------------------------+

Geändert von Sirocool (20.06.21 um 20:37 Uhr)
  #3 (permalink)  
Alt 21.06.21
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Sirocool Beitrag anzeigen
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
Angehängte Dateien
Dateityp: mq4 BiSi-Expl-RSIcolorBlocks.mq4 (18,5 KB, 6x aufgerufen)
  #4 (permalink)  
Alt 21.06.21
Mitglied
 
Registriert seit: Feb 2014
Ort: Berlin
Beiträge: 42
Sirocool befindet sich auf einem aufstrebenden Ast
Standard Danke dir AVT

Herzlichen Dank von dir AVT




Zitat:
Zitat von AVT Beitrag anzeigen
Beispiel im Anhang, wie es geht, 2 Blocks mehr damit man die Logik sieht.
Hoffe, das hilft Dir. AVT
  #5 (permalink)  
Alt 21.06.21
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);
  }
//+------------------------------------------------------------------+
Thema geschlossen

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------