global deklarieren, dann in OnInit() Wert zuweisen
Hallo MQL5-Freunde,
ich möchte als Referenzwert einmalig einen Tick in eine Variable speichern; das muss ich als globale Variable machen, weil in OnTick der Wert mit jedem neuen Tick überschrieben würde.
Ich versuche es so:
Im OnTick Bereich funktioniert das, aber global bekomme ich:
"basetick - unexpected Token, probably type is missing?
Kann ich die Funktion im globalen Bereich nicht verwenden?
Hier https://www.mql5.com/de/docs/marketinformation/symbolinfotick steht
da nichts zu.
Vielen Dank & Grüße,
Christian
btw,
dein code,
mit MqlTick speicherst du die aktuellen Tick daten
zur Vereinfachung des Codes
MqlTick tick; basetick=tick.bid; Print("basetick.bid: ", tick.bid);
SymbolInfoTick gibt dir nur true oder false zurück
btw,
dein code,
mit MqlTick speicherst du die aktuellen Tick daten
zur Vereinfachung des Codes
SymbolInfoTick gibt dir nur true oder false zurück
basetick=tick.bid;
Wieso? Symbolinfotick ist doch nur eine bool? Oder hab ich das in der doku falsch verstanden?
die verweist auf die MqlTick und gibt dir true oder false zurück
falscher ansatz?
Ja, ganz falscher Ansatz. Auszug aus der doc:
bool SymbolInfoTick( string symbol, // symbol name MqlTick& tick // reference to a structure );
Wie du siehts wird der MqlTick per reference übergeben, damit dieser mit Werten befüllt werden kann.
Das boolsche Ergebnis sagt nur, ob das auch gelungen ist oder ein Fehler dabei aufgetreten ist.
Komplett sieht das dann so aus:
double ask, bid; void OnTick() { MqlTick tick; if(SymbolInfoTick(_Symbol,tick)) { ask=tick.ask; bid=tick.bid; } else Print("*ERROR* in SymbolInfoTick()"); }
Ja, ganz falscher Ansatz. Auszug aus der doc:
Wie du siehts wird der MqlTick per reference übergeben, damit dieser mit Werten befüllt werden kann.
Das boolsche Ergebnis sagt nur, ob das auch gelungen ist oder ein Fehler dabei aufgetreten ist.
Komplett sieht das dann so aus:
Danke von dir lerne ich immer gerne, das war mal wieder gut erklärt
Danke von dir lerne ich immer gerne, das war mal wieder gut erklärt
Es kann vorkommen, dass SymbolInfoTick und auch SymbolInfoDouble keinen gültigen Wert liefern, obwohl die OnTick getriggert wurde.
void OnTick() { MqlTick tick; bool ok=SymbolInfoTick(_Symbol,tick); double bid=SymbolInfoDouble(_Symbol,SYMBOL_BID); Print("bid: ",bid," tick.bid: ",tick.bid," ok: ",ok); // bid: 0.0 tick.bid: 0.0 ok: true }
Es trat bei mir bisher nur bei einem einzigen Broker auf, beim ersten Tick am Sessionanfang.
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo MQL5-Freunde,
ich möchte als Referenzwert einmalig einen Tick in eine Variable speichern; das muss ich als globale Variable machen, weil in OnTick der Wert mit jedem neuen Tick überschrieben würde.
Ich versuche es so:
Im OnTick Bereich funktioniert das, aber global bekomme ich:
"basetick - unexpected Token, probably type is missing?
Kann ich die Funktion im globalen Bereich nicht verwenden?
Hier https://www.mql5.com/de/docs/marketinformation/symbolinfotick steht da nichts zu.
Vielen Dank & Grüße,
Christian