Wie programmiert man? - Seite 237

 

Denken Sie daran, dass Sie die Streuung auch kontinuierlich speichern müssen ... je nach Art des EA, den Sie schreiben. sonst nutzlos

 

es ist HIGH [0] -- aktueller Takt, der gerade START

für low , ich weiß nicht, vielleicht low[1]

 

Richtige Reihenfolge für OrderSend(),OrderModify()

Vor einem Tag las ich im Forum ein Thema über die Funktionen OrderSend() und OrderModify()

und dieses Thema gibt mir einen Anhaltspunkt, warum einige EA funktionieren und andere nicht, und ich frage mich, wie man überprüfen kann, ob die Funktion OrderSend() und OrderModify() richtig geschrieben ist.

 

Hallo zusammen...

Bitte sagen Sie mir, wie man Code für die Liste aller Paare in MT4 erhalten?

Danke

Charles

 
sunshineh:
Hallo!

Ich weiß, dass es nicht richtig ist, Ask[1] zu schreiben, aber wie kann ich den Ask-Preis vom letzten Tick erhalten?

vielen Dank!

Sie müssen die Ticks in Echtzeit speichern und dann von Ihrem EA oder Indikator darauf zugreifen. Ich könnte versuchen, ein Beispiel für Sie zu programmieren, wenn Sie noch Interesse haben.

 
DooMGuarD:
Hallo zusammen...

Bitte sagen Sie mir, wie man Code für die Liste aller Paare in MT4 erhalten?

danke

Charles

Nehmen Sie sich Zeit, Mann, ich glaube, es ist einfacher, in Mql5 zu tun, so warten Sie einfach, bis die Dinge geregelt werden

 

Magische Trendwerte in einer Variablen erhalten...

Hallo!!!

Ich arbeite an einem EA und frage mich, wie ich die Werte des magischen Trendindikators in einer Variablen erhalten kann. Offensichtlich gibt es keine native Funktion für den magischen Trend, wie iMA es für gleitende Durchschnitte und so.... tut.

bis jetzt sieht es so aus, als müsste ich es von Grund auf neu programmieren. aber ich finde keine Infos über die Mathematik!

Kann mir jemand helfen?

vielen dank!!!

 
atch3000:
Hallo!!!

Ich arbeite an einem EA und ich frage mich, wie ich magische Trendindikatorwerte in einer Variablen erhalten kann. Offensichtlich gibt es keine native Funktion für magische Trend, wie iMA für gleitende Durchschnitte und so.... tut.

bisher sieht es so aus, dass ich es von Grund auf neu programmieren muss. aber ich finde keine Infos über die Mathematik!

Kann mir jemand helfen?

vielen Dank!!!

Suchen Sie nach Informationen über die Verwendung der ICustom-Funktion in MQL4. Mit dieser Funktion können Sie externe Indikatoren in Ihrem EA aufrufen

-guyver

 

Robot - Automat EA über 2 gleitende Durchschnitte MA schnell und langsam

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

extern int MagischeZahl = 0;

extern bool SignalMail = False;

extern bool EachTickMode = True;

extern double Lots = 0.2;

extern int Slippage = 3;

extern bool UseStopLoss = True;

extern int StopLoss = 15;

extern bool UseTakeProfit = True;

extern int TakeProfit = 30;

extern bool UseTrailingStop = True;

extern int TrailingStop = 20;

int BarCount;

int Aktuell;

bool TickCheck = False;

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

//| Experten-Initialisierungsfunktion |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; sonst Current = 1;

return(0);

}

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

//| Experten-Deinitialisierungsfunktion |

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

int deinit() {

return(0);

}

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

//| Experten-Startfunktion |

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

int start() {

int Auftrag = SIGNAL_NONE;

int Gesamt, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Auftrag = SIGNAL_NONE;

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

//| Variable Begin |

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

double Var1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Var2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Buy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Buy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Sell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Sell1_2 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseBuy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseBuy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseSell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseSell1_2 = iMA("GBPUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

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

//| Variablenende |

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

//Position prüfen

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

IsTrade = True;

if(OrderType() == OP_BUY) {

//Schließen

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

//| Signal Begin(Exit Buy) |

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

if (CloseBuy1_1 > CloseBuy1_2 && False) Order = SIGNAL_CLOSEBUY;

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

//| Signal End(Exit Buy) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

fortfahren;

}

//Trailing-Stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

fortfahren;

}

}

}

} sonst {

//Schließen

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

//| Signal Begin(Exit Sell) |

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

if (CloseSell1_1 > CloseSell1_2False) Order = SIGNAL_CLOSESELL;

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

//| Signal End(Exit Sell) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

weiter;

}

//Trailing-Stop

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

fortfahren;

}

}

}

}

}

}

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

//| Signal Begin(Entry) |

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

if (Buy1_1 < Buy1_2 && False) Order = SIGNAL_BUY;

if (Sell1_1 < Sell1_2 && False) Order = SIGNAL_SELL;

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

//| Signal Ende |

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

//Kaufen

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Prüfen der freien Marge

if (AccountFreeMargin() < (1000 * Lots)) {

Print("Wir haben kein Geld. Freie Marge = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; sonst StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; sonst TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

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

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

//Verkaufen

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Prüfen der freien Marge

if (AccountFreeMargin() < (1000 * Lots)) {

Print("Wir haben kein Geld. Freie Marge = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; sonst StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; sonst TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(Ticket > 0) {

if(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("SELL order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

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

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

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

//wo ist der Fehler, weil ich nicht weiß, helfen Sie mir. danke

 

Welche Fehlermeldung erhalten Sie?

Grund der Beschwerde: