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)
-   -   Mehrere EAs auf gleichem Basiswert - Ordereröffnung auf bestimmte GMT limitieren (http://www.expert-advisor.com/forum/showthread.php?t=1349)

xmich 31.03.11 15:44

Mehrere EAs auf gleichem Basiswert - Ordereröffnung auf bestimmte GMT limitieren
 
Hallo,

ich bin neu hier und auf der Suche nach Antworten auf die folgende Fragen.

1) Kann ich mehrere verschiedene EAs auf den gleichen Basiswert handeln. Wenn ja, welche Einstellungen muss ich beachten bzw. wo kann ich das machen. Oder wo kann ich hier mehr Infos dazu bekommen.

2) Ich habe ein selbst gebastelten EA und möchte, dass dieser nur zwischen 9-12 Uhr und 14-18 Orders eröffnet. In der Zeit dazwischen soll nur TP / SL / TS gemanagt werden. Auch hier wieder, wie kann ich das einstellen, bzw. wo gibt es hierzu genauere Infos.

3) Bin auch noch auf der Suche nach der Funktion, bei einem EMA System, dass auf Close (nicht Tick) Basis läuft, im gleichen Balken z. B. den long zu schließen und den short zu eröffnen. Bisher macht er mir die Eröffnung der Gegenposition nur im nächsten Balken.

Für jede Hilfe, Tipps oder Links wäre ich sehr dankbar.

schöne Grüße

Michael

Bohne 01.04.11 23:07

Gleich soviele fragen auf einmal. Poste das teil hier hoch. dann kan man immer noch wieter sehen. Ob close open oder was auch immer kannst du direkt in der hilfe nachschauen, da steht genau geschrieben. Im Editor rechts steht die hilfe dazu und ist auch alles beschrieben.

xmich 03.04.11 09:40

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

erstmal Danke für Deine Antwort.

Siehe unten an einem ganz einfachen EMA crossover System. Wenn der 10er den 38er schneidet long oder short.

Wäre super, wenn mir hier jemand weiterhelfen kann, was ich hier in den Programmcode mit reinnehmen muss, so dass die ENTRY Signale nur zwischen 9-12 Uhr und 14-18 Uhr ausgeführt werden. In der Zeit dazwischen soll nur TP / SL / TS gemanagt werden.

Vielen Dank

Michael


//+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder |
//| Expert Advisor Builder for MetaTrader 4 |
//| |
//| In no event will author be liable for any damages whatsoever. |
//| Use at your own risk. |
//| |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+

#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4

#property copyright "Expert Advisor Builder"
#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = False;
extern double Lots = 0.1;
extern int Slippage = 1;
extern bool UseStopLoss = True;
extern int StopLoss = 50;
extern bool UseTakeProfit = True;
extern int TakeProfit = 200;
extern bool UseTrailingStop = True;
extern int TrailingStop = 50;

int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;



if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;

//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+


double Buy1_1 = iMA(NULL, 0, 10, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Buy1_2 = iMA(NULL, 0, 38, 0, MODE_EMA, PRICE_CLOSE, Current + 0);





//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+

//Check position
bool IsTrade = False;

for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close

//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+



//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close

//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+



//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}

//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+

if (Buy1_1 > Buy1_2) Order = SIGNAL_BUY;



//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+

//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}

//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}

if (!EachTickMode) BarCount = Bars;

return(0);
}
//+------------------------------------------------------------------+

Bohne 03.04.11 14:13

Habs mir fast schon gedacht, du hast hier den Ea builder benutz.
zu 3)
der ea läuft nur bei jedem neuen Kerzen chart an. Das hast du mit der funktion
if (!EachTickMode) BarCount = Bars; gemacht, der müsste hier raus. Dann prüft er auch bei jedem tick anstatt bei jedem bar.

xmich 03.04.11 16:34

Da ich kein Programmierer bin, ist für mich der EA Builder im Augenblick die einzige Möglichkeit, etwas auszuprobieren und zu testen. Für ein kostenloses Tool finde ich es super. Klar das hier nicht das volle Komplettprogramm enthalten ist ....
Sollte jemand einen weiteren / umfangreicheren EA Builder kennen - Free oder zum Kauf, wäre ein Link natürlich super!
Das mit dem prüfen nur am Ende der jeweiligen Candle hatte ich bewusst so eingestellt bzw. das mit der Tick Einstellung ist mir klar.

Wie gesagt, das mit der Uhrzeit / GMT Limitierung kann ich in dem EA Builder nicht einstellen und bräuchte deshalb einen Tip / Hilfe, wie ich hier am Besten weiterkomme bzw. wie ich das in dem Code unterbringe...

ciao

sunnyboy20 11.08.11 10:09

Also weiß nicht wieso aber der EA öffnet bei mir keine Shorts und macht nur Long.
Zur Info im Strategytester ist auf Long und Short gestellt ;-)

sunnyboy20 11.08.11 10:15

sorry mein fehler war ja auch keine shortregel definiert

sunnyboy20 16.08.11 12:20

kannst du denn originalen EA nochmal posten bevor du daran rum gebastelt hast ? weil glaube da liegt schon die lösung für eines deiner Probleme zumindest laut Code.
Weil zu CloseBuy und CloseSell fehlt das Gegenstück


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