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

 
Vladimir Pavlov:

Ich habe dummerweise ein Skript zum Kopieren innerhalb des Computers erstellt.... Es wird nicht kopiert!!!

Wo ist also die Fehlerbeschreibung? Welches Betriebssystem? Welche Version von MetaTrader 5?

Haben Sie Schreibrechte für den Ordner?


Hinzugefügt: Es sieht so aus, als ob, wenn kein Verzeichnis vorhanden ist, dieses erst erstellt werden muss.


Beim Kopieren in ein bestehendes Verzeichnis - kein Problem. MetaTrader 5 funktioniert ohne Fehler.

 

Wie kann ich sicher sein, dass die Position mit der angegebenen ID geschlossen wurde?

Die offensichtliche Lösung - wenn PositionSelectByTicket false zurückgibt, aber dies kann wahrscheinlich in einer Situation passieren, wo die offenen Positionen nicht Zeit gehabt haben, in das Terminal geladen werden, wenn mit dem Handelskonto verbunden?

Eine etwas kompliziertere Lösung - PositionSelectByTicket gibt false zurück und HistorySelectByPosition gibt true zurück. In diesem Fall muss, wenn die Historie für diese Position geladen ist, die Liste der offenen Positionen geladen werden.

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
. ... Rick D. ... .:

Warten Sie auf die Synchronisierung des Terminals. Zum Beispiel, während(HistorySelect).

 
fxsaber:

Warten Sie auf die Synchronisierung des Terminals. Zum Beispiel, während (HistorySelect).

Ich bin kein Experte für die Funktionsweise des Terminals. Aber es kann sein, dass, wenn OnInit kommt, die Tabelle der offenen Positionen (und möglicherweise Handel Geschichte) ist bereits geladen?

 
. ... Rick D. ... .:

Ich bin kein Experte für die Funktionsweise des Terminals.

Auch weit davon entfernt, ein Experte zu sein. Es ist nur so, dass mir gleich mehrere Möglichkeiten in den Sinn kommen, die ich ausprobieren möchte. Und was funktioniert, muss ausprobiert werden.

 
Vladimir Karputov:

Die einfachste Lösung: Öffnen Sie einen Chart des gewünschten Finanzinstruments im MetaTrader und platzieren Sie den Expert Advisor darauf.

Dies ist bekannt. Aber ich frage mich, wie man das Paar im Programm einstellen kann? Gibt es dafür eine Funktion?
 
cepreu1:
Dies ist bekannt. Aber ich möchte wissen, wie ich das Paar in der Anwendung einstellen kann? Gibt es dafür eine Funktion?

Ganz einfach.

Zum Beispiel Handelsgeschäfte. Siehe HandelsklasseCTrade, MethodeBuy:

bool  Buy( 
   double        volume,          // объем позиции 
   const string  symbol=NULL,     // символ 
   double        price=0.0,       // цена исполнения 
   double        sl=0.0,          // цена Stop Loss 
   double        tp=0.0,          // цена Take Profit 
   const string  comment=""       // комментарий 
   )

Ich habe die Stelle hervorgehoben, an der Sie das gewünschte Symbol angeben können.


Oder zum Beispiel den Empfang von Daten über Eröffnungs- und Schlusskurse... -CopyRates:

int  CopyRates( 
   string           symbol_name,       // имя символа 
   ENUM_TIMEFRAMES  timeframe,         // период 
   int              start_pos,         // откуда начнем  
   int              count,             // сколько копируем 
   MqlRates         rates_array[]      // массив, куда будут скопированы данные 
   );
 
Vladimir Karputov:

Ganz einfach.

Zum Beispiel Handelsgeschäfte. Siehe HandelsklasseCTrade, MethodeBuy:

Ich habe die Stelle hervorgehoben, an der Sie das gewünschte Symbol angeben können.


Oder zum Beispiel den Empfang von Daten über Eröffnungs- und Schlusskurse ... -CopyRates:

Ja, gut. Aber ich habe nicht angegeben, dass ich beim Start ein Paar zuweisen möchte, sondern

ohne eine Position zu eröffnen. Und Buy tut dies, indem er eine Position eröffnet,

undCopyRates lieferthistorische Daten des Paares, ohne sie zuzuordnen.

 
cepreu1:

Ja, okay. Aber ich habe nicht angegeben, dass ich beim Start ein Paar zuweisen möchte, sondern

ohne eine Position zu eröffnen. Und Buy tut dies, indem er eine Position eröffnet,

undCopyRates lieferthistorische Daten von Paaren, ohne sie zuzuordnen.

Sie sind etwas überschwänglich, aber ich versuche mal zu raten: Sie brauchen einen Eingabeparameter mit dem Symbolnamen? Hier ist der Code - Sie geben das gewünschte Symbol im Parameter"InpSymbol" an. Dieses Symbol wird in OnInit() überprüft - wenn es kein solches Symbol gibt, wird der Expert Advisor entladen und eine Fehlermeldung erscheint auf der Registerkarte "Experten" des Terminals (oder auf der Registerkarte "Journal" des Strategietesters).

//+------------------------------------------------------------------+
//|                                                   Set Symbol.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
//---
#include <Trade\SymbolInfo.mqh>  
CSymbolInfo    m_symbol;                     // symbol info object
//--- input parameters
input string   InpSymbol="ASDWER";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!m_symbol.Name(InpSymbol)) // sets symbol name
      return(INIT_FAILED);
   RefreshRates();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!RefreshRates())
      return;
   string text=m_symbol.Name()+"\n"+
               "Ask "+DoubleToString(m_symbol.Ask(),m_symbol.Digits())+"\n"+
               "Bid "+DoubleToString(m_symbol.Bid(),m_symbol.Digits());
   Comment(text);

  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates(void)
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
     {
      Print("RefreshRates error");
      return(false);
     }
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+

Wenn ein im Parameter"InpSymbol" spezifiziertes Symbol vorhanden ist, werden die folgenden Informationen im Diagramm angezeigt

  • Name des Symbols
  • Preis fragen
  • Preis Gebot


So funktioniert es: Wir starten es auf EURUSD und geben das USDJPY-Symbol in den Einstellungen an. Es funktioniert also mit dem EURUSD-Symbol, aber die Daten (Preise) stammen von USDJPY


Dateien:
 
Vladimir Karputov:

Sie sind ein bisschen blumig, aber lassen Sie mich raten: Sie brauchen einen Eingabeparameter mit einem Symbolnamen? Dann ist hier der Code - Sie geben das gewünschte Symbol im Parameter"InpSymbol" an. Dieses Symbol wird in OnInit() überprüft - wenn es kein solches Symbol gibt, wird der Expert Advisor entladen und eine Fehlermeldung erscheint auf der Registerkarte "Experten" des Terminals (oder auf der Registerkarte "Journal" des Strategietesters).

Wenn ein im Parameter"InpSymbol" spezifiziertes Symbol vorhanden ist, werden die folgenden Informationen im Diagramm angezeigt

  • Name des Symbols
  • Preis fragen
  • Preis Gebot


So funktioniert es: Wir starten es auf EURUSD und geben das USDJPY-Symbol in den Einstellungen an. Es funktioniert also mit dem EURUSD-Symbol, aber die Informationen (Preise) stammen aus US

Wladimir Karputow:

Sie sind etwas blumig, aber lassen Sie mich raten: Sie brauchen einen Eingabeparameter mit dem Symbolnamen? Hier ist der Code - Sie geben das gewünschte Symbol im Parameter"InpSymbol" an. Dieses Symbol wird in OnInit() überprüft - wenn es kein solches Symbol gibt, wird der Expert Advisor entladen und eine Fehlermeldung erscheint auf der Registerkarte "Experten" des Terminals (oder auf der Registerkarte "Journal" des Strategietesters).

Wenn ein im Parameter"InpSymbol" spezifiziertes Symbol vorhanden ist, werden die folgenden Informationen im Diagramm angezeigt

  • Name des Symbols
  • Preis fragen
  • Preis Gebot


So funktioniert es: Wir starten es auf EURUSD und geben das USDJPY-Symbol in den Einstellungen an. Es stellt sich also heraus, dass es mit dem EURUSD-Symbol funktioniert, aber Informationen (Preise) vom USDJPY-Symbol erhält


Ja, aber in diesem Beispiel läuft der Expert Advisor auf EURUSD, aber die Informationen (Preise) werden vom USDJPY-Symbol bezogen.

Warum die Dinge komplizieren, ich meine, wenn wir dieses Beispiel nehmen, dann starten wir den Expert Advisor auf EURUSD ( oder jede andere

benötigtes Währungspaar) und das war's, wir beobachten dieses Paar und eröffnen dann, wenn nötig, eine Position.