Wie programmiert man? - Seite 276

 

Guten Tag!

Ich fange gerade an, Code zu schreiben und zu verstehen. Bis jetzt bin ich überwältigt.

Ich möchte mit dem Schreiben eines ea beginnen, das das MACD-Histogramm verwendet und wenn die Tigerlinie das Histogramm über- oder unterschreitet.

Hat jemand einen einfachen Programmvorschlag, um den Code zu verstehen und ihn laufen zu lassen, um zu sehen, wie er handelt?

Danke -

daniel

 

Trendline-Import aus Excel/CSV=?

Hallo, ich habe in den letzten Tagen ein paar einfache Skripte geschrieben, besonders ObjectCreate (OBJ_TREND mit Ray=1) ist wirklich schön, wie das funktioniert, aber wie kann ich Objekte aus einer fertigen csv-Datei ziehen, in der ich einige History-Close-Daten für meine Close-Lines habe, denn ich möchte meine Vorlage löschen können und die Daten jedes Mal, wenn ich sie brauche, mit einem Skript importieren können,

hat jemand eine Idee wie das funktionieren könnte?

CSV hat ein Datum (ohne Uhrzeit) & Close-Wert (mehr Daten bräuchte ich nicht für die Lines)

und das Script soll eine Linie von diesem Datum mit Ray=1 und angepasster Farbe zeichnen

vielleicht könnte das Script auch den geöffneten Chart (Symbol) prüfen und die richtige CSV-Datei nehmen, wenn ich mehrere habe ;-)

Bitte kann mir jemand helfen

 

Fehler bei OrderDelete(OrderTicket())

Hallo zusammen!

Ich bin neu in der MQL4 Programmierung, aber auf der anderen Seite kenne ich C++.

Aber ich habe einige Probleme mit Handelsfunktionen.

Dies ist mein Problem :

Ich erstelle eine Pending Order mit :

Ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-5*Point,Slippage,0,0,"",0,0,Green);

und an einer anderen Stelle des Programms möchte ich es löschen:

if (OrderSelect(ticket,SELECT_BY_TICKET)) OrderDelete(OrderTicket());

ERROR 4108! Warum? Die Ticketnummer ist korrekt, ich drucke sie aus.

Aber wenn ich benutze :

if (OrderSelect(position, SELECT_BY_POS))OrderDelete(OrderTicket());

ist OK!

Warum?

Ich danke Ihnen für Ihre Unterstützung und für das Forum.

 

Code zum Beenden von EA?

Hallo zusammen,

Ich bin auf der Suche nach einem Code, der einen EA beenden kann. Ich habe ein kleines Martingal gepostet, das ich geschrieben habe. Ich habe es, wo es alle schwebenden und offenen Aufträge zu schließen, wenn es einen Prozentsatz der Konto Drawdown erreicht. Ich habe es auch geschafft, den Handel zu beenden, wenn ein tägliches Gewinnziel erreicht wird. Der Handel wird am nächsten Tag wieder aufgenommen. (Dank an die Autoren von SWB Grid, da ich deren Code verwendet habe).

Ich möchte jedoch, dass der EA beendet wird, wenn er eine bestimmte Bedingung erreicht. Sagen wir, er erreicht den Max Percentage Drawdown und schließt alle schwebenden Aufträge und offenen Positionen. An diesem Punkt möchte ich, dass der EA sich selbst beendet, so dass er nicht wieder mit dem Handel beginnt, bis ich den EA aus dem Diagramm entferne und wieder einsetze.

Hier ist der EA. Für jede Anregung oder Hilfe bin ich sehr dankbar!!

Danke!

Joe

 

Brauche Hilfe bei "'Programmende' - unausgewogene linke Klammer"

Hallo, ich habe an einem EA gearbeitet und erhalte beim Kompilieren immer wieder eine Fehlermeldung: "'Programmende' - unausgewogene linke Klammer". Normalerweise bezieht sich diese Fehlermeldung auf eine ungerade Anzahl von linken und rechten Klammern. Ich habe meine Codes jedoch gründlich überprüft und festgestellt, dass ich die gleiche Anzahl von linken und rechten Klammern habe. Es macht mich wirklich wahnsinnig, dass ich nicht herausfinden kann, wo der Fehler liegt. Kann jemand meine Codes überprüfen und mir sagen, wie ich das Problem beheben kann? Tausend Dank. Meine Codes sind unten zu sehen:

//+------------------------------------------------------------------+

//| Breakout.mq4 |

| Pooh |

//| |

//+------------------------------------------------------------------+

#property copyright "Pooh"

#property link ""

//--- Eingabeparameter

extern int LengthI=23;//für Markteintritt

extern int LengthO=7;//für den Ausstieg

extern double Lots=0.1; //für Ordergröße

extern int N1=14; //Zeitraum für ATR

extern int NLots=1; //Anzahl der erhöhten Order-Lots

//+------------------------------------------------------------------+

//|Experteninitialisierungsfunktion |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Experten-Deinitialisierungsfunktion |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

double HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,LängeO,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,LängeI,2));

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));

int cnt, cot,ticket, total;

total=OrdersTotal();

if (gesamt<1)

{

if (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);

wenn (Ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Long-Order eröffnet: ",OrderOpenPrice());

}

sonst

Print("Fehler beim Öffnen der Long-Order : ",GetLastError());

return(0);

}

if (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);

if (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Short-Order eröffnet:",OrderOpenPrice());

}

else Print("Fehler beim Öffnen einer SHORT-Order:",GetLastError());

return(0);

}

return(0);

}

for(cnt=0;cnt<Gesamt;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // Long-Position wird eröffnet

{

// soll sie geschlossen werden?

if(Bid<=LLong)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);// Schließung der Position

return(0);

}

//Trailing Stop modifizieren

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Grün);

return(0);

}

sonst

{

if(Ask>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//Position schließen

return(0);

}

//Trailing Stop ändern

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);

return(0);

}

}

}

//Long- und Short-Order-Lots insgesamt ermitteln

double LOrderLots=0;

double SOrderLots=0;

for(cnt=0,cnt<=total,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots();

if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)

SOrderLots=LOrderLots+OrderLots();

}

//erhöhen Sie die offene Order

for(cot=0,cot<=total,cot++)

{ //1

//Position für Long-Order hinzufügen

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //wenn offene Orders vorhanden sind

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- wenn die offene Order von EA pooh eröffnet wurde und der Typ Long ist

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5

if (ticket>0)

{ //6

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Long-Order eröffnet: ",OrderOpenPrice());

} //6

sonst

Print("Fehler beim Öffnen der Long-Order : ",GetLastError());

brechen;

} //5

} //4

return(0);

//Position für Short-Order hinzufügen

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9

if (Ticket>0)

{ // 10

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Short-Order eröffnet: ",OrderOpenPrice());

} // 10

sonst

Print("Fehler beim Öffnen der Short-Order : ",GetLastError());

Pause;

} //9

} //8

return(0);

} //7

} //3

} //2

} //1

return(0)

}

 

Brauche einen Programmierer, der einen einfachen Indikator programmiert

Ich brauche jemanden, der einen Indikator programmiert, der dies tut:

Auf einer einfachen Fibonacci mit nur die 0,50,100 Linien. Wenn ein Balken schließt über 50% oder unter 50%, aber mit der Option zu wählen, wenn ich für einen Abschluss über oder unter, nicht beide suchen. Wenn ich also nach einem Abschluss unter 50 % suche, möchte ich nicht, dass jedes Mal, wenn er über 50 schließt, ein Alarm ausgelöst wird. Ich möchte, dass ich durch einen Ton gewarnt werde und eine E-Mail und/oder Textnachricht erhalte. Ist dies möglich? Vielen Dank!!!

BILD: http://tinypic.com/r/dhbu6v/5

 

Versuch, einfache Logik zu codieren, nicht möglich!

Hallo Forum,

Ich glaube, das ist sehr einfach, was zu codieren für Sie, die gut genug auf MQL4 sind, aber ich bin Anfänger und ich habe Probleme, ich las alle Lektionen hier, aber immer noch nicht herausfinden konnte es

Ich möchte also automatisierten Handel machen

Losgröße 0,1

Stoploss = 30 Pips

Gewinnziel 50 Pips

Paar AUDUSD

Wenn (highprice - lowprice) < 60 Pips zwischen 02:00 GMT und 10:00 GMT , dann verkaufe AUDUSD zu lowprice - 5pips oder kaufe AUDUSD zu highprice + 5pips, sonst kein Handel

 
Avasys:
Hallo Forum,

Ich glaube, dies ist sehr einfach, was zu codieren für Sie, die gut genug auf MQL4 sind, aber ich bin Anfänger und ich habe Probleme, ich las alle Lektionen hier, aber immer noch nicht herausfinden konnte es

Ich möchte also automatisierten Handel machen

Losgröße 0,1

Stoploss = 30 Pips

Gewinnziel 50 Pips

Paar AUDUSD

Wenn (highprice - lowprice) < 60 Pips zwischen 02:00 GMT und 10:00 GMT , dann verkaufe AUDUSD zu lowprice - 5pips oder kaufe AUDUSD zu highprice + 5pips, sonst kein Handel

[lang=pl]Hallo, ich denke, dass es kein Problem ist, diesen EA zu programmieren, aber ich habe eine Frage.

Wann wollen Sie kaufen/verkaufen? Brauchen Sie Pending Orders auf den Ebenen low-5 high+5?

Grüße,

Grzesiek[/lang]

 
g.pociejewski:
[lang=pl]Hallo, ich denke, dass es kein Problem ist, diesen EA zu programmieren, aber ich habe eine Frage.

Wann wollen Sie kaufen/verkaufen? Benötigen Sie schwebende Aufträge auf den Ebenen low-5 high+5?

Grüße,

Grzesiek[/lang]

Hallo,

danke für die Hilfe

Ja, so genauer AUDUSD Handelsspanne (Differenz zwischen hohen Preis und niedrigen Preis) zwischen 02:00 GMT und 10:00 GMT Zeiten (dies ist sehr wichtig in Code) ist weniger als 60 Pips, so ist dies handelbar Signal. Sie verkaufen also, wenn der Preis den niedrigen Preis (zwischen 02:00 und 10:00) - 5 Pips erreicht und Sie kaufen, wenn der Preis den hohen Preis + 5 Pips erreicht.

Beispiel

zwischen 02:00 und 10:00 GBPUSD niedriger Preis war 1,6000, hoch war 1,6050, so dass, wenn die Preise erreicht 1,5995 automatisch verkaufen und wenn der Preis erreicht 1,6055 kaufen automatisch Platzierung 30 Pips Stop-Loss-Order automatisch und 50 Pips Gewinn mitnehmen.

Wenn Sie keine Zeit haben, geben Sie mir einfach einen Hinweis, wie ich anfangen soll, ich habe die Lektion gelesen, aber ich habe keine Praxis, um die Arbeit zu tun.

danke

 
pooh123:
Hallo, ich habe an einem EA gearbeitet und erhalte beim Kompilieren immer wieder eine Fehlermeldung: "'Programmende' - unausgewogene linke Klammer". Normalerweise bezieht sich diese Fehlermeldung auf eine ungerade Anzahl von linken und rechten Klammern. Ich habe jedoch meine Codes auf Herz und Nieren geprüft und festgestellt, dass ich die gleiche Anzahl von linken und rechten Klammern habe. Es macht mich wirklich wahnsinnig, dass ich nicht herausfinden kann, wo der Fehler liegt. Kann jemand meine Codes überprüfen und mir sagen, wie ich das Problem beheben kann? Tausend Dank. Meine Codes sind unten aufgeführt:

//+------------------------------------------------------------------+

//| Breakout.mq4 |

//| Pooh |

//| |

//+------------------------------------------------------------------+

#property copyright "Pooh"

#property link ""

//--- Eingabeparameter

extern int LengthI=23;//für Markteintritt

extern int LengthO=7;//für den Ausstieg

extern double Lots=0.1; //für Ordergröße

extern int N1=14; //Zeitraum für ATR

extern int NLots=1; //Anzahl der erhöhten Order-Lots

//+------------------------------------------------------------------+

//|Experteninitialisierungsfunktion |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Experten-Deinitialisierungsfunktion |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

double HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LängeI,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,LängeO,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,LängeI,2));

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));

int cnt, cot,ticket, total;

total=OrdersTotal();

if (gesamt<1)

{

if (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);

wenn (Ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Long-Order eröffnet: ",OrderOpenPrice());

}

sonst

Print("Fehler beim Öffnen der Long-Order : ",GetLastError());

return(0);

}

if (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);

if (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Short-Order eröffnet:",OrderOpenPrice());

}

else Print("Fehler beim Öffnen einer SHORT-Order:",GetLastError());

return(0);

}

return(0);

}

for(cnt=0;cnt<Gesamt;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // Long-Position wird eröffnet

{

// soll sie geschlossen werden?

if(Bid<=LLong)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);// Schließung der Position

return(0);

}

//Trailing Stop modifizieren

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Grün);

return(0);

}

sonst

{

if(Ask>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//Position schließen

return(0);

}

//Trailing Stop ändern

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);

return(0);

}

}

}

//Long- und Short-Order-Lots insgesamt ermitteln

double LOrderLots=0;

double SOrderLots=0;

for(cnt=0,cnt<=total,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots();

if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)

SOrderLots=LOrderLots+OrderLots();

}

//erhöhen Sie die offene Order

for(cot=0,cot<=total,cot++)

{ //1

//Position für Long-Order hinzufügen

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //wenn offene Orders vorhanden sind

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- wenn offene Order von EA geöffnet wurde und Typ Long ist

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5

if (ticket>0)

{ //6

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Long-Order eröffnet: ",OrderOpenPrice());

} //6

sonst

Print("Fehler beim Öffnen der Long-Order : ",GetLastError());

brechen;

} //5

} //4

return(0);

//Position für Short-Order hinzufügen

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9

if (Ticket>0)

{ // 10

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Short-Order eröffnet: ",OrderOpenPrice());

} // 10

sonst

Print("Fehler beim Öffnen der Short-Order : ",GetLastError());

Pause;

} //9

} //8

return(0);

} //7

} //3

} //2

} //1

return(0)

}

[lang=pl]Hallo, es gab ein paar Fehler, zwei unausgewogene ")" in der Funktion OrderMagicNumer sollten Sie () am Ende verwenden. In der for-Schleife sollten Sie ";" anstelle von "," verwenden.

Wenn Sie unausgewogene Klammern finden müssen, empfehle ich Ihnen Notepad ++ [/lang]

Dateien:
eamod.mq4  5 kb