|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
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... |
|
|||
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 } } Gruß naranjoe |
Lesezeichen |
Stichworte |
anfang, beninner, ea, expert-advisor, mql4, programmierung, programmierung metatrader |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|