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

 

Zitat aus dem Handbuch:

//+------------------------------------------------------------------+

//|Experten-Initialisierungsfunktion|
//+------------------------------------------------------------------+
intOnInit()
{
//--- Ermitteln des Wertes des benutzerdefinierten Indikators
doublevalue=iCustom(_Symbol,_Periode,"::Indicators\\\SampleIndicator.ex4",0,0);

Verweis auf Indikatorvariablen in der Initialisierungsfunktion, nicht in der Startfunktion? DerVerweis auf Indikatorvariablen in der Initialisierungsfunktion öffnet nur eine Stelle.

 
Es ist schon spät. Artem, werden Sie morgen antworten können? Ich danke Ihnen im Voraus.
 
Oleg Kolesov:

Zitat aus dem Handbuch:

//+------------------------------------------------------------------+

//|Experten-Initialisierungsfunktion|
//+------------------------------------------------------------------+
intOnInit()
{
//--- Ermitteln des Wertes des benutzerdefinierten Indikators
doublevalue=iCustom(_Symbol,_Periode,"::Indicators\\\SampleIndicator.ex4",0,0);

Verweis auf Indikatorvariablen in der Initialisierungsfunktion, nicht in der Startfunktion? DerVerweis auf Indikatorvariablen in der Initialisierungsfunktion öffnet nur eine Stelle.

Anstelle von Start ist es höchste Zeit, OnTick() und andere Event-Handler zu verwenden. Vergessen Sie die Funktionen des alten MetaTrader 4. Das neue MQL4 ist nun sehr nah an MQL5 - die einzigen Unterschiede liegen in einer anderen Organisation der Handelsfunktionen und Indikatoren - sie werden nun im OnInit()-Handler erstellt - ein Indikator-Handle wird erstellt und der Datenzugriff auf dieses Handle wird durchgeführt. In MQL4 ist das anders. Aber die Ressourcen sind auf dieselbe Weise zu finden, wenn ich mich nicht irre.

Und der Zugriff auf die berechneten Daten unterscheidet sich nicht wesentlich von dem üblichen Zugriff über iCustom() - der Name ist nur etwas anders.
Документация по MQL5: Обработка событий / OnTick
Документация по MQL5: Обработка событий / OnTick
  • www.mql5.com
//|                                                   TradeByATR.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Oleg Kolesov:
Es ist schon spät. Artem, werden Sie morgen antworten können? Ich danke Ihnen im Voraus.

Keine Versprechungen - beschäftigt.

Später ... es ist 04:51 ... das ist "spät".

 
Artyom Trishkin:
  1. Der Preis für die Auftragserteilung ist nicht normalisiert.
  2. Alle Preise sollten auf StopLevel geprüft werden - wenn der Auftragsabstand in Punkten vom Preis geringer ist als der StopLevel-Wert, wird ein Fehler 130 - ungültige Stops - ausgegeben.

Ich denke, dass das Problem nicht mit StopLevel zusammenhängt, da es immer noch einen Auftrag eröffnet. Aber bei den nächsten Ticks kommt es zu einem Fehler

#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#include  <Init_Deinit.mqh> 

// Переменные
extern double lots    = 0.01;
extern int    Level   = 300;
extern double StopL   = 300;
extern double TakeP   = 1000;


// Start Programm
void OnTick() 
  { 
  //--- вычисленные значений для BuyStop
   
   double price_buystop=NormalizeDouble (Ask+Level*Point, Digits);
   StopL =NormalizeDouble(price_buystop-StopL*Point,Digits); 
   TakeP =NormalizeDouble(price_buystop+TakeP*Point,Digits); 
   
//--- Размещаем отложный ордер BuyStop
   int ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,price_buystop,3,StopL,TakeP,"Rupture",1111,0,clrGreen); 
   if(ticket<0) 
     { 
      Print("BuyStop завершилась с ошибкой #",GetLastError()); 
          } 
   else 
      Print("Функция BuyStop успешно выполнена"); 
      }
 
Doszhan:

Ich denke, dass das Problem nicht mit StopLevel zusammenhängt, da es immer noch einen Auftrag eröffnet. Aber bei den nächsten Ticks kommt es zu einem Fehler

Sie müssen prüfen, ob der Kurs unter dem Stop-Loss oder dem Spread liegt, dann liegt natürlich ein Fehler vor. Dies ist die erste.

Dem Text nach zu urteilen, haben Sie keine Möglichkeit zu überprüfen, ob die Bestellung bereits geöffnet wurde oder nicht.

Auf diese Weise wird sie bei jedem Tick bis ins Unendliche geöffnet.

 
Oleg Kolesov:

H=iCustom(NULL,TF,"::Indicators\\\KChange.ex4",History,Period_1,Period_2,MA_method,0,1);

Der Compiler hat keine Fehler gefunden, aber das Testgerät arbeitet viel langsamer? Ist das normal?

//-----------------------------------------------------------------------------------------------------------------

Das MQL4-Handbuch sagt: Referenz auf Variablen in der Initialisierungsfunktion?

Verweis auf Indikatorvariablen in der Initialisierungsfunktion, nicht in der Startfunktion? Erfahrene Leute sagen es mir bitte!

wenn langsam, müssen Sie den Indikator optimieren-beschleunigen

Sie müssen die Stelle aufrufen, an der Sie die Indikatorwerte überprüfen wollen, bei derInitialisierung wird nur ein Wert empfangen

 
nalyk:

Sie suchen nach einem Fraktal auf dem dritten Balken, das möglicherweise nicht vorhanden ist. Suchen Sie das erste Fraktal im Zyklus.


Auch das funktioniert nicht. Der Auftrag wird auf der Grundlage des Hoch-Tiefs von 2 Kerzen erteilt.
 
Valerius:

Sie müssen prüfen, ob der Kurs unter dem Stop-Loss oder dem Spread liegt, dann liegt natürlich ein Fehler vor. Dies ist die erste.

Dem Text nach zu urteilen, haben Sie keine Möglichkeit zu überprüfen, ob die Bestellung bereits geöffnet wurde oder nicht.

Andernfalls wird sie bei jedem Tick auf unbestimmte Zeit geöffnet.

Genau, es wird nicht bei jedem Tick geöffnet, sondern nur einmal.
 
Doszhan:
Genau, es wird nicht bei jedem Tick geöffnet, sondern nur einmal.

Gibt es einen Fehler 130 im Logbuch?

Oben wird erklärt, woher es kommt und wie man es richtig vermeidet.

Das haben Sie nicht.

Grund der Beschwerde: