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)
-   -   Nur Position eröffnen wenn Spread <= x ist (http://www.expert-advisor.com/forum/showthread.php?t=4875)

Top-SecreT 07.04.16 08:01

Nur Position eröffnen wenn Spread <= x ist
 
Hallo,

ich wollte diese if Bedingung in meinen EA einbauen aber irgendwie funzt das nicht.
Die Bedingung lautet:
Code:

extern integer maxSpread;
if(SymbolInfoInteger(Symbol(), SYMBOL_SPREAD) <= maxSpread){
    if(OrderSend(Symbol(), OP_BUY, lotsize, Ask, 3, stoploss, takeprofit)){
        Print...
    }
}

So und beim Print lasse ich mir den Spread genauso nochmal ausgeben wie er oben angegeben ist und da bekomme ich dann auch Werte über dem gewünschten Wert.
Kann man das nicht ausfiltern bei welchem Spread Positionen eröffnet werden sollen?



LG, Daniela

MA-EA 07.04.16 08:56

Globale Variable:
Code:

extern int Max_Spread = 40;
Nach Start:
Code:

Spread=Ask-Bid;
double S = Spread;
double MS = Max_Spread;

Order Bedingung:
Code:

S<=MS

Top-SecreT 07.04.16 09:01

Genau das habe ich doch gerade geschrieben, nur in richtig ;)
Der Spread ist doch kein double

traderdoc 07.04.16 11:14

Das wird daran liegen, dass beim 5-DigitBroker der Wert des Spreads z.B. mit 30 angegeben wird. Der "wahre" Spread beträgt aber nur 3!
D.h. wenn bei Deiner Eingabe z.B. 2 für eben 2 "wahre" Pips steht, dann müßte bei einem 5-DigitBroker intern die 2 mit 10 multipliziert werden.

traderdoc

Top-SecreT 07.04.16 12:53

ich weiß jetzt woran es lag. zu der zeit wo der wert geprüft wurde war er <= und bei der orderausführung hatte er sich geändert. Innerhalb eines ticks. wow ok das wusste ich noch nicht

traderdoc 07.04.16 16:42

Jetzt mal ohne Witz, läuft das Programm bei einem 4- oder 5-DigitBroker und was steht so in der Regel bei der Variablen maxSpread drin?

Akzeptiert der Compiler den Variablentyp "integer"?

traderdoc

MA-EA 07.04.16 20:58

Zitat:

Zitat von Top-SecreT (Beitrag 34093)
Der Spread ist doch kein double

Aber Bid und Ask.

MA-EA 07.04.16 21:43

Trotzdem muss man wohl den Max Spread als int angeben. Mein Irrtum.

traderdoc 07.04.16 22:54

Zitat:

Zitat von traderdoc (Beitrag 34101)
Jetzt mal ohne Witz, läuft das Programm bei einem 4- oder 5-DigitBroker und was steht so in der Regel bei der Variablen maxSpread drin?

Akzeptiert der Compiler den Variablentyp "integer"?

traderdoc

Natürlich akzeptiert der Compiler das nicht.
Wie konnte also das Programm überhaupt bei Dir laufen?
Ne, warum sollte man zwingend maxSpread als int angeben?
Die Frage wäre eher, lohnt sich der "Aufwand" mit dem double?

traderdoc

Top-SecreT 11.04.16 07:21

das integer war mein fehler beim abtippen :P
natürlich steht dort int
und maxSpread möchte ich angeben weil der spread manchmal dermaßen schwankt dass der EA dann auf dauer nicht mehr profitabel wäre wenn permanent positionen mit spread > 5 eröffnet werden.


LG


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