Fragen von einem "Dummy" - Seite 40

 

Bitte erklären Sie, warum keine der EAs in MetaTrader 5 im Strategietester getestet werden . Ich drücke auf Start und nichts passiert. Bitte erklären Sie mir das.

 
PATRIOT:

Bitte erklären Sie, warum keine der EAs in MetaTrader 5 im Strategietester getestet werden . Ich drücke auf Start und nichts passiert. Bitte erklären Sie mir das.

Schauen Sie in das Logbuch (für den Anfang).
 

In erstellten Funktionen können keine Daten aus vordefinierten Strukturen abgerufen werden. Zum Beispiel:

void OnTick()
{
//--- Объявляем структуру
 MqlRates rates[];
 ArraySetAsSeries(rates,true);

//--- Скопировать необходимое количество значений в массив
 if(CopyRates(NULL,0,0,4,rates) < 0) { Print(ErrorDescription(GetLastError())); return; }
...
}

Wenn Sie dann versuchen, Werte in einer erstellten Funktion abzurufen:

void Trailing_Stop_Loss(ENUM_POSITION_TYPE Type, double Trailing_Stop)
{
 string Val_Time = TimeToString(rates[1].time,TIME_DATE|TIME_MINUTES);

...
}

Wir erhalten eine Fehlermeldung:

Wie deklariere ich Strukturen, damit sie in allen Teilen des Programms verfügbar sind?

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
tol64:

In erstellten Funktionen können keine Daten aus vordefinierten Strukturen abgerufen werden. Zum Beispiel:

Wenn Sie dann versuchen, Werte in einer erstellten Funktion abzurufen:

Wir erhalten eine Fehlermeldung:

Wie deklariere ich Strukturen, damit sie in allen Teilen des Programms verfügbar sind?

Im globalen Bereich. Außerhalb der Funktion.
 
Welche Funktionen können verwendet werden, um zu prüfen, ob ein Handelsfaden für die Durchführung eines Handelsvorgangs frei ist? In MQL4 waren die Funktionen IsTradeAllowed() und IsTradeContextBusy() für diesen Zweck vorgesehen.

Die Klasse CAccountInfo der Standardbibliothek verfügt über die Funktion TradeAllowed(). In der Hilfe steht geschrieben, dass es bedeutet:"Der Handel ist für dieses Konto erlaubt/verboten". Ich habe keinen Fehlercode in den Rückgabecodes des Handelsservers gefunden, was bedeutet, dass der Handelsfluss möglicherweise ausgelastet ist. Befindet sich diese Prüfung jetzt im Handelsterminal selbst? Bitte klären Sie das.


 
tol64:
Welche Funktionen können verwendet werden, um zu prüfen, ob ein Handelsfaden für die Durchführung eines Handelsvorgangs frei ist? In MQL4 waren die Funktionen IsTradeAllowed() und IsTradeContextBusy() für diesen Zweck vorgesehen.

Die Klasse CAccountInfo der Standardbibliothek verfügt über die Funktion TradeAllowed(). In der Hilfe steht geschrieben, dass es bedeutet:"Der Handel ist für dieses Konto erlaubt/verboten". Ich habe keinen Fehlercode in den Rückgabecodes des Handelsservers gefunden, was bedeutet, dass der Handelsfluss möglicherweise ausgelastet ist. Befindet sich diese Prüfung jetzt im Handelsterminal selbst? Bitte klären Sie das.

In MT5 ist der Handels-Thread nie beschäftigt, da die Handelsoperationen asynchron sind. Freuen Sie sich.
 
tol64:
Welche Funktionen können verwendet werden, um zu prüfen, ob ein Handelsfaden für die Durchführung eines Handelsvorgangs frei ist? In MQL4 waren die Funktionen IsTradeAllowed() und IsTradeContextBusy() für diesen Zweck vorgesehen.

Die Klasse CAccountInfo der Standardbibliothek verfügt über die Funktion TradeAllowed(). In der Hilfe steht geschrieben, dass es bedeutet:"Der Handel ist für dieses Konto erlaubt/verboten". Ich habe keinen Fehlercode in den Rückgabecodes des Handelsservers gefunden, was bedeutet, dass der Handelsfluss möglicherweise ausgelastet ist. Befindet sich diese Prüfung jetzt im Handelsterminal selbst? Bitte erklären Sie das.


In MetaTrader5 gibt es so etwas wie einen "busy trade thread" nicht. Während MT4 nur einen einzigen Auftrag eines Händlers verarbeiten konnte, werden in MT5 viele Aufträge parallel verarbeitet. Die Rückgabecodes des Servers für jede Bestellung können mit der Funktion OnTrade() abgefragt werden.
 
uncleVic:

Sie müssen nur noch den Preis festlegen.

Wenn kein Preis eingestellt ist (Standardwert ist 0,0) oder wenn der Marktpreis eingestellt ist, wird CExpertTrade von CExpert aufgefordert , eine Position auf dem Markt zu eröffnen.

Wenn der Preis besser als der Markt ist (unter dem aktuellen Kaufkurs und über dem aktuellen Verkaufskurs), wird CExpertTrade eine Limit-Order platzieren (wenn die Marge eingehalten wird).

Wenn der Preis unter dem Markt liegt (über dem aktuellen Geldkurs und unter dem aktuellen Briefkurs), platziert CExpertTrade eine Stop-Order (vorbehaltlich der Einrückung).

bool Chhhh::OpenLongParams(double& price, double& sl, double& tp, datetime& expiration)
{
   printf("11111111");
   if(2+2==4)
   {
      price=1.5;
      sl=0;
      tp=0;
      expiration=0;
      return(true);
   }
   else
   {
      return(false);
   }
}

int Chhhh::LongCondition()
{
  printf("222222222");
  return(60);
}
OpenLongParams funktioniert überhaupt nicht, es wird nicht einmal "1111111111" zurückgegeben,
und LongCondition geben "2222222" zurück und öffnen einen Auftrag,
ist es etwas falsch oder ist es anders eingestellt?
 
sergeev:

Der spezifische Typ wird bei der Auftragserteilung festgelegt. BestellungSenden
Was hat OrderSend damit zu tun?
 
Lodar:
OpenLongParams wird überhaupt nicht ausgeführt, es wird nicht einmal "1111111111" geschrieben,
aber LongCondition schreibt "222222222" und öffnet einen Auftrag,
mache ich etwas falsch oder ist es anders eingestellt?

Im Prinzip sind die Dinge viel einfacher. In 99 Prozent der Fälle kann der Eingangspegel über einen Eingangsparameter eingestellt werden:

input double Inp_Signal_PriceLevel    =0.0;

Der Wert wird in "großen" Pips (d.h. 2/4 Ziffern) angegeben.

Wert = 0 - Markteintritt.

Wert > 0 - Eintrag durch Limitauftrag.

Wert < 0 - Eintrag durch Stop-Order.

Der Parameter bezieht sich auf das Hauptsignal (in dem die im Assistenten ausgewählten Signale für die Abstimmung gesammelt werden). Der Algorithmus zur Festlegung der Preisniveaus ist bereits in der Basisklasse CExpertSignal implementiert (deren Instanz das Hauptsignal ist).

Aber wenn Sie einen Algorithmus verwenden wollen, der sich von dem implementierten unterscheidet... Aber das ist für später, wenn es interessant sein wird.