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)
-   -   Uhrzeit Trader (http://www.expert-advisor.com/forum/showthread.php?t=3902)

v6tdi 09.10.14 22:34

Uhrzeit Trader
 
Hallo EA Gemeinde,

ich habe ein kleines Problem und zwar:

Meine Order soll während einer bestimmten Uhrzeit geschlossen werden.

Das Auslesen der Uhrzeit funktioniert ganz gut.

Nur... wenn eine Order aktiv ist steigt der EA nicht in die IF Bedingung für die Uhrzeit ein. Was mache ich falsch.

Könnt Ihr mit der Frage etwas anfangen??

Vielen Dank

pako 10.10.14 00:55

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von v6tdi (Beitrag 27703)

Könnt Ihr mit der Frage etwas anfangen??

ohne Quellcode,
http://www.expert-advisor.com/forum/...1&d=1412895265

Crashbulle 10.10.14 01:16

da bin ich erstmal geschockt, da ist doch einer mit meinem V6-TDI unterwegs.

Aber Scherz beiseite, ohne .mq4 reine Wahrsagerei !

v6tdi 10.10.14 21:50

Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ja habe ich mir schon fast gedacht.

Ich habe den EA hochgeladen.

Es ist also so, dass der EA nicht in die
"if(ticket>0 && TimeCurrent()==Ordercontroltime)" einsteigt wenn eine Order geöffnet ist.


Könnt ihr mir helfen??

Was soll überhaupt gemacht werden:

Der EA löst aufgrund einer Bedingung eine Order aus -> funktioniert

Der EA schaut nach sieben 5M Kerzen, ob die Order Gewinn Abwirft bzw. Verlust macht. Bei Verlust soll die Order geschlossen werden bzw. bei Gewinn weiterlaufen und der TP weiter gelten -> diese Bedingung funktioniert nicht

Der EA steigt einfach nicht ein, obwohl bei einem BackTest die Bedingungen erfüllt sind, es scheint einfach so das er in der TP Bedingung, die in der OrderSend steht verweilt.

Vielen vielen Dank im Vorraus

pako 11.10.14 13:59

Code:

if(OrderType() == OP_BUY && differenz<0)
           
          {
            ticket_2=OrderClose(ticket,Lots,Ask,5,clrAliceBlue);
          }


v6tdi 11.10.14 14:12

Hallo Pako,

vielen Dank für de schnelle Antwort.

Aber so ist doch mein Code aufgebaut?!?

Der EA führt, wenn eine Order aktiv ist nicht mal die nächste Zeile aus

" Print(TimeCurrent());" d.h. er führt die Zeile nur aus wen keine Order aktiv ist. Da muss doch irgendwo oberhalb der Wurm drinnen sein.

Oder muss ich die Order, die aufgegeben wurde irgendwie anders formulieren damit der EA nicht auf den SL bzw.TP wartet.

Vielen Dank

fxdaytrader 11.10.14 14:22

Nebenbei: Als externe Variable muß das Symbol (bspw. EURUSD+suffix) angegeben werden, im code findet sich mindestens einmal MarketInfo(EURUSD,usw. -> Warum das?

Im Grunde könnte die externe eingabe sowie die pair-Angabe(n) im code durch Symbol() ersetzt werden, so ist sichergestellt daß der EA auch auf anderen aparen läuft.

Die Abfragen ticket>0 könnte man auch umcoden, insb. wenn mehrere orders offen sein könnten würde das Sinn machen, also bspw. alle offenen trades durdchlaufen und für jeden trade einzeln prüfen (filtern nach symbol und/oder magicnumber).

Weiter muß der slippage-Parameter auch angepaßt werden. slippage ist ein int, d.h. wenn bspw. bei 5 digits mit 10 und point multipliziert werden muß für pipangaben muß die slippage lediglich mit 10 multipliziert werden.

usw. usf. :)

v6tdi 11.10.14 14:36

Nebenbei: Als externe Variable muß das Symbol (bspw. EURUSD+suffix) angegeben werden, im code findet sich mindestens einmal MarketInfo(EURUSD,usw. -> Warum das?

Im Grunde könnte die externe eingabe sowie die pair-Angabe(n) im code durch Symbol() ersetzt werden, so ist sichergestellt daß der EA auch auf anderen aparen läuft. OK habe ich erledigt

Die Abfragen ticket>0 könnte man auch umcoden, insb. wenn mehrere orders offen sein könnten würde das Sinn machen, also bspw. alle offenen trades durdchlaufen und für jeden trade einzeln prüfen (filtern nach symbol und/oder magicnumber). es soll immer nur ein Trade offen sein

Weiter muß der slippage-Parameter auch angepaßt werden. slippage ist ein int, d.h. wenn bspw. bei 5 digits mit 10 und point multipliziert werden muß für pipangaben muß die slippage lediglich mit 10 multipliziert werden. Kannst du das nochmal näher erklären


Die Order aufgeben funktoniert schon aber es scheint so als würder der EA dann auf den SL bzw. TP warten und nicht weiter machen.







usw. usf.
vor 18 Minuten 14:12

fxdaytrader 11.10.14 14:44

Zitat:

Zitat von v6tdi (Beitrag 27717)
Weiter muß der slippage-Parameter auch angepaßt werden. slippage ist ein int, d.h. wenn bspw. bei 5 digits mit 10 und point multipliziert werden muß für pipangaben muß die slippage lediglich mit 10 multipliziert werden. Kannst du das nochmal näher erklären

header:
extern int Slippage = 3; (oder extern input nach neuer syntax)
double pips2dbl;

im init() oder oninit()-teil:
BrokerDigitAdjust(Symbol();

Die Funktion:

Code:

void BrokerDigitAdjust(string symbol) {
 int Multiplier = 1;
 int digits=MarketInfo(symbol,MODE_DIGITS);
 if (digits==3 || digits==5) Multiplier = 10;
 if (digits==6) Multiplier = 100; 
 if (digits==7) Multiplier = 1000;
 pips2dbl = Multiplier*MarketInfo(symbol,MODE_POINT);
 Slippage*=Multiplier;
 //Slippage=slippagepips*Multiplier;
}

pips2dbl für die Anpassung von pipangaben, Beispiel:
double stoplosspips = 50.0;
double stoplossprice = Ask + (stoplosspips*pips2dbl);

Wie auch immer, Deinen code habe ich mir nicht näher angeschaut ...

pako 11.10.14 16:02

Code:


if(ticket>0 && TimeCurrent()==Ordercontroltime) //Falsch

  if(ticket>0 && TimeCurrent() > Ordercontroltime)//Richtig



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