Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43249
Benutzer: 7.221
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Thomas75
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 3 Stunden
- Thomas75
vor 17 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 779
Gesamt: 779
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 10.03.13
Neues Mitglied
 
Registriert seit: Feb 2013
Beiträge: 15
gehtdoch befindet sich auf einem aufstrebenden Ast
Standard Einfachster EA läuft nicht...

Hallo,
bin neu im Forum, und neu bei MT4 und MQL4 .
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)

// 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. Schade...
  #2 (permalink)  
Alt 10.03.13
Elite Mitglied
 
Registriert seit: Jun 2010
Ort: Trier
Beiträge: 116
naranjoe befindet sich auf einem aufstrebenden Ast
Standard

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
  #3 (permalink)  
Alt 11.03.13
Neues Mitglied
 
Registriert seit: Feb 2013
Beiträge: 15
gehtdoch befindet sich auf einem aufstrebenden Ast
Smile 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.

MfG gehtdoch
Thema geschlossen

Lesezeichen

Stichworte
anfang, beninner, ea, expert-advisor, mql4, programmierung, programmierung metatrader

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 15:07 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------