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)
-   -   NoDeal im Bereich psycholog. Marken (http://www.expert-advisor.com/forum/showthread.php?t=5399)

piptrade 17.01.17 16:18

NoDeal im Bereich psycholog. Marken
 
Hallo, liebe Programmier-Gemeinde,
piptrade hat da `mal `ne Frage:

Seit Tagen versuche ich einen bestimmten Bereich an psycholog. wichtigen Marken (z.B. DAX 11.100, 11.200, 11.300 usw. - jeweils +/- 7 * Point) mittels Variablen zu definieren, um ihn für eine OrderOpen auszuschließen; - leider ohne ein einfaches und möglichst elegantes Ergebnis zu erzielen.: rolleyes:

Kann mir jemand an dieser Stelle weiterhelfen und mir mit dem richtigen Tipp zur Seite stehen ?
Würde mich riesig freuen und bedanke mich schon `mal im voraus.

GlG. piptrade

Kronenchakra 17.01.17 17:26

Wenn ich dich richtig verstehe, könnte dir mit einer kleinen Funktion geholfen werden um einen Wertebereich abzufragen.
Code:

bool IsInRange(double aMin, double aMax, double aVal)
{
  if(aMin<=aMax)
      return((aVal>=aMin) && (aVal<=aMax));
  else
      return((aVal<=aMin) && (aVal>=aMax));
}

Ist blos eine Möglichkeit von vielen. (nicht getestet, sollte aber funktionieren)
Mit Funktionen ist es auch im Hauptprogramm wesentlich flüssiger zu lesen, als dort zig Variablen abzufragen. Das nur so nebenbei.

piptrade 17.01.17 18:45

Hello Kronenchakra,

das sieht alles schon recht toll aus - soweit erst einmal ein herzl. Danke.
Dennoch - die Deklaration der Bereiche ist nicht unbedingt das Problem.
Das Problem besteht in der Deklaration der "aVal"; - hier will ich nicht zig Ziffern, sondern statt dessen ein bis zwei Variable implementieren.

... also so etwas, wie dieses hier (DAX):
Code:

int aVal = 100 *x;
for (x  >= 100, x <= 200, x++);

(alle 100er von 10.000 - 20.000)

Würde dies oder etwas ähnliches funktionieren ?
Warte gespannt auf Antwort.

LG. piptrade

Kronenchakra 17.01.17 23:56

Zitat:

Zitat von piptrade (Beitrag 37176)
... also so etwas, wie dieses hier (DAX):
Code:

int aVal = 100 *x;
for (x  >= 100, x <= 200, x++);

(alle 100er von 10.000 - 20.000)

So wird's nicht ganz funktionieren

Hier ein kleines Script zum Ausprobieren.

Das geile an C ist die einfache Handhabung von mehreren Schleifenvariablen.
Das Script gibt dir die Zahlen 100 bis 1000 in Hunderterschritten aus.
Code:

void OnStart()
{
    int i,j;
    for(i=0, j=100 ; i<10; i++, j=j+100)
      Print(j);     
}

Einfacher wäre dieses
Code:

void OnStart()
{
    int i;
    for(i=100; i<=1000; i=i+100)
      Print(i);     
}

und macht das gleiche.

Das gibt's zB in Delphi(Pascal) nicht.

Nett ist auch wenn Variablen gleichzeitig rauf und runterzählen.

Code:

void OnStart()
{
    int i,j;
    for(i=0, j=1000 ; i<10; i++, j=j-100)
      Print("i: ",i, "  j:",j);     
}

Da staunt der Laie, der Fachmann wundert sich ;):)

Ich hoffe damit helfen zu können. Falls nicht, frag weiter.

LG Otto

piptrade 18.01.17 16:56

Hallo Kronenchakra,

das ist ja der Hammer ! - absolute SPITZE !!! - noch besser oder auch umfangreicher geht es glaube ich nicht !

Mir ist zwischenzeitlich auch etwas eingefallen, deshalb eine letzte Frage: Ginge das auch "SO": ?)
Code:

int Limit = 15000;
for(int i > 10000; i < Limit; i++)

Thanks, thanks, thanks; -

und ganz LG. piptrade

piptrade 21.01.17 19:43

NACHTRAG zu meinem letzten Statement:

Hallo Kronenchakra! -
oder auch auch an jeden anderen, der weiterhelfen kann!

Mein letzter script-Vorschlag war wohl doch nicht so das Richtige !

Habe mir heute (mit ein wenig mehr Zeit) nochmals jede gepostete Zeile vorgenommen und versucht einen in sich vollständigen Schnipsel zustande zu bringen:

Code:

//+--- BarrierenFilter „Barr_Top100" (DAX): --------------------+

extern int BarrLimit_Min = 7;
extern int BarrLimit_Max = 5;
extern int Limit = 15000;
//+-----------------------------------------+
double int BL_Min = BarrLimit_Min *10 *Point;
double int BL_Max = BarrLimit_Max *10 *Point;
double int limit  = Limit *10 *Point;

//+--- and then:
double aMin = i - BL_Min;
double aMax = i + BL_Max;

for (int i = 10000 *10 *Point; i <= limit; i = i + 100 *10 *Point)

bool PriceBarr;
{
  if (Bid >= aMin && Bid <= aMax)
    return (PriceBarr=0);
}   
//+--- finish with Order_ENTRY: ------------+
  if (... && PriceBarr != 0)

Ich würde mich riesig freuen, nochmals Eure Hilfe zu erhalten (vielleicht geht es richtiger, ev. auch einfacher) und sage jetzt schon einmal "Danke" dafür.
Bitte denkt daran, - Ihr habt auch einmal angefangen!

LG. Euer piptrade


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:22 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