Hilfe bei Programmierung
- Antworten 98
- Aufrufe 10,8Tsd
- Erstellt
- Letzte Antwort
Top-Benutzer in diesem Thema
Aktive Tage
Most Popular Posts
-
Das Selbe macht Ehlers auch mit US Treasury Bond Futures. Die Zeitachse wird in Sektoren von z.B. 10 Bars eingeteilt und es wird für jeden Bar geschaut, wo - bezogen auf das Hoch und das Tief innerha
MQL Anfänger hat eine Bitte an euch,ich habe versucht ein für euch leichten E/A zu schreiben.
Der E/A besteht aus drei MA.
Die 1 Funktion Long
sollte wenn der kurzfristiger gl.D.(ma1)über dem mittelfristigen(ma2),und der mittefristige über dem langfristigen (ma3)ist,Long gehen also Buy. und den Trade schließen wenn (ma1) unter (ma2) fällt.
Die 2 Funktion Short
wenn der kurzfristiger (ma1)unter dem mittelfristigen(ma2),und der mittelfristige
unter dem langfristigen(ma3) ist, Short gehen also Sell.
und den Trade schließen wenn (ma1)über den (ma2) steigt.
So die Beschreibung,
der Editor meldet keine Fehler,aber das hat ja für die Funktionen keine
Bedeutung.
Im Long bereicht kauft er und verkauft auch.das wars aber schon,
Ich muß in der Logik,oder im Programmcode fehler haben,
kann einer von euch mir weiterhelfen.das der E/A Funktioniert.?
Bis bald
karlos10
------------------------------------------------------------------------------------- extern int Profit= 80; extern int Stopp = 25; extern int MagicNumber = 700; extern int ima1 = 5; extern int ima2 = 35; extern double lot = 0.1; extern int Slippage = 2; int CalcCurOrd(string symbol) { int buys=0,sells=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } if(buys>0) return(buys); else return(-sells); } bool Funktion_1_Long() { double ma1 = iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,0); double ma2 = iMA(NULL,0,40,0,MODE_SMA,PRICE_CLOSE,0); double ma3 = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0); if (ma1>ma2 && ma2 > ma3) // kurzfristiger gl.D. liegt über dem mittelfristigen // und der mittefristige über dem langfristigen return(true); else return(false); } bool Funktion_2_Short() { double ma1 = iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,0); double ma2 = iMA(NULL,0,40,0,MODE_SMA,PRICE_CLOSE,0); double ma3 = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0); if (ma1<ma2 && ma2<ma3) // kurzfristiger gl.D. liegt unter dem mittelfristigen // und der mittefristige unter dem langfristigen return(true); else return(false); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpen() { int res; if(Funktion_1_Long()) { res=OrderSend(Symbol(),OP_BUY,lot,Ask,Slippage, 0,0,"long",MagicNumber,0,White); } //----OrderSend(Symbol(),OP_BUY,lot,Ask,Slippage, // 0,0,"long",MagicNumber,0,White); // prevtime = Time[0]; return; if(Funktion_2_Short()) { res=OrderSend(Symbol(),OP_SELL,lot,Bid,Slippage, 0,0,"short",MagicNumber,0,Red); } } // Check for close order conditions void CheckForClose() { for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) continue; // Check order type if(OrderType()==OP_BUY) { if (Bid>(OrderOpenPrice()+Profit*Point)) { OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Green); return(0); } } if(OrderType()==OP_SELL) { if (Ask<(OrderOpenPrice()-Profit*Point)) { OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red); return(0); } } } return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ void start() { if(CalcCurOrd(Symbol())==0) CheckForOpen(); if(CalcCurOrd(Symbol())!=0) CheckForClose(); } //+------------------------------------------------------------------+karlosMA.mq4
Bearbeitet von whipsaw
mql tag hinzugefügt