|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Haste schom mal versucht, den ADX einzusetzten ? Der zeigt doch direkt die Trendstärke. Ein Wert über 24-30 zeigt nen starken Trend an. Filtert Seitwärtsphasen zwar nicht aus dafür verringern sich die Fehlsignale. Hat bei mir meist was gebracht.
z.B. so if ((iADX(NULL,0,14,PRICE_HIGH,MODE_MAIN,0)>24) { //zwischen den geschweiften Klammern steht dann der Code der ausgeführt werden soll } |
|
|||
Edit:Ob ich mal prüfen lasse, ob die GDs ihre Abstände bei Kerze 1
und 2 zueinander vergrößert haben? So ne Art Durchschnitt der Durchschnitte? Edit:Ich glaube, ich probiers einfach mal. Aber die letzten 2 oder 3 Kerzen? |
|
|||
Alles richtig?
Edit: Da ich mit negativen Zahlen irgendwann mal negative Erfahrungen gemacht habe, lass ich die Werte einfach addieren. Code:
//GDs //Bar 1 double B1_MA1 = iMA(Symbol(), TimeFrame, Moving_Average_1, GD_Shift, GD_Type, PRICE_CLOSE, 1);//3 double B1_MA2 = iMA(Symbol(), TimeFrame, Moving_Average_2, GD_Shift, GD_Type, PRICE_CLOSE, 1);//6 double B1_MA3 = iMA(Symbol(), TimeFrame, Moving_Average_3, GD_Shift, GD_Type, PRICE_CLOSE, 1);//12 //Bar 2 double B2_MA1 = iMA(Symbol(), TimeFrame, Moving_Average_1, GD_Shift, GD_Type, PRICE_CLOSE, 2);//3 double B2_MA2 = iMA(Symbol(), TimeFrame, Moving_Average_2, GD_Shift, GD_Type, PRICE_CLOSE, 2);//6 double B2_MA3 = iMA(Symbol(), TimeFrame, Moving_Average_3, GD_Shift, GD_Type, PRICE_CLOSE, 2);//12 //Bar 3 erst mal nicht vergleichen //double B3_MA1 = iMA(Symbol(), TimeFrame, Moving_Average_1, GD_Shift, GD_Type, PRICE_CLOSE, 3);//3 //double B3_MA2 = iMA(Symbol(), TimeFrame, Moving_Average_2, GD_Shift, GD_Type, PRICE_CLOSE, 3);//6 //double B3_MA3 = iMA(Symbol(), TimeFrame, Moving_Average_3, GD_Shift, GD_Type, PRICE_CLOSE, 3);//12 //-------------------------------------------------------------------------------------------------------------- //Berechnung GD-Distanzen //Bar 1 double B1MA12 = B1_MA1 + B1_MA2;//MA1(3) und MA2(6) double B1MA23 = B1_MA2 + B1_MA3;//MA2(6) und MA3(12) //Bar 2 double B2MA12 = B2_MA1 + B2_MA2;//SMA1(3) und MA2(6) double B2MA23 = B2_MA2 + B2_MA3;//MA2(6) und MA3(12) //Bar 3 erst mal nicht vergleichen //double DB3_MA1_2 = B2_MA1 + B2_MA2;//MA1(3) und MA2(6) //double DB3_MA2_3 = B2_MA2 + B2_MA3;//MA2(6) und MA3(12) |
|
|||
Zitat:
|
|
|||
Werd wahrscheinlich nur Bar 1 und 2 vergleichen. Müsste eigentlich reichen.
Ich würde vielleicht die Lotsize vom EA automatisch berechnen lassen. Weiß aber nicht so recht wie. Z.B.: Globale Variablen: extern bool auto RM_MM = true; extern string RM_MM = "true=Yes false=No extern double Use_%_of_Gesamtkapital = 1.0; |
|
|||
Hallo.
Wie man sehn kann, probiere ich gerade mit 4 GDs rum. Die blaue (6) und orange (3) Kurven sind die eigentlichen Signalgeber. Die gestrichelte rote (6) und die gestrichelte weiße (3) dienen als eine Art Bestätigung und zum Vola-Vergleich von 2 Kerzen. Sieht soweit ganz schick aus. Ich frag mich allerdings, ob ich die gestrichelten (auch) für den Ausstieg benutzen sollte oder ob ich das einfach weiterhin blau und orange überlasse. Ich finde eigentlich, dass 3 und 6 geht. Oder gibts bessere Vorschläge? |
|
|||
Guck Dir mal die Strategien für's Rainbow Trading an. Da wirst Du bestimmt fündig. Die arbeiten mit noch viel mehr Durchschnitten, sieht optisch wie ein Regenbogen aus.
|
|
|||
Danke, aber 6 Stück sind erst mal genug.
Code:
if (TC>F && TC<T && S<=MS && B10_D_FM>=B11_D_FM && B10_D_MS>=B11_D_MS && LC!=B2_FMA && B2_FMA>B2_MMA && B2_MMA>B2_SMA && B10_VF>B10_VM && B10_VM>B10_VS && B11_VF>B11_VM && B11_VM>B11_VS) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue); if (TC>F && TC<T && S<=MS && B10_D_FM>=B11_D_FM && B10_D_MS>=B11_D_MS && LC!=B2_FMA && B2_FMA<B2_MMA && B2_MMA<B2_SMA && B10_VF<B10_VM && B10_VM<B10_VS && B11_VF<B11_VM && B11_VM<B11_VS) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red);} |
|
|||
Hallo.
Hab ein komplexes System aus 6 GDs gebastelt. Wenn ich es starte, macht er keine Order auf. Ich glaube, das ein Problem ist, dass er den Last Close Bar 1 nicht mit dem GD Bar 5 vergleichen kann. Das wär nicht weiter schlimm, man müsste den LC lediglich auch auf Bar 5 einstellen. Es werden ja auch die Abstände der GDs Bar 6 mit Bar 7 verglichen. Damit soll geprüft werden, ob die Vola zu genommen hat oder zumindest gleich geblieben ist. Ist das vielleicht das Problem? Oder müssen für jede Bar extra GDs eingerichtet und deklariert werden? Möglich muss das ganze aber sein, der Ichimoku besteht ja auch aus nem Haufen verschobener GDs. Code:
//Kurse, GDs double C5 = iClose(Symbol(), TimeFrame, 5);//Close Bar 5 probieren //GDs Bar 5 Signale double B5_FMA = iMA(Symbol(), TimeFrame, Fast_MA, GD_Shift, GD_Type, PRICE_CLOSE, 5);//3 double B5_MMA = iMA(Symbol(), TimeFrame, Middle_MA, GD_Shift, GD_Type, PRICE_CLOSE, 5);//6 double B5_SMA = iMA(Symbol(), TimeFrame, Slow_MA, GD_Shift, GD_Type, PRICE_CLOSE, 5);//12 //GDs Bar 6 Vola double B6_VF = iMA(Symbol(), TimeFrame, Vola_Fast_MA, GD_Shift, GD_Type, PRICE_CLOSE, 6);//3 double B6_VM = iMA(Symbol(), TimeFrame, Vola_Middle_MA, GD_Shift, GD_Type, PRICE_CLOSE, 6);//6 double B6_VS = iMA(Symbol(), TimeFrame, Vola_Middle_MA, GD_Shift, GD_Type, PRICE_CLOSE, 6);//12 //GDs Bar 7 Vola double B7_VF = iMA(Symbol(), TimeFrame, Vola_Fast_MA, GD_Shift, GD_Type, PRICE_CLOSE, 7);//3 double B7_VM = iMA(Symbol(), TimeFrame, Vola_Middle_MA, GD_Shift, GD_Type, PRICE_CLOSE, 7);//6 double B7_VS = iMA(Symbol(), TimeFrame, Vola_Slow_MA, GD_Shift, GD_Type, PRICE_CLOSE, 7);//12 //-------------------------------------------------------------------------------------------------------------- //Berechnung GD-Distanzen //Bar 6 double B6_D_FM = B6_VF + B6_VM;//Fast Middle Bar 6 double B6_D_MS = B6_VM + B6_VS;//Middle Slow Bar 5 //Bar 7 double B7_D_FM = B7_VF + B7_VM;//Fast Middle Bar 7 double B7_D_MS = B7_VM + B7_VS;//Middle Slow Bar 7 //------------------------------------------------------------------------------------------------------------- //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 (TC>F && TC<T && S<=MS && LC!=B5_FMA && B6_D_FM>=B7_D_FM && B6_D_MS>=B7_D_MS && B5_FMA>B5_MMA && B5_MMA>B5_SMA && B6_VF>B6_VM && B6_VM>B6_VS && B7_VF>B7_VM && B7_VM>B7_VS) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue); if (TC>F && TC<T && S<=MS && LC!=B5_FMA && B6_D_FM>=B7_D_FM && B6_D_MS>=B7_D_MS && B5_FMA<B5_MMA && B5_MMA<B5_SMA && B6_VF<B6_VM && B6_VM<B6_VS && B7_VF<B7_VM && B7_VM<B7_VS) 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!=B5_FMA && B6_VF<B6_VM && B6_VM<B6_VS) || (CAA=true && TC>CA)) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);} if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){ if((LC!=B5_FMA && B6_VF>B6_VM && B6_VM>B6_VS) || (CAA=true && TC>CA)) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);}}}} |
Lesezeichen |
Stichworte |
expert advisor, gleitender durchschnitt, mql4, programmierung, programmierung metatrader, programmierung mql4, trading |
|
|