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)
-   -   EA beenden, Orders schliessen und neu starten (http://www.expert-advisor.com/forum/showthread.php?t=1984)

FX4me 26.02.12 12:21

EA beenden, Orders schliessen und neu starten
 
Hey Leute,

weiss wer, wie man folgende Fragestellung lösen kann. Der EA soll eine bestimmte Zeit laufen (z.B. von 7.00-17.00Uhr), dann stoppen, alle Orders (Positionen) löschen bzw. schliessen (Idealerweise sollte er die alte Position mit einem Trailingstop versehen) und dann wieder neu starten. (in dem Fall handelt er halt immer von 7-17).

Vielen Dank, ich lass euch auch dann wissen was bei meiner Maschine rauskommt :-).

sandmann23 26.02.12 12:50

Hi,

Code:

if(isTradeTime("07:00","17:00") == false)
{
// ab hier OrderClose()-/TP-Routine

return(0);
}

// ab hier normale Handelsroutine, da wir innerhalb des Zeitfensters sind


/**
* Checks if we are in the given timeframe
* e.g. string timebegin = "08:00"
* return(true) if localtime = 8:00
*/
bool isTradeTime(string begin, string end)
        {
        if(begin == "" || end == "")
                return(false);

        // TODO testen ob int reicht
        datetime time0 = StrToTime(begin);
        datetime time1 = StrToTime(end);

        if(time1 > time0)
                return(false);

        // saturday
        if(TimeDayOfWeek(TimeLocal()) == 6)
                return(false);
       
        // sunday 23:00 begin
        if(TimeDayOfWeek(TimeLocal()) == 0 && TimeLocal() < StrToTime("23:00"))
                return(false);

        if(TimeLocal() >= time0 && TimeLocal() <= time1)
                return(true);

        return(false);
        }

ungetestet und an eigene Bedürfnisse bitte anpassen.

Gruss
sandmann

hugo 26.02.12 13:57

Kann man das im Quelltext einfügen, wo man möchte, Sandmann?

sandmann23 26.02.12 15:32

isTradeTime ist eine Funktion, die muss ausserhalb von start() stehen

wenn man viele Funktionen hat, dann lagert man die in eine mqh aus und included diese.

Code:

if(isTradeTime("07:00","17:00") == false)
{
// ab hier OrderClose()-/TP-Routine

return(0);
}

// ab hier normale Handelsroutine, da wir innerhalb des Zeitfensters sind

muss ganz am Anfang der start() stehen, da durch das return(0) die start() vorzeitig beendet wird.

FX4me 26.02.12 16:40

Hallo Sandmann,

vorerst mal vielen Dank für Deine Bemühungen. Ich pfusch hier etwas herum komme aber auf kein vernünftiges Resultat. Ich versuche einen Martingale Ansatz, ABER mit gewissen Verfeinerungen (zB mit SL, Mindestabstand wo der EA erst dazunehmen darf, Filter etc).
Die weitere Idee war das Ding einfach einmal am Tag abschalten und wieder neu starten, bei einer hohen Trefferwahrscheinlichkeit sollten die Verluste die beim Schliessen zu einer vordefninierten Zeit enstehen durch die Trades am Tag kompensiert werden. Den Vorteil sehe ich darin, das das Risiko das Konto zu plätten doch deutlich sinken sollte.

Hätte einen Deal für Dich, würdest Du mir das Feature einbauen? Falls dann was rauskommt kannst den EA gerne verwenden :-).

Deal or no Deal gg ?
FX4me

sandmann23 26.02.12 17:40

Hallo,

ich halte nichts davon, im Verlust nachzukaufen bzw weil man verloren hat seine Positionsgrösse zu erhöhen/verdoppeln.

Nachkaufen im Gewinn bei neuem Signal ist IMHO sinnvoller.

Eine Ausnahme ist es, wenn man sein System kennt und das Verhalten des Marktes, dann kann man durchaus nach X Verlusten mal die Positionsgrösse erhöhen.

Ansonsten lasse ich meine Systeme eher bewerten, wie stark das Signal ist, und dann dürften die in Grenzen ihre Positionsgrösse anpassen.

Ausserdem kenne ich mich, wenn du mir deinen Code schickst, dann werde ich nicht nur das Feature einbauen. Dann wird der komplette EA sicher gemacht. (die wenigsten haben ein sicheres OrderManagement in ihrem Code. Ist nur eine Frage der Zeit, bis die Situation eintritt, das der EA sich verselbständigt und ungewollt 50 Orders eröffnet.) Ich kann halt nichts aus der Hand geben, das ich nicht selber auch nutzen würde.

Also wohl no deal, ausser du willst es mir als Auftragsarbeit geben.

Dein timeframe Problem sollte mit den Codesnipplets von mir lösbar sein.

Gruss
sandmann


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