Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurck   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3784
Beitrge: 36762
Benutzer: 5.991
Aktive Benutzer: 484
Links: 80
Wir begren unseren neuesten Benutzer: kvink
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 10 Stunden
- kvink
vor 11 Stunden
- taipan
vor 12 Stunden
- mily
vor 2 Tagen
- Geccco
vor 2 Tagen
- forexadven...

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gste: 31
Gesamt: 31
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 20.08.16
Mitglied
 
Registriert seit: Mar 2016
Beitrge: 68
SusanneH befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RetepM Beitrag anzeigen
Hi,
Upps mit "Sorry, hast Du den Code mal angeschaut." hatte ich eigentlich nicht Dich gemeint :-) So sind die Buffer im Indikator dokumentiert:
0 - > double UpperLine[];
1 - > double LowerLine[];
2 - > double Target1[];
3 - > double Target2[];
4 - > double BuyArrow[];
5- > double SellArrow[];
6 - > double BullDot[];
7- > double BearDot[];
Wenn Du die aktuelle Kerze aufrufst, bekommst Du immer 0 bis 3 zurck. Fr die anderen Buffer gibt es zunchst EMPTY_VALUE. Erst wenn ein Wert tatschlich vorhanden ist (sprich: er malt einen Arrow oder einen Dot) bekommst Du auch den dazugehrigen Wert. In der nchsten Kerze hast Du dann aber schon wieder EMPTY_VALUE.
Fr einen EA musst Du nur Ask/Bid >/< BuyArrow/SellArrow in der aktuellen Kerze hernehmen.

Nettes Teil, der Indikator!
Hast du das auch berprft?
Das war gestern Abend auch mein Gedanke und ich hab darauf hin den Indikator in einen fertigen EA gehngt und durchgestept. Der BuyArrow wurde gezeichnet, ein dementsprechender Wert kam aber nicht bei der jeweiligen Kerze bei mir an

Anmerken mchte ich aber, dass man diese Buffer ohnehin nicht bentigt, da man das ganze auch schn z.B.: mit "Ask > UpperLine" im EA selbst auswerten kann.
  #12 (permalink)  
Alt 20.08.16
Mitglied
 
Registriert seit: Feb 2016
Beitrge: 131
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Hab ich, passt. Uperline und Lowerline als Ordertrigger, erinnern mich an Markttechnik (123). Das ist in dieser Konstellation relativ gefhrlich. Die Kombination mit einem Non-Redraw-Zigzag erscheint mir berlegenswert.
  #13 (permalink)  
Alt 20.08.16
Mitglied
 
Registriert seit: Apr 2014
Beitrge: 92
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard

es ist doch ne weile vergangen seitdem ich den Thread erffnet habe und hab da einiges vergessen was ich probiert habe um das Problem zu lsen, sorry leute fr die verwirrung, hab da so einiges wohl nicht mitgeteilt weil es mittlerweise auch lnger her ist und ich es vergessen hab, bin zwar noch am Anfang meines Programierdaseins aber das eine oder andere hab ich schon gelernt . Was ihr schreibt ist vllig korrekt , so bin ich auch vorgegangen, denk das ich nicht smtliche schritte mitgeteilt habe , ist das fr euch natrlich auch nicht ersichtlich.

Also was ich immer tuhe wenn ich etwas anfange mit nem Indikator zu proggen, ist erstmal schauen ob ich die Werte der Buffer korrekt zurck bekomme, idR. klappt das ganz einfach mit iCustom und dann beginnt man ja mit dem logischen Konstrukt/Aufbau des Codes. So hab ich es auch hier versucht. Von Empty Value hab ich davor noch nie was gelesen/gehrt. Um zu sehen ob der Indikator auch nen anderen Wert zurck gibt als den Standartwert von Empty Value, hab ich dann eben auch ne Codezeile dazu geschrieben. Das Ergebnis ist, dass ich einmalig einen Wert zurck bekommen hatte und danach nix mehr passiert is. Kann natrlich sein das ich auch was falsch gemacht habe. Ich habs heut nochmal probiert mit dem selben ergebnis, hier ist der Code dazu mit nem Chartbeispiel....

Code:
int OnInit()
  {
//---
Anzeige();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
{

double A =  iCustom(NULL,0,"Testindikator",5,0.4,1.0,true ,true,true,1.5,3.0,true,0,1); //Buffer  0
double B =  iCustom(NULL,0,"Testindikator",5,0.4,1.0,true ,true,true,1.5,3.0,true,1,1); //Buffer  1
double C =  iCustom(NULL,0,"Testindikator",5,0.4,1.0,true ,true,true,1.5,3.0,true,2,1); //Buffer  2
double D =  iCustom(NULL,0,"Testindikator",5,0.4,1.0,true ,true,true,1.5,3.0,true,3,1); //Buffer  3
double E =  iCustom(NULL,0,"Testindikator",5,0.4,1.0,true ,true,true,1.5,3.0,true,4,1); //Buffer  4
double F =  iCustom(NULL,0,"Testindikator",5,0.4,1.0,true ,true,true,1.5,3.0,true,5,1); //Buffer  5
double G =  iCustom(NULL,0,"Testindikator",5,0.4,1.0,true ,true,true,1.5,3.0,true,6,1); //Buffer  6
double H =  iCustom(NULL,0,"Testindikator",5,0.4,1.0,true ,true,true,1.5,3.0,true,7,1); //Buffer  7


double EV = EMPTY_VALUE;// Empty Value Wert

Comment("Buffer 4: ",E,"\nBuffer 5: ",F,"\nEV       : ",EV);

if(E != EV && Close[1]> E)
  {
   Ausgabe ("Buffer 4",DoubleToString(E,5),clrWhite);
   Ausgabe ("Buffer 4 Time",TimeToStr (Time[1],TIME_MINUTES),clrWhite);
   Ausgabe ("Buffer 4 Date",TimeToStr (Time[1],TIME_DATE),clrWhite);
  }
if(F != EV && Close[1] < F)
  {
   Ausgabe ("Buffer 5",DoubleToString(F,5),clrWhite);
   Ausgabe ("Buffer 4 Time",TimeToStr (Time[1],TIME_MINUTES),clrWhite);
   Ausgabe ("Buffer 5 Date",TimeToStr (Time[1],TIME_DATE),clrWhite);
  }
return(0);
}

void Ausgabe (string name, string wert, color col   )
{
    ObjectSetText(name,wert,Size,Style,col);
}

void Anzeige()
{


   ObjectCreate   ("Buffer 4",OBJ_LABEL,0,0,0);
   ObjectSetText  ("Buffer 4","",Size,Style,clrWhite);
   ObjectSet      ("Buffer 4",OBJPROP_CORNER,1);
   ObjectSet      ("Buffer 4",OBJPROP_XDISTANCE,400);
   ObjectSet      ("Buffer 4",OBJPROP_YDISTANCE,30);
   ObjectCreate   ("TextBuffer 4",OBJ_LABEL,0,0,0);
   ObjectSetText  ("TextBuffer 4","Buffer 4: ",Size,Style,clrYellow);
   ObjectSet      ("TextBuffer 4",OBJPROP_CORNER,1);
   ObjectSet      ("TextBuffer 4",OBJPROP_XDISTANCE,500);
   ObjectSet      ("TextBuffer 4",OBJPROP_YDISTANCE,30);

   ObjectCreate   ("Buffer 4 Time",OBJ_LABEL,0,0,0);
   ObjectSetText  ("Buffer 4 Time","" ,Size,Style,clrWhite);
   ObjectSet      ("Buffer 4 Time",OBJPROP_CORNER,1);
   ObjectSet      ("Buffer 4 Time",OBJPROP_XDISTANCE,400);
   ObjectSet      ("Buffer 4 Time",OBJPROP_YDISTANCE,50);
   ObjectCreate   ("TextBuffer 4 Time",OBJ_LABEL,0,0,0);
   ObjectSetText  ("TextBuffer 4 Time","Buffer 4 Time: ",Size,Style,clrYellow);
   ObjectSet      ("TextBuffer 4 Time",OBJPROP_CORNER,1);
   ObjectSet      ("TextBuffer 4 Time",OBJPROP_XDISTANCE,500);
   ObjectSet      ("TextBuffer 4 Time",OBJPROP_YDISTANCE,50);   
   
   ObjectCreate   ("Buffer 4 Date",OBJ_LABEL,0,0,0);
   ObjectSetText  ("Buffer 4 Date","" ,Size,Style,clrWhite);
   ObjectSet      ("Buffer 4 Date",OBJPROP_CORNER,1);
   ObjectSet      ("Buffer 4 Date",OBJPROP_XDISTANCE,400);
   ObjectSet      ("Buffer 4 Date",OBJPROP_YDISTANCE,70);
   ObjectCreate   ("TextBuffer 4 Date",OBJ_LABEL,0,0,0);
   ObjectSetText  ("TextBuffer 4 Date","Buffer 4 Date: ",Size,Style,clrYellow);
   ObjectSet      ("TextBuffer 4 Date",OBJPROP_CORNER,1);
   ObjectSet      ("TextBuffer 4 Date",OBJPROP_XDISTANCE,500);
   ObjectSet      ("TextBuffer 4 Date",OBJPROP_YDISTANCE,70);   
 //-*-----------------------------------------------------------------------------------------  
   ObjectCreate   ("Buffer 5",OBJ_LABEL,0,0,0);
   ObjectSetText  ("Buffer 5","",Size,Style,clrWhite);
   ObjectSet      ("Buffer 5",OBJPROP_CORNER,1);
   ObjectSet      ("Buffer 5",OBJPROP_XDISTANCE,100);
   ObjectSet      ("Buffer 5",OBJPROP_YDISTANCE,30);
   ObjectCreate   ("TextBuffer 5",OBJ_LABEL,0,0,0);
   ObjectSetText  ("TextBuffer 5","Buffer 5: ",Size,Style,clrYellow);
   ObjectSet      ("TextBuffer 5",OBJPROP_CORNER,1);
   ObjectSet      ("TextBuffer 5",OBJPROP_XDISTANCE,200);
   ObjectSet      ("TextBuffer 5",OBJPROP_YDISTANCE,30);
 
   ObjectCreate   ("Buffer 5 Time",OBJ_LABEL,0,0,0);
   ObjectSetText  ("Buffer 5 Time","",Size,Style,clrWhite);
   ObjectSet      ("Buffer 5 Time",OBJPROP_CORNER,1);
   ObjectSet      ("Buffer 5 Time",OBJPROP_XDISTANCE,100);
   ObjectSet      ("Buffer 5 Time",OBJPROP_YDISTANCE,50);
   ObjectCreate   ("TextBuffer 5 Time",OBJ_LABEL,0,0,0);
   ObjectSetText  ("TextBuffer 5 Time","Buffer 5 Time: ",Size,Style,clrYellow);
   ObjectSet      ("TextBuffer 5 Time",OBJPROP_CORNER,1);
   ObjectSet      ("TextBuffer 5 Time",OBJPROP_XDISTANCE,200);
   ObjectSet      ("TextBuffer 5 Time",OBJPROP_YDISTANCE,50);

   ObjectCreate   ("Buffer 5 Date",OBJ_LABEL,0,0,0);
   ObjectSetText  ("Buffer 5 Date","",Size,Style,clrWhite);
   ObjectSet      ("Buffer 5 Date",OBJPROP_CORNER,1);
   ObjectSet      ("Buffer 5 Date",OBJPROP_XDISTANCE,100);
   ObjectSet      ("Buffer 5 Date",OBJPROP_YDISTANCE,70);
   ObjectCreate   ("TextBuffer 5 Date",OBJ_LABEL,0,0,0);
   ObjectSetText  ("TextBuffer 5 Date","Buffer 5 Date: ",Size,Style,clrYellow);
   ObjectSet      ("TextBuffer 5 Date",OBJPROP_CORNER,1);
   ObjectSet      ("TextBuffer 5 Date",OBJPROP_XDISTANCE,200);
   ObjectSet      ("TextBuffer 5 Date",OBJPROP_YDISTANCE,70);

}

habs auch so probiert
Code:
if(E != EV)
if(E < EV)
aber immer mit dem gleichen erbegnis. Nach dem ersten erhaltenen Wert kommt nix mehr. Im Chart hab ichs nochmal dargestellt , damit man es besser verstehen kann.

Wenn ich die Kerze des Arrows direkt anspreche (mit nem Custom Indikator wo ich den Indikator aufrufe und die Kerze des Arrows unter shift hinterlege), dann bekomm ich auch den korrekten wert zurck des Arrows , dass bedeutet ja das beide Arrows ja doch den korrekten wert zurck geben wenn Sie erkannt werden. Aber wenn ich das ber nen EA mache , funktioniert das ned, vom logischen her ist das doch das gleiche prinzip , deswegen versteh ich es ned warum ich keine aktuellen werte bekomme.


Zitat:
Nettes Teil, der Indikator!
also er ist sehr hilfreich, wenn man nach Dow handeln mchte und nimmt einem Arbeit ab, aber nach dem Indikator alleine zu handeln wrd ich doch abraten, da muss man noch ein wenig mitarbeiten

Zitat:
Anmerken mchte ich aber, dass man diese Buffer ohnehin nicht bentigt, da man das ganze auch schn z.B.: mit "Ask > UpperLine" im EA selbst auswerten kann.
das ist richtig Susanne, nur gehts hier um die Filterung, dafr brauch ich die Arrows

Danke schon mal vorab fr die vielen antworten, hab ned gedacht das hier noch was kommen wird, tolles Forum echt

LG
Angehngte Grafiken
Dateityp: png BUffer.png (39,1 KB, 5x aufgerufen)
  #14 (permalink)  
Alt 22.08.16
Mitglied
 
Registriert seit: Apr 2014
Beitrge: 92
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard

so Mdels , also ich hab den "Fehler" gefunden.

Wenn von der ausgewhlten Kerze keinen Wert zurck kommt, dann kann es ja nur daran liegen, das zu dem Abfragemoment einfach kein Rckgabewert da ist, eigentlich ist es ja logisch (wie immer im nachhinein) , hab die Shift Kerze im iCustom von 1 auf 4 verndert und siehe da, so klappt es, aber eben auch nicht bei jedem Arrow. Der Indikator hinterlegt den Arrow nicht immer sofort nach dem Bruch der Linien, wei aktuell leider auch ned warum.....
  #15 (permalink)  
Alt 22.08.16
Mitglied
 
Registriert seit: Feb 2016
Beitrge: 131
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Probier mal Shft 0 (fr Buffer 0-3) und 1 (fr die anderen)
  #16 (permalink)  
Alt 23.08.16
Mitglied
 
Registriert seit: Apr 2014
Beitrge: 92
Trader6666 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RetepM Beitrag anzeigen
Probier mal Shft 0 (fr Buffer 0-3) und 1 (fr die anderen)
hatte ich doch probiert, darum hab ich den thread doch erffnet
Bringt so leider nix, man kann das Arrow Problem auch "
manuell" lsen indem man den ZZ Indikator selber her nimmt und die Hoch/Tiefs + die Brche ermittelt, geht wesentlich stressfreier , danke dennoch an alle fr die Hilfestellung!!
  #17 (permalink)  
Alt 24.08.16
Mitglied
 
Registriert seit: Feb 2016
Beitrge: 131
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht findest Du hier noch ein paar weitere Ideen :-)

//////////////////////////////////////////////////////////////
// http://www.forexmt4.com/_MT4_Systems...%20Trading.mq4

//+------------------------------------------------------------------+
//| Level Trading.mq4 |
//| by Accel |
//+------------------------------------------------------------------+

#property copyright "Accel"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

extern color TrendUpColor=Blue;
extern color TrendDownColor=Red;
extern bool SnapExtremumsToLevelOnChar=True;
extern int FractalBarsOnEachSide=5;
extern int ProceedMaxHistoryBars=1000;
extern int LevelActuality=160;
extern bool RestDefaultTimeframeValues=1;
extern int ExtremumToLevelMaxGap=100;
extern double PriceDeltaFor1Bar=20;

int LevelLength[];
int LevelWidth[];
int PriceCrossedLevel;
double gd_long[];
double gd_short[];

int init()
{
IndicatorBuffers(2);
SetIndexBuffer(0,gd_long);
SetIndexBuffer(1,gd_short);
return(0);
}

int deinit()
{
int i=0;

for (i=Bars-1;i>=0;i--)
if (ObjectFind("Level_"+i)!=-1)
ObjectDelete("Level_"+i);
for (i=Bars-1;i>=0;i--)
if (ObjectFind("Trend_"+i)!=-1)
ObjectDelete("Trend_"+i);
return(0);
}

int LastBarWasHighLow(int LELB, int LEHB)
{
if (LELB==-1 && LEHB!=-1)
return(1);
if (LELB!=-1 && LEHB==-1)
return(-1);
if (LELB!=-1 && LEHB!=-1 && LELB>LEHB)
return(1);
if (LELB!=-1 && LEHB!=-1 && LELB<LEHB)
return(-1);
return(0);
}

int start()
{
int i,j;
int BarsToCheck;
int Stop;
int CurrState; //CurrState=0 - , 1- , -1-
int LastExtremumHighBar=-1;
int LastExtremumLowBar=-1;
int LastExtremumBar=-1;
double iFractalValue=0,jFractalValue=0;

SetIndexStyle(0,DRAW_ARROW,0,3);
SetIndexArrow(0,159);
SetIndexStyle(1,DRAW_ARROW,0,3);
SetIndexArrow(1,159);
ArrayInitialize(gd_long,0);
ArrayInitialize(gd_short,0);

if (RestDefaultTimeframeValues==1)
{
switch (Period())
{
case 1:
{
ExtremumToLevelMaxGap=2;
PriceDeltaFor1Bar=0.2;
break;
}
case 5:
{
ExtremumToLevelMaxGap=5;
PriceDeltaFor1Bar=0.2;
break;
}
case 15:
{
ExtremumToLevelMaxGap=8;
PriceDeltaFor1Bar=0.2;
break;
}
case 30:
{
ExtremumToLevelMaxGap=10;
PriceDeltaFor1Bar=0.3;
break;
}
case 60:
{
ExtremumToLevelMaxGap=15;
PriceDeltaFor1Bar=0.4;
break;
}
case 240:
{
ExtremumToLevelMaxGap=25;
PriceDeltaFor1Bar=0.4;
break;
}
case 1440:
{
ExtremumToLevelMaxGap=75;
PriceDeltaFor1Bar=1.5;
break;
}
case 10080:
{
ExtremumToLevelMaxGap=150;
PriceDeltaFor1Bar=5;
break;
}
case 43200:
{
ExtremumToLevelMaxGap=300;
PriceDeltaFor1Bar=24;
break;
}
}
}

PriceCrossedLevel=ExtremumToLevelMaxGap*2;

ArrayResize(LevelLength,Bars);
ArrayInitialize(LevelLength,0);
ArrayResize(LevelWidth,Bars);
ArrayInitialize(LevelWidth,1);

if (FractalBarsOnEachSide<=0)
FractalBarsOnEachSide=1;

//
for (i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
//
if (i==Lowest(Symbol(),Period(),MODE_LOW,FractalBarsO nEachSide*2+1,i-FractalBarsOnEachSide))
{
switch (LastBarWasHighLow(LastExtremumLowBar,LastExtremum HighBar))
{
case -1:
{
if (Low[i]<Low[LastExtremumLowBar])
{
gd_long[i]=Low[i];
gd_long[LastExtremumLowBar]=0;
LastExtremumLowBar=i;
}
break;
}
case 1:
{
if (Low[i]<High[LastExtremumHighBar])
{
gd_long[i]=Low[i];
LastExtremumLowBar=i;
}
break;
}
case 0:
{
gd_long[i]=Low[i];
LastExtremumLowBar=i;
break;
}
}
}
//
if (i==Highest(Symbol(),Period(),MODE_HIGH,FractalBar sOnEachSide*2+1,i-FractalBarsOnEachSide) && gd_long[i]==0)
{
switch (LastBarWasHighLow(LastExtremumLowBar,LastExtremum HighBar))
{
case 1:
{
if (High[i]>High[LastExtremumHighBar])
{
gd_short[i]=High[i];
gd_short[LastExtremumHighBar]=0;
LastExtremumHighBar=i;
}
break;
}
case -1:
{
if (High[i]>Low[LastExtremumLowBar])
{
gd_short[i]=High[i];
LastExtremumHighBar=i;
}
break;
}
case 0:
{
gd_short[i]=High[i];
LastExtremumHighBar=i;
break;
}
}
}
}

//, ( )
for (i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
if (gd_long[i]==Low[i])
{
Stop=-1;
CurrState=0;
for (j=i-1;j>=0 && Stop==-1;j--)
{
if (CurrState==-1)
if (High[j]>Low[i]+(i-j)*PriceDeltaFor1Bar*Point+PriceCrossedLevel*Point )
Stop=j;
if (CurrState==0)
if (Low[j]<Low[i]+(i-j)*PriceDeltaFor1Bar*Point-PriceCrossedLevel*Point)
CurrState=-1;
}
if (Stop!=-1)
LevelLength[i]=i-Stop;
else
LevelLength[i]=i;
}

if (gd_short[i]==High[i])
{
Stop=-1;
CurrState=0;
for (j=i-1;j>=0 && Stop==-1;j--)
{
if (CurrState==1)
if (Low[j]<High[i]+(i-j)*PriceDeltaFor1Bar*Point-PriceCrossedLevel*Point)
Stop=j;
if (CurrState==0)
if (High[j]>High[i]+(i-j)*PriceDeltaFor1Bar*Point+PriceCrossedLevel*Point )
CurrState=1;
}
if (Stop!=-1)
LevelLength[i]=i-Stop;
else
LevelLength[i]=i;
}
}

//
for (i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
if (LevelLength[i]>0)
{
if (gd_long[i]!=0)
iFractalValue=gd_long[i];
if (gd_short[i]!=0)
iFractalValue=gd_short[i];
BarsToCheck=MathMin(LevelActuality,LevelLength[i]);
j=i-1;
LevelLength[i]=BarsToCheck;
while (BarsToCheck>0)
{
if (LevelLength[j]>0)
{
if (gd_long[j]!=0)
jFractalValue=gd_long[j];
if (gd_short[j]!=0)
jFractalValue=gd_short[j];

if (MathAbs(iFractalValue+(i-j)*PriceDeltaFor1Bar*Point-jFractalValue)<ExtremumToLevelMaxGap*Point)
{
BarsToCheck=MathMin(LevelActuality,LevelLength[j]);
LevelLength[i]=i-j+BarsToCheck;
LevelLength[j]=0;
LevelWidth[i]++;
if (SnapExtremumsToLevelOnChar==1)
{
if (gd_long[j]!=0)
{
gd_long[j]=iFractalValue+(i-j)*PriceDeltaFor1Bar*Point;
}
if (gd_short[j]!=0)
{
gd_short[j]=iFractalValue+(i-j)*PriceDeltaFor1Bar*Point;
}
}
}
}
BarsToCheck--;
j--;
}
}
}

//
for (i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
if (gd_long[i]!=0 || gd_short[i]!=0)
{
if (LastExtremumBar!=-1)
{
if (gd_long[i]!=0)
{
ObjectCreate(StringConcatenate("Trend_",i),OBJ_TRE ND,0,
Time[LastExtremumBar],gd_short[LastExtremumBar],Time[i],gd_long[i]);
ObjectSet(StringConcatenate("Trend_",i),OBJPROP_CO LOR,TrendDownColor);
}
if (gd_short[i]!=0)
{
ObjectCreate(StringConcatenate("Trend_",i),OBJ_TRE ND,0,
Time[LastExtremumBar],gd_long[LastExtremumBar],Time[i],gd_short[i]);
ObjectSet(StringConcatenate("Trend_",i),OBJPROP_CO LOR,TrendUpColor);
}
ObjectSet(StringConcatenate("Trend_",i),OBJPROP_RA Y,0);
ObjectSet(StringConcatenate("Trend_",i),OBJPROP_WI DTH,1);
}
LastExtremumBar=i;
}
}

//
for (i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
if (LevelLength[i]!=0)
{
if (gd_long[i]!=0)
iFractalValue=gd_long[i];
if (gd_short[i]!=0)
iFractalValue=gd_short[i];

ObjectCreate(StringConcatenate("Level_",i),OBJ_TRE ND,0,
Time[i],iFractalValue,Time[i-LevelLength[i]],iFractalValue+LevelLength[i]*PriceDeltaFor1Bar*Point);
ObjectSet(StringConcatenate("Level_",i),OBJPROP_RA Y,0);
if (LevelWidth[i]>1)
{
ObjectSet(StringConcatenate("Level_",i),OBJPROP_WI DTH,MathMin(LevelWidth[i],5));
if (LevelWidth[i]==2)
ObjectSet(StringConcatenate("Level_",i),OBJPROP_CO LOR,LightGray);
if (LevelWidth[i]==3)
ObjectSet(StringConcatenate("Level_",i),OBJPROP_CO LOR,Silver);
if (LevelWidth[i]==4)
ObjectSet(StringConcatenate("Level_",i),OBJPROP_CO LOR,DarkGray);
if (LevelWidth[i]>=5)
ObjectSet(StringConcatenate("Level_",i),OBJPROP_CO LOR,Gray);
}
else
{
ObjectSet(StringConcatenate("Level_",i),OBJPROP_CO LOR,LightGray);
ObjectSet(StringConcatenate("Level_",i),OBJPROP_ST YLE,STYLE_DOT);
}
}
}

return(0);
}
//////////////////////////////////////////////////////////////
Thema geschlossen

Lesezeichen

Stichworte
buffer, bufferauswertung, indikator buffer, mql4, programmierung, programmierung metatrader


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 Beitrge zu antworten.
Es ist Ihnen nicht erlaubt, Anhnge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beitrge 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 +2. Es ist jetzt 05:17 Uhr.



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