|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Wollte mal versuchen, mir nen eigenen IKH-EA zu basteln.
Soweit ich das verstehe, braucht man den nicht extra irgendwie initialisieren oder laden. Bloß woher weiß denn dann der EA, dass ich den IKH meine? |
|
|||
Zitat:
Das o.g. von Dir verstehe ich überhaupt nicht. Was ist IKH? Wer ist "den"? Welcher EA soll was wissen? traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Ichimoku Kinko Hiu. Wollte mal selbst einen machen. Aber derzeit sorgt anscheinend die Lösung eines Problems für 10 neue Probleme.
|
|
|||
Basteln, mal machen
Ich habe meine Zweifel, ob Du ein Problem gelöst (verstanden) hast. Aber... hier findest Du einen sehr guten Einstieg in die Programmierung mit Mt4:
https://book.mql4.com/content Bevor Du den Absatz über die Basics nicht verinnerlicht hast, brauchst Du gar nicht weiter zu machen! Ach ja, etwas Englisch zu können, ist für das Erlernen einer komplexen Programmiersprache zwingend erforderlich, viel Erfolg! |
|
|||
Abend.
Wenn die GDs sich 2 oder 3 Perioden früher kreuzen sollen, ist das dann richtig? Code:
double LC = iClose(Symbol(), TimeFrame, 1); //letzter Close double GD1c = iMA(Symbol(), TimeFrame, Fast_GD, GD_Shift, GD_Type, PRICE_CLOSE, 3); //letzter fixe Wert schneller GD double GD2c = iMA(Symbol(), TimeFrame, Slow_GD, GD_Shift, GD_Type, PRICE_CLOSE, 3); |
|
|||
Hallo.
Ist hier irgendwas falsch? Oder kennt der EA nicht den Unterschied zwischen GDs auf High, Low und Close? Code:
extern int TimeFrame = 60; extern string TimeFrames= "Current:0;M1:1; M5:5; M15:15; M30:30; H1:60; H4:240; D1:1440"; //GDs extern int High_GD = 6; extern int Fast_Close_GD = 3; extern int Slow_Close_GD = 6; extern int Low_GD = 6; extern int GD_Type = 0; extern string GD_Types = "SMA:0; EMA:1; SMMA;2; LWMA:3"; int GD_Shift = 0; //Sonstige globale Variablen extern double Lots = 0.01; extern int Slippage = 600; extern int Max_Spread = 40; int Ticket, i; double Spread, PointSet; bool IsInvested, CloseTicket; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if (Digits <= 3) PointSet = 0.01; else PointSet = 0.0001; if (Digits <= 1) PointSet = 1; Spread=Ask-Bid; Lots = MathMax(MathMin(Lots, MarketInfo(Symbol(),MODE_MAXLOT)),MarketInfo(Symbol(),MODE_MINLOT)); //Define Vars if (TimeFrame==0) TimeFrame=NULL; double LC = iClose(Symbol(), TimeFrame, 1); //GDs double HGD = iMA(Symbol(), TimeFrame, High_GD, GD_Shift, GD_Type, PRICE_HIGH, 1); double FCGD = iMA(Symbol(), TimeFrame, Fast_Close_GD, GD_Shift, GD_Type, PRICE_CLOSE, 1); double SCGD = iMA(Symbol(), TimeFrame, Slow_Close_GD, GD_Shift, GD_Type, PRICE_CLOSE, 1); double LGD = iMA(Symbol(), TimeFrame, Low_GD, GD_Shift, GD_Type, PRICE_LOW, 1); //Check position IsInvested = false; for (i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if((OrderType()==OP_SELL || OrderType()==OP_BUY) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) IsInvested=true; } } //Open Trade if (!IsInvested) { if (Spread <= Max_Spread && LC>HGD && LC>FCGD && FCGD>SCGD) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue); if (Spread <= Max_Spread && LC<LGD && LC<FCGD && FCGD<SCGD) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red); } //Close Trade if (IsInvested) { for (i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) { if (LC<FCGD && FCGD<SCGD) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue); } if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) { if (LC>FCGD && FCGD>SCGD) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick); } } } } return(0); } |
|
|||
Abend.
Hat Jemand nen Tipp, wie die High- und Low-GDs eingestellt werden sollten? Mit 3 und 6 auf Close war das 2-GD-System im H1 durchgehend erfolgreich. Im 30M sahs auch nicht schlecht aus, das werd ich aber noch weiter testen. 3 und 6 scheinen sowas wie magische Zahlen für GDs zu sein. Wie gesagt soll es jetzt beim Einstieg auch nach High- und Low-GDs gehen, um Seitwärtsphasen möglichst zu vermeiden. Die Frage ist nur wieder:Wie vermeidet man Verluste, ohne viel Gewinn zu verlieren? Gelblich:Close, 3 Blau:Close, 6 Rot gestrichelt:High und Low, jeder 6 |
|
|||
mhmm, irgendwie verstehe ich hier nichts, du schreibst von h1 und gesuchten einstellungen und postest m15 charts-denke da solltest du einen demoserver anwerfen und alle möglichkeiten einfach laufen lassen-denn wer kann dir schon sagen ob 3,6 etc die richtigen einstellungen sind, ohne das auf long term demo selbst getestet zu haben-ausser es war sowieso nur hypothetisch gefragt ohne eine antwort zu erwarten...
|
|
|||
Bin mir bei den Charts noch nicht sicher. 30M müssten eigentlich gehn, weiß nicht ob auch 15M in Ordnung ist.
Bei den GDs bin ich auch noch nicht sicher. 3 und 6 müssten gehn, aber vielleicht gibts ja bessere Einstellungen. |
|
|||
deine ausdauer ist wirklich bewunderswert, aber ehrlich wenn du nichtmal weißt ob deine grundparameter (indis) sinnvoll sind, wer soll dir eigentlich weiterhelfen?
|
Lesezeichen |
Stichworte |
expert advisor, gleitender durchschnitt, mql4, programmierung, programmierung metatrader, programmierung mql4, trading |
|
|