Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1227

 

Hallo alle, nur eine kurze Auffrischung auf den Thread: Es gibt eine Frage in den Code:

int stoplevel;
int  MinimumUseStopLevel;

// Calculate stoplevel as max of either STOPLEVEL or FREEZELEVEL
   stoplevel = fmax(SymbolInfoInteger(_Symbol,MODE_FREEZELEVEL), SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL));
// Then calculate the stoplevel as max of either this stoplevel or MinimumUseStopLevel
   stoplevel = fmax(MinimumUseStopLevel, stoplevel);

Beim Kompilieren wird eine Warnung ausgegeben:"Möglicher Datenverlust durch Typkonvertierung ...". Was braucht er? Es ist nicht so kritisch, aber ich würde es gerne wissen.


Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 
Sayberix:

Hallo alle, nur eine kurze Auffrischung auf den Thread: Es gibt eine Frage in den Code:

Beim Kompilieren wird eine Warnung ausgegeben:"Möglicher Datenverlust durch Typkonvertierung ...". Was braucht er? Nicht so kritisch, aber ich würde es gerne wissen.


Die Website-Engine selbst hat einen Link zu der Antwort eingefügt, und es gibt ein Beispiel für eine explizite Typumwandlung .........

//--- ускорение свободного падения
   double g=9.8;
   double round_g=(int)g;
   double math_round_g=MathRound(g);
   Print("round_g = ",round_g);
   Print("math_round_g =",math_round_g);
/*
   Результат:
   round_g = 9
   math_round_g = 10
*/
 
Sayberix:

Hallo alle, nur eine kurze Auffrischung auf den Thread: Es gibt eine Frage in den Code:

Beim Kompilieren wird eine Warnung ausgegeben:"Möglicher Datenverlust durch Typkonvertierung ...". Was braucht er? Es ist nicht so wichtig, aber ich würde es gerne wissen.


Sie haben nicht nur eine Warnung, sondern auch einen Fehler. Sind Sie sicher, dass es sich um diesen speziellen Code handelt, den Sie kompilieren?

So sollte es auch sein:

   int stoplevel=0;
   int MinimumUseStopLevel=0;

// Calculate stoplevel as max of either STOPLEVEL or FREEZELEVEL
   stoplevel = int(fmax(SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL), SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL)));
// Then calculate the stoplevel as max of either this stoplevel or MinimumUseStopLevel
   stoplevel = int(fmax((int)MinimumUseStopLevel,(int)stoplevel));

Nur ohne in den Code einzugreifen - damit Sie keine Fehler und Warnungen erhalten.

Und wenn Sie darüber nachdenken, vermischen Sie das Warme und das Nasse

 
Artyom Trishkin:

Sie haben nicht nur eine Warnung, sondern auch einen Fehler. Sind Sie sicher, dass dies der Code ist, den Sie kompilieren?

So sollte es auch sein:

Nur ohne in den Code einzugreifen - damit Sie keine Fehler und Warnungen erhalten.

Und wenn man darüber nachdenkt, bringt man die Dinge durcheinander.

Ich danke Ihnen.

Schimpfen Sie nicht mit mir, ich lerne nur - ich versuche, den Code anderer Leute zu verstehen. Das scheint mir der schnellste Weg zum Lernen zu sein.

Ich verstehe nicht, warum er eine Typkonvertierung benötigt, wenn alle Variablen int sind und die Rückgabewerte über symbolinfointeger ?

 
Sayberix:

Ich danke Ihnen.

Schimpfen Sie nicht zu sehr mit mir, ich lerne gerade - ich versuche, den Code anderer Leute zu verstehen. Das scheint mir der schnellste Weg zum Lernen zu sein.

Ich verstehe nicht, warum es eine Typkonvertierung braucht, wenn alle Variablen int sind und die Rückgabewerte über symbolinfointeger ?

SymbolInfoInteger() gibt long zurück
Документация по MQL5: Получение рыночной информации / SymbolInfoInteger
Документация по MQL5: Получение рыночной информации / SymbolInfoInteger
  • www.mql5.com
2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. Если функция используется для получения информации о последнем тике, то лучше использовать SymbolInfoTick(). Вполне возможно, что по данному символу с...
 

Guten Tag, liebe Programmierer!

Wie kann ich meinen EA dazu bringen, Positionen unabhängig von manuell oder von einem anderen EA eröffneten Positionen zu öffnen? Ich habe versucht, es mit Magie zu erreichen, aber es hat nicht funktioniert. Ich habe versucht, es mit Magie zu erreichen, aber es hat nicht funktioniert:

datetime some_time=TimeCurrent();
extern string Symbol3 = ""; //Инструмент (""текущий по умолчанию)
extern int P=1;          //Таймфрейм
extern int MagicNumber = 100500;


int start()
{

int send;
                                      
double SL=50;                                   
double TP=50;                       
double Lots=3;       

      
//&&(OrderMagicNumber() == MagicNumber)
//&&(OrdersTotal() ==0)&&    
 
              
if ((Close[0]>High[1])&&(OrderMagicNumber() != MagicNumber)) 
{
send=OrderSend(Symbol3,OP_BUY,Lots,Ask,3,Bid-SL*Point,Bid+TP*Point,MagicNumber);
}

if ((Close[0]<Low[1])&&(OrderMagicNumber() != MagicNumber))
{
send=OrderSend(Symbol3,OP_SELL,Lots,Bid,3,Ask+SL*Point,Ask-TP*Point,MagicNumber);
}

return(0);
}
 
Alexey Belyakov:

Guten Tag, liebe Programmierer!

Wie kann ich meinen EA dazu bringen, Positionen unabhängig von manuell oder von einem anderen EA eröffneten Positionen zu öffnen? Ich habe versucht, es mit Magie zu erreichen, aber es hat nicht funktioniert. Hier ist der Code:


Es fehlen Felder und es ist kein Auftrag zur Überprüfung der Nummer ausgewählt

int n = 0;
for(int i = OrdersTotal(); i >= 0; i--) {
      if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
      if(OrderSymbol() != _Symbol)continue;
      if(OrderMagicNumber() != magic)continue;     
n++;
}

if(n == 0){
OrderSend(_Symbol, _type, lot, price, 0, sl, tp, comment, magic, 0, clrNONE);
}
 
Wie man Geld von einem Konto abhebt

 
Hilfe... Reinstecken und nicht mehr rauskriegen
 
Georgiy Liashchenko:


Es fehlen Felder und der Auftrag zur Überprüfung der Nummer wird nicht hervorgehoben

Das habe ich. Das habe ich nicht. Sie wird stapelweise geöffnet. Magic ignoriert es.


datetime some_time=TimeCurrent();
//extern string Symbol3 = ""; //Инструмент (""текущий по умолчанию)
extern int P=1;          //Таймфрейм
extern int MagicNumber = 100500;


int start()
{

int send;
                                     
double SL=200;                                   
double TP=200;                       
double Lots=1;       

int n = 0;
for(int i = OrdersTotal(); i >= 0; i--) 
{
      if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
      if(OrderSymbol() != "EURUSD")continue;
      if(OrderMagicNumber() != MagicNumber)continue;     
n++;
}
          
//&&(OrderMagicNumber() == MagicNumber)
//&&(OrdersTotal() ==0)&&    
             
if ((Close[0]>High[1])&&(n==0))
{
send=OrderSend("EURUSD",OP_BUY,Lots,Ask,3,Bid-SL*Point,Bid+TP*Point,MagicNumber);
}

if ((Close[0]<Low[1])&&(n==0))  
{
send=OrderSend("EURUSD",OP_SELL,Lots,Bid,3,Ask+SL*Point,Ask-TP*Point,MagicNumber);
}

return(0);
}