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

 
barudkinarseniy:
Hallo Kameraden! Können Sie mir bitte sagen, was der Fehler ist, gibt der Compiler eine Warnung über mögliche Datenverluste (
Eine explizite Typkonvertierung ist erforderlich:
int ts = (int)SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
 
Vasiliy Sokolov:
Eine explizite Typkonvertierung ist erforderlich:
Ich danke Ihnen! Ich kann mich nicht mehr an all diese Nuancen der Umstellung erinnern))
 
barudkinarseniy:
Ich danke Ihnen! Ich kann mich nicht mehr an all diese Nuancen der Umstellung erinnern))
Oft ist es dieses:SymbolInfoInteger, das irreführend ist. Deshalb ist es besser, noch einmal in der Hilfe nachzuschauen.
 
Bitte sagen Sie mir, was das Problem ist. Der Compiler gibt keine Fehler aus. Im Tester sind die meisten Trades in Ordnung, aber manchmal schreibt der Error Handler im Drucker falsche Stops und offene Preise mit 6 Nachkommastellen: Ungültiger Preis (Stop) OrderSendX(symbol=AUDCAD,cmd=SELL,volume=0.29,price=0.995120,slippage=50,stoploss=0.996470,takeprofit=0.991070)

//+------------------------------------------------------------------+
//Открытие ордеров
void OrderOpen(int otype, double OpenPriceW1)
{
 int msl = (int) MarketInfo(Symbol(),MODE_STOPLEVEL);
 int stsl = (int) SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
 
 if(otype == OP_BUY)
 {
  StepSTBAY = (int)(Ask/Point - OpenPriceW1/Point);
  
  if(StepSTBAY < msl) StepSTBAY = msl;
  if(StepSTBAY < stsl) StepSTBAY = StepSTBAY + stsl;
  
  lots = LotsByRisk(OP_BUY,StepSTBAY);
  ST_BAY = NormalizeDouble(Ask - StepSTBAY*Point,Digits);
  TP_BAY = NormalizeDouble(Ask + StepSTBAY*RR*Point,Digits);
      
  OrderSendX(Symbol(),OP_BUY,lots,Ask,slipage,ST_BAY,TP_BAY,"",Magic,0,clrGreen);
 }
 if(otype == OP_SELL)
 {
  StepSTSELL = (int)(OpenPriceW1/Point - Bid/Point);
  
  if(StepSTSELL < msl) StepSTSELL = msl;
  if(StepSTSELL < stsl) StepSTSELL = StepSTSELL + stsl;
  
  lots = LotsByRisk(OP_SELL,StepSTSELL);
  ST_SELL = NormalizeDouble(Bid + StepSTSELL*Point,Digits);
  TP_SELL = NormalizeDouble(Bid - StepSTSELL*RR*Point,Digits);
     
  OrderSendX(Symbol(),OP_SELL,lots,Bid,slipage,ST_SELL,TP_SELL,"",Magic,0,clrRed);
 }
}
//+------------------------------------------------------------------+
 
barudkinarseniy:
Bitte sagen Sie mir, was das Problem ist. Der Compiler gibt keine Fehler aus. Im Tester sind die meisten Trades in Ordnung, aber manchmal schreibt der Error Handler im Drucker falsche Stops und den Open Price mit 6 Dezimalstellen: Invalid price (stop) OrderSendX(symbol=AUDCAD,cmd=SELL,volume=0.29,price=0.995120,slippage=50,stoploss=0.996470,takeprofit=0.991070)

Das erste, was mir auffiel, war dieses Codefragment, denn diese beiden Funktionen sind identisch
 int msl = (int) MarketInfo(Symbol(),MODE_STOPLEVEL);
 int stsl = (int) SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
der erste ist alt, der zweite ist neu
 
Können Sie mir bitte sagen, ob ein EA weiterhin funktioniert, wenn ich das Profil in MT4 ändere? Oder müssen alle EA-Fenster im selben Profil geöffnet sein, um dauerhaft zu funktionieren?
 

Guten Tag, liebe Programmierer!

Ist es möglich, ein Programm in MQL4 zu schreiben, das ein Diagramm in Form von Candlesticks entsprechend den berechneten Werten in verschiedenen Zeitrahmen zeichnet? Gibt es vielleicht vorgefertigte Codes für solche Probleme?

 
Ivan Molchanov:
Können Sie bitte mitteilen, ob der EA weiterhin funktioniert, wenn ich das Profil in MT4 ändere? Oder müssen alle EA-Fenster in einem Profil geöffnet sein, um dauerhaft zu funktionieren?

Werkzeuge => Einstellungen



und tun, was Sie wollen...

 
Hallo, könnten Sie mir bitte sagen, wie ich in den eingestellten Parametern die Auswahl des externen Zeitrahmens festlegen kann? Es wäre genau eine Auswahl und nicht manuell zu drucken.
 
barudkinarseniy:
Hallo, könnten Sie mir bitte sagen, wie man in den Satz Parameter extern schreiben, um den Zeitrahmen zu wählen? Das wäre genau eine Auswahl und kein manueller Druck.

Verwenden Sie die Aufzählungsvariable ENUM_TIMEFRAMES.

Grund der Beschwerde: