LONG und SHORT Signale kommen von der Mainlinie sowie Signallinie es folgt demnächst noch das Trendsignal.
Ihr werdet sehen die dritte wieder gabe ist sehr hilfreich beim Traden.
ich bin für Anregungen und änderungen gerne offen wo man was noch verbessern kann.
Code:
//+------------------------------------------------------------------+
//| SHARK_Stochastic_CLASSIC_V.2.1.0 - 1121 |
//| Copyright 2021 |
//| www.companyname.net |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Farbenauswahl |
//| |
//| Farbe 01 - C'35,248,48' - Grün |
//| Farbe 02 - C'204,0,15' - Rot |
//| Farbe 03 - C'93,219,231'- Hellblau |
//| Farbe 04 - C'248,86,13' - Orange |
//| Farbe 05 - C'204,0,183' - Magenta |
//| Farbe 06 - C'64,121,246'- Dunkelblau |
//| Farbe 07 - C'237,252,255'-Weiß |
//| Farbe 07 - C'254,239,79'- Hellgelb |
//| |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_minimum 0
#property indicator_maximum 100
extern string SETTING = "";
extern int K_PERIOD = 5;
extern int D_PERIOD = 3;
extern int Slowing = 3;
extern int Upper_Limit = 80;
extern int Lower_Limit = 20;
extern ENUM_MA_METHOD StoSignalMethod = MODE_SMA;
extern ENUM_APPLIED_PRICE APPLEY = PRICE_CLOSE;
extern ENUM_STO_PRICE PRICE_RANGE = 0;
extern string STYL = "";
extern color Upper_Color = C'204,0,15';
extern color Lower_Color = C'35,248,48';
extern color Hlines_Background = C'51,31,52';
extern string ALARM = "";
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
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);
}
string Name ="SHARK_STOCHASTIC_CLASSIC_V.2.1.0 - 1121 " + "("+K_PERIOD +","+ D_PERIOD+","+Slowing+","+PriceTypeToString(APPLEY)+","+Upper_Limit+","+Lower_Limit+")";
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int windowIndex=WindowFind(Name);
// ==================================== rectangle names
string NameTopLev=windowIndex+"LevelTop"; //50 -
string NameWaitUp=windowIndex+"LevelWaitTop"; // 55
string NameWaitLo=windowIndex+"LevelWaitBot"; //-45
string NameBotLev=windowIndex+"LevelBot"; //30
//+------------------------------------------------------------------+
//| Buffer |
//+------------------------------------------------------------------+
double SHARK_BUFFER_M[],SHARK_BUFFER_S[],SHARK_BUFFER_UP[],SHARK_BUFFER_DN[],SHARK_BUFFER_SIGNAL[];
bool initFinished=false;
datetime time_alert;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(5);
IndicatorDigits(Digits);//max. 2
SetIndexBuffer(0,SHARK_BUFFER_M,INDICATOR_DATA);
SetIndexStyle(0,DRAW_LINE,EMPTY,1,C'64,121,246');
SetIndexLabel(0,"MAIN");
SetIndexBuffer(1,SHARK_BUFFER_S,INDICATOR_DATA);
SetIndexStyle(1,DRAW_LINE,EMPTY,1,C'204,0,15');
SetIndexLabel(1,"SIGNAL");
SetIndexBuffer(2,SHARK_BUFFER_UP,INDICATOR_DATA);
SetIndexStyle(2,DRAW_ARROW,EMPTY,2,C'0,255,0');
SetIndexArrow(2,159);
SetIndexLabel(2,NULL);
SetIndexBuffer(3,SHARK_BUFFER_DN,INDICATOR_DATA);
SetIndexStyle(3,DRAW_ARROW,EMPTY,2,C'255,0,0');
SetIndexArrow(3,159);
SetIndexLabel(3,NULL);
SetIndexBuffer(4,SHARK_BUFFER_SIGNAL,INDICATOR_DATA);
SetIndexStyle(4,DRAW_NONE,EMPTY,1,clrNONE);
SetIndexLabel(4,"TREND");
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
ObjectsDeleteAll();
// Löschen wir alle Objekte
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
_CreateLevelChanel(Upper_Limit,Lower_Limit,Hlines_Background);
_Upper_Lower_Line(Upper_Limit,Lower_Limit,Upper_Color,Lower_Color);
int counted_bars=IndicatorCounted(),limit,i;
if(counted_bars<0)
return(-1);
if(counted_bars>0)
counted_bars--;
limit=MathMin(Bars-counted_bars,Bars-1);
for(i = limit; i >= 0 && !IsStopped(); i--)
{
SHARK_BUFFER_M[i]= iStochastic(Symbol(),Period(),K_PERIOD,D_PERIOD,Slowing,StoSignalMethod,PRICE_RANGE,MODE_MAIN,i);
SHARK_BUFFER_S[i]= iStochastic(Symbol(),Period(),K_PERIOD,D_PERIOD,Slowing,StoSignalMethod,PRICE_RANGE,MODE_SIGNAL,i);
SHARK_BUFFER_SIGNAL[i] = SHARK_BUFFER_M[i] - SHARK_BUFFER_S[i];
//+------------------------------------------------------------------+
//| LONG - TRENDSIGNAL |
//+------------------------------------------------------------------+
if(((SHARK_BUFFER_S[i] >= 20) && ( SHARK_BUFFER_S[i+1] <= 20 )) || ((SHARK_BUFFER_M[i] >= 20) && ( SHARK_BUFFER_M[i+1] <= 20 ) && (SHARK_BUFFER_M[i] > SHARK_BUFFER_S[i]) &&( SHARK_BUFFER_S[i] < 20 )) )
{
SHARK_BUFFER_UP[i+1] = SHARK_BUFFER_M[i+1]; SHARK_BUFFER_UP[i+1] = SHARK_BUFFER_S[i+1];
}
//+------------------------------------------------------------------+
//| SHORT - TRENDSIGNAL |
//+------------------------------------------------------------------+
if(((SHARK_BUFFER_S[i] <= 80) && ( SHARK_BUFFER_S[i+1] >= 80 )) || ((SHARK_BUFFER_M[i] <= 80) && ( SHARK_BUFFER_M[i+1] >= 80 ) && (SHARK_BUFFER_M[i] < SHARK_BUFFER_S[i]) &&( SHARK_BUFFER_S[i] > 80 )))
{
SHARK_BUFFER_DN[i+1] = SHARK_BUFFER_M[i+1];SHARK_BUFFER_DN[i+1] = SHARK_BUFFER_S[i+1];
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void _CreateLevelChanel(int Upper, int Lower, color BG)
{
if(true)
{
if(ObjectFind(0,NameTopLev)!=windowIndex)
if(!ObjectCreate(0,NameTopLev,OBJ_RECTANGLE,windowIndex,
Bars-1,80, //ChartBegin,70
Time[0],100) //Now,100
)
Print(__FUNCTION__+" "+NameTopLev+" failed, Code="+IntegerToString(_LastError));
ObjectSetInteger(0,NameTopLev,OBJPROP_COLOR,C'2,51,4');
if(ObjectFind(0,NameBotLev)!=windowIndex)
if(!ObjectCreate(0,NameBotLev,OBJ_RECTANGLE,windowIndex,
Bars-1,20, //ChartBegin,50
Time[0],0) //Now,500
)
Print(__FUNCTION__+" "+NameBotLev+" failed, Code="+IntegerToString(_LastError));
ObjectSetInteger(0,NameBotLev,OBJPROP_COLOR,C'51,0,4');
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void _Upper_Lower_Line(int UPPER_HEIGHT, int LOWER_DEPTH, color HEIGHT_COLOR, color DEPTH_COLOR)
{
if(initFinished==false)
{
IndicatorShortName(Name);
windowIndex=WindowFind(Name);
if(windowIndex<0)
{
// wenn die Nummer des Unterfensters -1 gleich ist, so tritt der Fehler auf
Print("Can\'t find window");
//return(0);
}
//+------------------------------------------------------------------+
//| OVERBOUGHT BEREICH 80 % |
//+------------------------------------------------------------------+
ObjectCreate("UPPERTEXT",OBJ_LABEL,windowIndex,0,LOWER_DEPTH);
ObjectSet("UPPERTEXT",OBJPROP_XDISTANCE,5);
ObjectSet("UPPERTEXT",OBJPROP_YDISTANCE,25);
ObjectSetText("UPPERTEXT", "OVERBOUGHT",10,"Times New Roman",clrWhiteSmoke);
// wir zeichnen die Linie im Unterfenster unseres Indikators
ObjectCreate("Upperline",OBJ_HLINE,windowIndex,0,LOWER_DEPTH);
ObjectSet("Upperline",OBJPROP_COLOR,HEIGHT_COLOR);
ObjectSet("Upperline",OBJPROP_WIDTH,1);
ObjectSet("Upperline",OBJPROP_STYLE,STYLE_DOT);
WindowRedraw();
// wir zeichnen das Fenster, damit wir die Linie sehen
//+------------------------------------------------------------------+
//| OVERSOLD BEREICH 20 % |
//+------------------------------------------------------------------+
ObjectCreate("LOWERTEXT",OBJ_LABEL,windowIndex,0,LOWER_DEPTH);
ObjectSet("LOWERTEXT",OBJPROP_XDISTANCE,5);
ObjectSet("LOWERTEXT",OBJPROP_YDISTANCE,175);
ObjectSetText("LOWERTEXT", "OVERSOLD",10,"Times New Roman",clrWhiteSmoke);
// wir zeichnen die Linie im Unterfenster unseres Indikators
ObjectCreate("Lowerline",OBJ_HLINE,windowIndex,0,UPPER_HEIGHT);
ObjectSet("Lowerline",OBJPROP_COLOR,DEPTH_COLOR);
ObjectSet("Lowerline",OBJPROP_WIDTH,1);
ObjectSet("Lowerline",OBJPROP_STYLE,STYLE_DOT);
WindowRedraw();
// wir zeichnen das Fenster, damit wir die Linie sehen
initFinished=true;
// Das Zeichen wurde schon beendet
}
}
//+------------------------------------------------------------------+