Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Twitter!
und werden Sie Mitglied unserer Fangruppe
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Bewerten Sie es im Terminal MetaTrader 5
- Ansichten:
- 9478
- Rating:
- Veröffentlicht:
- 2016.10.27 13:43
- Aktualisiert:
- 2017.05.15 16:53
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
This cross-platform library allows to conveniently perform byte-wise operation with structures and standard data types.
Features:
- Byte-wise comparison (== and !=) of the structures and standard data types with each other (in MQL, the operators for comparing structures are absent by default).
- Determining the byte shift of a structure filed by its name.
- Reading the value of any standard type by the byte shift in the source data.
- Writing structures and standard types by byte shift to the source data.
- Converting structures and standard data types into a byte array.
Everything mentioned applies to simple structures.
A script with detailed comments is attached to demonstrate the capabilities of the library
// MQL4&5-code #property strict #include <TypeToBytes.mqh> #define PRINT(A) ::Print(#A + " = " + (string)A); void OnStart( void ) { MqlTick Tick; ::SymbolInfoTick(::Symbol(), Tick); MqlTick CloneTick = Tick; // Operation with structures if (_R(Tick) == CloneTick) // Now the structures can be compared ::Print("Equal"); // Get the result of the required type by shift PRINT(_R(Tick)[(datetime)0]) // Check the 'datetime' value with the zero shift in the object of the MqlTick structure - Tick.time // Get the shift of the structure field const int Offset = _OFFSET(Tick, bid); // Found the shift in bytes of the bid field in the MqlTick object PRINT(Tick.bid) // Checked the value of Tick.bid _W(Tick, Offset, (double)1.23456); // Wrote the (double)1.23456 value at the found shift PRINT(Tick.bid) // Made sure that the Tick.bid is now equal to 1.23456 PRINT(_R(Tick)[(double)Offset]) // Printed the 'double' value located at the shift Offset - it is Tick.bid again PRINT(_R(Tick).Bytes[8]) // Checked the value of byte with the shift of 8 in the object of the MqlTick structure PRINT(_R(Tick)[(uchar)8]) // The same, but using a different method PRINT(CloneTick.bid) // Checked the value of CloneTick.bid _W(CloneTick, 0, Tick); // Wrote the value of the Tick structure object to the CloneTick at the zero shift PRINT(CloneTick.bid) // Made sure that CloneTick.bid == Tick.bid // Operation with the standard types color Color = C'241,248,255'; PRINT(_R(Color)[(uchar)1]) // Green component of the color - 248 _W(Color, 2, (uchar)230); // Wrote the (uchar)230 value at the shift of 2. PRINT(Color) // Made sure that Color is now C'241,248,230' // Simultaneous operation with mixed types if (_R(Tick) != Color) // It is even possible to compare structures with standard types ::Print("Not equal"); return; }
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/16282
![PriceLines](https://c.mql5.com/i/code/script.png)
Script for drawing a price markup.
![Multi Timeframe Moving Average](https://c.mql5.com/i/code/indicator.png)
The indicator displays the moving average for the selected timeframe.
![News EA Template without DLL](https://c.mql5.com/i/code/expert.png)
Template EA that downloads news without the use of DLL.
![Basket Chart Creator](https://c.mql5.com/i/code/script.png)
Basket offline chart creator script using geometric mean method.