2026-06-09 05:44:15 +02:00 | | | //+------------------------------------------------------------------+
|
| | | //| TimePrice.mqh |
|
| | | //+------------------------------------------------------------------+
|
| | | #property strict
|
| | | #ifndef __TIME_PRICE_MQH__
|
| | | #define __TIME_PRICE_MQH__
|
| | |
|
| | | struct TimePrice
|
| | | {
|
| | | int i;
|
| | | datetime x;
|
| | | double y;
|
2026-06-09 08:13:24 +02:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
2026-06-09 05:44:15 +02:00 | | |
|
| | | void Reset()
|
| | | {
|
| | | x = 0;
|
| | | y = 0.0;
|
| | | }
|
2026-06-09 08:13:24 +02:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
2026-06-09 05:44:15 +02:00 | | |
|
| | | void Set(datetime timeValue, double priceValue)
|
| | | {
|
| | |
|
| | | x = timeValue;
|
| | | y = priceValue;
|
| | | }
|
2026-06-09 08:13:24 +02:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | |
|
2026-06-09 05:44:15 +02:00 | | | void Set(int index, datetime timeValue, double priceValue)
|
| | | {
|
| | | i = index;
|
| | | x = timeValue;
|
| | | y = priceValue;
|
| | | }
|
2026-06-09 08:13:24 +02:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | |
|
2026-06-09 05:44:15 +02:00 | | | void Set(TimePrice &tp)
|
| | | {
|
| | | Set(tp.i, tp.x, tp.y);
|
| | | }
|
| | |
|
| | | bool Ok()
|
| | | {
|
| | | return x > 0 && y > 0.0;
|
| | | }
|
2026-06-09 08:13:24 +02:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
2026-06-09 05:44:15 +02:00 | | |
|
2026-06-09 08:13:24 +02:00 | | | TimePrice CenterCoord(TimePrice &p2)
|
| | | {
|
| | | if(!Ok() && !p2.Ok())
|
2026-06-09 05:44:15 +02:00 | | | {
|
| | | TimePrice tp;
|
2026-06-09 08:13:24 +02:00 | | | return tp;
|
| | | }
|
2026-06-09 05:44:15 +02:00 | | |
|
2026-06-09 08:13:24 +02:00 | | | if(!Ok())
|
| | | return p2;
|
2026-06-09 05:44:15 +02:00 | | |
|
2026-06-09 08:13:24 +02:00 | | | if(!p2.Ok())
|
| | | return *this;
|
2026-06-09 05:44:15 +02:00 | | |
|
2026-06-09 08:13:24 +02:00 | | | TimePrice tp;
|
| | |
|
| | | datetime tx = x + (p2.x - x) / 2;
|
| | | double py = (y + p2.y) / 2.0;
|
| | |
|
| | | tp.Set(tx, py);
|
| | |
|
| | | return tp;
|
| | | }
|
2026-06-09 05:44:15 +02:00 | | |
|
| | | string ToString()
|
| | | {
|
| | | return "Time: " + TimeToString(x) + " | Price: " + DoubleToString(y);
|
| | | }
|
| | |
|
2026-06-09 08:13:24 +02:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | TimePrice Min(TimePrice &p2)
|
| | | {
|
| | | TimePrice tp;
|
| | |
|
| | | if(y <= p2.y)
|
| | | tp.Set(i, x, y);
|
| | | else
|
| | | tp.Set(p2.i, p2.x, p2.y);
|
| | |
|
| | | return tp;
|
| | | }
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | TimePrice Max(TimePrice &p2)
|
| | | {
|
| | | TimePrice tp;
|
| | |
|
| | | if(y >= p2.y)
|
| | | tp.Set(i, x, y);
|
| | | else
|
| | | tp.Set(p2.i, p2.x, p2.y);
|
| | |
|
| | | return tp;
|
| | | }
|
| | | };
|
2026-06-09 05:44:15 +02:00 | | | #endif
|
2026-06-09 08:13:24 +02:00 | | |
|
2026-06-09 05:44:15 +02:00 | | | //+------------------------------------------------------------------+
|