Hallo
Ich habe ein Problem mit diesem Code
Könnte irgendjemand das untersuchen?
// ----------------------------------------------- -------------------
//| Diese MQL wird von Expert Advisor Builder | generiert
//|
http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/|
//| |
//| In keinem Fall haftet der Autor für irgendwelche Schäden. |
//| Benutzung auf eigene Gefahr. |
//| |
// ------------------- DIESES HEADER NICHT ENTFERNEN --------------------
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
# Eigenschaft copyright Expert Advisor Builder
#Eigenschaftslink http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = False;
extern Doppellot = 1,0;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 300;
extern bool UseTakeProfit = True;
extern int TakeProfit = 600;
extern bool UseTrailingStop = True;
extern int TrailingStop = 300;
int BarCount;
int Strom;
bool TickCheck = Falsch;
// ----------------------------------------------- -------------------
//| Experteninitialisierungsfunktion |
// ----------------------------------------------- -------------------
int init () {
BarCount = Bars;
if (EachTickMode) Current = 0; sonst uelles = 1;
Rückkehr (0);
}
// ----------------------------------------------- -------------------
//| Experten Deinitialisierungsfunktion |
// ----------------------------------------------- -------------------
int deinit () {
Rückkehr (0);
}
// ----------------------------------------------- -------------------
//| Expertenstartfunktion |
// ----------------------------------------------- -------------------
int start () {
int Reihenfolge = SIGNAL_NONE;
int Summe, Ticket;
Doppel-StopLossLevel, TakeProfitLevel;
if (EachTickMode Bars! = BarCount) TickCheck = False;
Gesamt = OrdersTotal ();
Reihenfolge = SIGNAL_NONE;
// ----------------------------------------------- -------------------
//| Variable Begin |
// ----------------------------------------------- -------------------
Doppel-Var1 = iIchimoku (NULL, 0, 9, 26, 52, MODE_CHIKOUSPAN, Strom 0);
double Var2 = iIchimoku (NULL, 0, 9, 26, 52, MODE_TENKANSEN, Strom 0);
double Var3 = iIchimoku (NULL, 0, 9, 26, 52, MODE_KIJUNSEN, Strom 0);
doppelt Buy1_1 = Var1;
double Buy1_2 = iClose (NULL, 0, Current 21);
doppelt Buy2_1 = Var2;
doppelt Buy2_2 = Var3;
Doppeltes Sell1_1 = Var1;
doppelt Sell1_2 = iClose (NULL, 0, Current 21);
Doppeltes Sell2_1 = Var3;
doppelt Sell2_2 = Var2;
// ----------------------------------------------- -------------------
//| Variablenende |
// ----------------------------------------------- -------------------
//Überprüfen Sie die Position
bool IsTrade = Falsch;
für (int i = 0; i lt; Summe; i ) {
OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (OrderType () lt; = OP_SELL OrderSymbol () == Symbol ()) {
IsTrade = Wahr;
if (BestellTyp () == OP_BUY) {
//Schließen
// ----------------------------------------------- -------------------
//| Signal Beginnen (Beenden Kaufen) |
// ----------------------------------------------- -------------------
// ----------------------------------------------- -------------------
//| Signalende (Exit Buy) |
// ----------------------------------------------- -------------------
if (Ordnung == SIGNAL_CLOSEBUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
OrderClose (OrderTicket (), OrderLots (), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail ([Signalalarm], [ Symbol () ] DoubleToStr (Gebot, Ziffern) Schließen Kaufen);
if (! EachTickMode) BarCount = Balken;
IsTrade = Falsch;
fortsetzen;
}
//Nachlaufstopp
if (UseTrailingStop TrailingStop gt; 0) {
if (Gebot - OrderOpenPrice () gt; Point * TrailingStop) {
if (OrderStopLoss () lt; Gebot - Punkt * TrailingStop) {
OrderModify (OrderTicket (), OrderOpenPrice (), Bid - Point * TrailingStop, OrderTakeProfit (), 0, MediumSeaGreen);
if (! EachTickMode) BarCount = Balken;
fortsetzen;
}
}
}
} sonst {
//Schließen
// ----------------------------------------------- -------------------
//| Signal beginnen (Exit Sell) |
// ----------------------------------------------- -------------------
// ----------------------------------------------- -------------------
//| Signalende (Exit Sell) |
// ----------------------------------------------- -------------------
if (Ordnung == SIGNAL_CLOSESELL ((EachTickMode! TickCheck) || (! EachTickMode (Balken! = BarCount)))) {
OrderClose (OrderTicket (), OrderLots (), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail ([Signalalarm], [ Symbol () ] DoubleToStr (Fragen, Ziffern) Close Sell);
if (! EachTickMode) BarCount = Balken;
IsTrade = Falsch;
fortsetzen;
}
//Nachlaufstopp
if (UseTrailingStop TrailingStop gt; 0) {
if ((OrderOpenPrice () - Ask) gt; (Punkt * TrailingStop)) {
if ((OrderStopLoss () gt; (Ask Punkt * TrailingStop)) || (OrderStopLoss () == 0)) {
OrderModify (OrderTicket (), OrderOpenPrice (), Ask Point * TrailingStop, OrderTakeProfit (), 0, DarkOrange);
if (! EachTickMode) BarCount = Balken;
fortsetzen;
}
}
}
}
}
}
// ----------------------------------------------- -------------------
//| Signal Beginn (Eingabe) |
// ----------------------------------------------- -------------------
if (Buy1_1 gt; Buy1_2 Buy2_1 == Buy2_2) Bestellung = SIGNAL_BUY;
if (Sell1_1 lt; Sell1_2 Sell2_1 gt; Sell2_2) Reihenfolge = SIGNAL_SELL;
// ----------------------------------------------- -------------------
//| Signalende |
// ----------------------------------------------- -------------------
//Kaufen
if (Reihenfolge == SIGNAL_BUY ((EachTickMode! TickCheck) || (! EachTickMode (Balken! = BarCount)))) {
wenn (! IsTrade) {
//Überprüfen Sie den freien Rand
if (AccountFreeMargin () lt; (1000 * Lots)) {
Drucken (Wir haben kein Geld. Free Margin =, AccountFreeMargin ());
Rückkehr (0);
}
if (UseStopLoss) StopLossLevel = Fragen - StopLoss * Point; sonst StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Fragen TakeProfit * Point; sonst TakeProfitLevel = 0.0;
Ticket = OrderSend (Symbol (), OP_BUY, Lose, Fragen, Slippage, StopLossLevel, TakeProfitLevel, Kaufen (# MagicNumber ), MagicNumber, 0, DodgerBlue);
if (Ticket gt; 0) {
if (OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Drucken (Kaufauftrag geöffnet:, OrderOpenPrice ());
if (SignalMail) SendMail ([Signalalarm], [ Symbol () ] DoubleToStr (Fragen, Ziffern) Öffnen Kaufen);
} sonst {
Drucken (Fehler beim Öffnen der KAUF-Reihenfolge:, GetLastError ());
}
}
if (EachTickMode) TickCheck = True;
if (! EachTickMode) BarCount = Balken;
Rückkehr (0);
}
}
//Verkaufen
if (Ordnung == SIGNAL_SELL ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
wenn (! IsTrade) {
//Überprüfen Sie den freien Rand
if (AccountFreeMargin () lt; (1000 * Lots)) {
Drucken (Wir haben kein Geld. Free Margin =, AccountFreeMargin ());
Rückkehr (0);
}
if (UseStopLoss) StopLossLevel = Gebot StopLoss * Point; sonst StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; sonst TakeProfitLevel = 0.0;
Ticket = OrderSend (Symbol (), OP_SELL, Lose, Gebot, Slippage, StopLossLevel, TakeProfitLevel, Verkauf (# MagicNumber ), MagicNumber, 0, DeepPink);
if (Ticket gt; 0) {
if (OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Drucken (SELL-Bestellung geöffnet:, OrderOpenPrice ());
if (SignalMail) SendMail ([Signalalarm], [ Symbol () ] DoubleToStr (Gebot, Ziffern) Open Sell);
} sonst {
Drucken (Fehler beim Öffnen der SELL-Reihenfolge:, GetLastError ());
}
}
if (EachTickMode) TickCheck = True;
if (! EachTickMode) BarCount = Balken;
Rückkehr (0);
}
}
if (! EachTickMode) BarCount = Balken;
Rückkehr (0);
}
// ----------------------------------------------- -------------------