Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 414

 
Leanid Aladzyeu:

spuckt

möglicher Datenverlust aufgrund von Typkonvertierung .mq4 1697 29

Typ Doble bei SL.

Der Compiler ist heutzutage streng, es sollte so sein, dass MarketInfo den Typ double zurückgibt

sl = NormalizeDouble(sl,(int)MarketInfo(Symbol(),MODE_DIGITS));
 
Alexey Volchanskiy:

Der Compiler ist heutzutage streng, es sollte so sein, dass MarketInfo den Typ double zurückgibt

Die "sumbol"-Variable ist korrekt, ich habe sie als Variable in der Modifier-Verpackung.

Danke, ich habe(int) eingegeben und alles ist gut.

Ich weiß nicht, wie ich es vorher gemacht habe; meine Erfahrung im Schreiben von EAs beträgt 21 Tage))

Ich weiß nicht, wie lange ich schon meine EAs schreibe, und ich weiß nicht, wie man es richtig macht).

 

Leanid Aladzyeu:

Ich weiß nicht, wie ich früher EAs geschrieben habe (ich schreibe sie seit 21 Tagen)). Und mein EA ist hartnäckig auf dem Weg an die Spitze der kostenlosen EAs))

Nun, dann sind Sie sehr glücklich, bis Version 600 der alten MQL4 war schrecklich )) Bitte schicken Sie mir den Link zu meinem EA, vielleicht ist er in Ihrer Mailbox
 
Alexey Volchanskiy:
Nun, dann sind Sie sehr glücklich, bis die 600 Version der alten MQL4 war schrecklich )) Bitte senden Sie mir den Link zum MQL4 Expert Advisor.
Zu meinem Spitznamen und Produkt.
 

Aus irgendeinem Grund gibt es in der letzten Zeile einen Fehler.

'}' - nicht alle Kontrollpfade liefern einen Wert Expert4.mq4

Jede nicht-leere Funktion sollte mit dem Return-Operator enden.

Ich schaue mir gerade diesen Code aus dem Video-Tutorial an, aber er kann für ein altes Build sein.



#include#include <stderror.mqh>

//+------------------------------------------------------------------+
//|Experte4.mq4 |
//|Mikhail |
//||
//+------------------------------------------------------------------+
#property copyright "Mikhail"
#property link ""
#Eigenschaft Version "1.00"
#Eigenschaft streng

int signal = 1;

int start()
{
wenn (Signal == 1)
{
OrderSendX (Symbol(), OP_BUY, 0.2, Ask, 30, 0, 0, "Test", 123, 0, Blue);
}
zurück(0);
}
//+------------------------------------------------------------------+
int OrderSendX (string symbol, int cmd, double volume, double price, int slippage,double stoploss,
double takeprofit,string comment=NULL,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError();
err = 0;
bool exit_loop = false;
int ticket = -1;

int Wiederholungsversuch = 10;
int cnt = 0;
wenn (cmd == OP_BUY || cmd == OP_SELL)
{
while(!exit_loop)
{
ticket = OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment,magic, expiration, arrow_color);
err = GetLastError();

switch(err)
{
case ERR_NO_ERROR:
exit_loop = true;
Pause;

{ case ERR_SERVER_BUSY:
case ERR_NO_CONNECTION:
case ERR_INVALID_PRICE:
case ERR_OFF_QUOTES:
Fall ERR_BROKER_BUSY:
Fall ERR_TRADE_CONTEXT_BUSY:
cnt++;
Pause;

case ERR_PRICE_CHANGED:


RefreshRates();
weiter;

Standard:
exit_loop +true;
Pause;

}
wenn (cnt> Wiederholung)
exit_loop = true;


if (!exit_loop)
{
Sleep(1000);
RefreshRates();

}
sonst
{
if(err != ERR_NO_ERROR)
{
Print ("ERROR: " + err);

}

}

if(err == ERR_NO_ERROR)
{
OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES);
zurück(ticket);
}

Print("Fehler: Auftragseröffnung fehlgeschlagen nach" + cnt + "Versuchen");
zurück(-1);


}//while
}///if
}///exit
 
Mikhail Nikolaev:

Hier....

}


}


zurück(ticket);

}

 
Mikhail Nikolaev:

Leanid Aladzyeu:

Code korrekt in das Forum einfügen

 
Mikhail Nikolaev:

Aus irgendeinem Grund gibt es in der letzten Zeile einen Fehler.

'}' - nicht alle Kontrollpfade liefern einen Wert Expert4.mq4

Jede nicht-leere Funktion sollte mit dem Return-Operator enden.

Ich habe gerade diesen Code im Video-Tutorial gesehen, aber er kann für alte Builds sein.



#include#include <stderror.mqh>

//+------------------------------------------------------------------+
//|Experte4.mq4 |
//|Mikhail |
//||
//+------------------------------------------------------------------+
#property copyright "Mikhail"
#property link ""
#Eigenschaft Version "1.00"
#Eigenschaft streng

int signal = 1;

int start()
{
wenn (Signal == 1)
{
OrderSendX (Symbol(), OP_BUY, 0.2, Ask, 30, 0, 0, "Test", 123, 0, Blue);
}
zurück(0);
}
//+------------------------------------------------------------------+
int OrderSendX (string symbol, int cmd, double volume, double price, int slippage,double stoploss,
double takeprofit,string comment=NULL,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError();
err = 0;
bool exit_loop = false;
int ticket = -1;

int Wiederholungsversuch = 10;
int cnt = 0;
wenn (cmd == OP_BUY || cmd == OP_SELL)
{
while(!exit_loop)
{
ticket = OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment,magic, expiration, arrow_color);
err = GetLastError();

switch(err)
{
case ERR_NO_ERROR:
exit_loop = true;
Pause;

{ case ERR_SERVER_BUSY:
case ERR_NO_CONNECTION:
case ERR_INVALID_PRICE:
case ERR_OFF_QUOTES:
Fall ERR_BROKER_BUSY:
Fall ERR_TRADE_CONTEXT_BUSY:
cnt++;
Pause;

case ERR_PRICE_CHANGED:


RefreshRates();
weiter;

Standard:
exit_loop +true;
Pause;

}
wenn (cnt> Wiederholung)
exit_loop = true;


if (!exit_loop)
{
Sleep(1000);
RefreshRates();

}
sonst
{
if(err != ERR_NO_ERROR)
{
Print ("ERROR: " + err);

}

}

if(err == ERR_NO_ERROR)
{
OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES);
zurück(ticket);
}

Print("Fehler: Auftragseröffnung fehlgeschlagen nach" + cnt + "Versuchen");
zurück(-1);


}//while
}///if
}///exit

Mann, ist es wirklich so schwer, den Code zu formatieren? Ich schaue es mir aus Prinzip nicht einmal an - es ist eine Qual für die Augen.
 
Ich hinke wieder hinterher, es passt nicht.
 
Leanid Aladzyeu:
Ich hinke wieder hinterher, ich kriege es nicht hin, dass es passt.

Das ist in Ordnung, welchen Browser benutzen Sie? Versuchen Sie, zu einem anderen zu wechseln. Ich habe FFox. Ich habe die Antwort in den Kommentaren im Code ganz am Ende gegeben.

#include <stderror.mqh>
//+------------------------------------------------------------------+
//|                                                      Expert4.mq4 |
//|                                                          Mikhail |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Mikhail"
#property link      ""
#property version   "1.00"
#property strict

int signal = 1;

int start()
{
   if (signal == 1)
   {
      OrderSendX (Symbol(), OP_BUY, 0.2, Ask, 30, 0, 0, "Test", 123, 0, Blue);
   }
   return(0);
}
//+------------------------------------------------------------------+
int OrderSendX (string symbol, int cmd, double volume, double price, int slippage,double stoploss,
               double takeprofit, string comment=NULL, int magic=0, datetime expiration=0,color arrow_color=CLR_NONE)
{
   int err = GetLastError();
   err = 0;
   bool exit_loop = false;
   int ticket = -1;
  
   int Retry = 10;
   int cnt = 0;
   if (cmd == OP_BUY || cmd == OP_SELL)
   {
      while(!exit_loop)
      {
         ticket = OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment,magic, expiration, arrow_color);
         err = GetLastError();
        
         switch(err)
         {
            case ERR_NO_ERROR:
            exit_loop = true;
            break;
           
            case ERR_SERVER_BUSY:
            case ERR_NO_CONNECTION:
            case ERR_INVALID_PRICE:
            case ERR_OFF_QUOTES:
            case ERR_BROKER_BUSY:
            case ERR_TRADE_CONTEXT_BUSY:
            cnt++;
            break;
           
            case ERR_PRICE_CHANGED:
           
          
            RefreshRates();
            continue;
           
            default:
               exit_loop +true;
               break;
         
         }
         if (cnt> Retry)
            exit_loop = true;
          
           
         if (!exit_loop)
            {
               Sleep(1000);
               RefreshRates();
              
            }
            else
               {
                  if(err != ERR_NO_ERROR)
                  {
                  Print ("ERROR: " + err);
                 
                  }
            
               }
              
               if(err == ERR_NO_ERROR)
               {
                  OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES);
                  return(ticket);
               }
              
               Print("Error: order open failed after" + cnt + "atempts");
               return(-1);
           
           
}//while
}//if
// тут надо вернуть какое-то значение, компилятор не понимает, что у вас есть return-ы внутри while, он не умеет анализировать код. Он ожидает, что при выходе из функции будет возвращаться значение
}//exit
Grund der Beschwerde: