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)
-   -   Einfachster EA läuft nicht... (http://www.expert-advisor.com/forum/showthread.php?t=2746)

gehtdoch 10.03.13 14:08

Einfachster EA läuft nicht...
 
Hallo,
bin neu im Forum, und neu bei MT4 und MQL4 :confused:.
Habe in den Foren nichts ähnlich einfach wie gewünscht, gefunden.
Bastel nun den ganzen morgen an einer automatischen Möglichkeit Positionen zu eröffnen und wieder zu schließen. Dazu dachte ich verschiedene Teile aus anderen EA´s "einfach nur mal eben" so zusammen zu setzen. Aber MQL4 scheint mir wesentlich schwieriger als CTL zu sein.

Könnte mir bitte ein Kenner den Anfangsfrust nehmen und folgenden Code zum rennen bringen? Dann könnte ich mich mit weiteren Aufgaben langsam vortasten.
Für Hilfe wäre ich sehr dankbar. Grüße, gehtdoch (nochnicht:mad:)

// MACD Seeger.mq4

//extern double TakeProfit = 10;
extern double Lots = 0.1;
//extern double Stop = 0;
//extern double TrailingStop = 20;
extern double A = 13;
extern double B = 26;
extern double C = 9;
extern double drehen = 0;
// ----------------------------------------------------
int start()
{
double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
int cnt, ticket, total;

if(Bars<100)
{
Print("weniger als 100 Kerzen");
return(0);
}

MacdCurrent=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE_MA IN,0);
MacdPrevious=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE_M AIN,1);
SignalCurrent=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE_ SIGNAL,0);
SignalPrevious=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE _SIGNAL,1);
MaCurrent=iMA(NULL,0,0,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,0,0,MODE_EMA,PRICE_CLOSE,1);
//-------------------------------------------------------------------------------------
total=OrdersTotal();
if(total<1)
{
if(AccountFreeMargin()<(1000*Lots))
{
Print("Oh Gott, wir haben keine freie Margin mehr = ", AccountFreeMargin());
return(0);
}
if (SignalPrevious<SignalCurrent) //(MacdCurrent>SignalCurrent)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"m acd sample",16384,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("Kauforder eröffnet : ",OrderOpenPrice());
}
else Print("Fehler bei Kauforder-Eröffnung : ",GetLastError());
return(0);
}
if (SignalPrevious>SignalCurrent) //(MacdCurrent<SignalCurrent)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0," macd sample",16384,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("Verkaufsorder eröffnet : ",OrderOpenPrice());
}
else Print("Fehler bei Verkaufsorder-Eröffnung : ",GetLastError());
return(0);
}
return(0);
}
return(0);
//---------------------------Position löschen--(vielleicht mal drehen)------------------------
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && SignalPrevious<SignalCurrent)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // close position
return(0); // exit
}
return(0);

if(OrderType()<=OP_BUY && OrderSymbol()==Symbol() && SignalPrevious>SignalCurrent)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // close position
return(0); // exit
}
return(0);

}
return(0);
// the end.

Sehe gerade in der Vorschau, die Struktur ist weg. :o Schade...

naranjoe 10.03.13 16:45

Hallo,

du verwendest zu oft return(0).
Dadurch wird nicht der ganze Code durchlaufen.
Beim schliessen der Order hast du ein if(OrderType()<=OP_SELL...
Das sollte heissen if(OrderType()==OP_SELL...

So, habe dir das mal abgeändert und Struktur reingebracht: ;)
Code:

// MACD Seeger.mq4

//extern double TakeProfit = 10;
extern double Lots = 0.1;
//extern double Stop = 0;
//extern double TrailingStop = 20;
extern double A = 13;
extern double B = 26;
extern double C = 9;
extern double drehen = 0;

// ----------------------------------------------------
int start()
{
double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
int cnt, ticket, total;

if(Bars<100)
{
Print("weniger als 100 Kerzen");
return(0);
}

MacdCurrent=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,0,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,0,0,MODE_EMA,PRICE_CLOSE,1);
//-------------------------------------------------------------------------------------
total=OrdersTotal();
if(total<1)
{
 if(AccountFreeMargin()<(1000*Lots))
  {
  Print("Oh Gott, wir haben keine freie Margin mehr = ", AccountFreeMargin());
  return(0);
  }
 if (SignalPrevious<SignalCurrent) //(MacdCurrent>SignalCurrent)
  {
    ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"m acd sample",16384,0,Green);
    if(ticket>0)
      {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("Kauforder eröffnet : ",OrderOpenPrice());
        }
    else Print("Fehler bei Kauforder-Eröffnung : ",GetLastError());
    return(0);
  }
 if (SignalPrevious>SignalCurrent) //(MacdCurrent<SignalCurrent)
  {
    ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0," macd sample",16384,0,Red);
    if(ticket>0)
      {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("Verkaufsorder eröffnet : ",OrderOpenPrice());
      }
    else Print("Fehler bei Verkaufsorder-Eröffnung : ",GetLastError());
    return(0);
    }
}
//---------------------------Position löschen--(vielleicht mal drehen)------------------------
 if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && SignalPrevious<SignalCurrent)
  {
    OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // close position
    return(0); // exit
  }

 if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && SignalPrevious>SignalCurrent)
  {
    OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // close position
    return(0); // exit
  }
}

Das ganze Teil ist allerdings sehr rudimentär!

Gruß
naranjoe

gehtdoch 11.03.13 08:30

Das ging ja fix
 
Guten morgen,
vielen Dank für diese Sonntagsarbeit.
Klar ist das noch nichts tolles, aber ich habe
damit einen funktionierenden Grundstock.
:D
MfG gehtdoch


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