Timer-Erinnerung fuer alle ausstehenden Messungen + MQL5 v1.26

1) measurement_reminder.py + Task OilMeasurementReminder (taeglich 18:00):
   meldet per Popup, welche Messung genug Daten hat. Jeder Punkt mit PRUEFBARER
   Bedingung (Datenmenge/Datum), Meldung je Punkt 1x (Marker in .reminders/).
   Status: python measurement_reminder.py --status

   Direkt zwei FAELLIGE Punkte gefunden:
   - P(break)-Prognose-Genauigkeit: 2213 ausgewertete Vorhersagen (Schwelle 500),
     lag seit 2026-07-23 unbeachtet herum
   - Chartmuster-Kontrolltest (generischer Breakout): jederzeit machbar

   Noch sammelnd: verdict_votes 24%, AUTOSIG-Trades 0, M30-Level-Validierung 27%,
   M1-History 7%, News-Score 8%.

2) MQL5 v1.26: Beschriftungen UND Pfeile stehen jetzt ganz rechts am Chartrand,
   auf einer Linie mit dem Kurs-Label (User: "genau so angeordnet wie der aktuelle
   Kurs"). RightTime() rechnet das Ende des Shift-Bereichs aus
   (CHART_WIDTH_IN_BARS x InpShiftPct) statt fix 2 Kerzen hinter der letzten Bar.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-30 19:09:01 +02:00
co-authored by Claude Opus 4.8
parent 3a7bd044c0
commit 770f994fd1
4 changed files with 237 additions and 5 deletions
+15 -5
View File
@@ -12,7 +12,12 @@
//| 4) Der Bot muss laufen (schreibt die CSV alle ~5 s). |
//+------------------------------------------------------------------+
#property copyright "Oil Trading Bot"
#property version "1.25"
#property version "1.26"
// v1.26 (2026-07-30): Beschriftungen + Pfeile stehen jetzt GANZ rechts am
// Chartrand — auf Hoehe des Kurs-Labels (User: „genau so angeordnet wie der
// aktuelle Kurs"). RightTime() rechnet dafuer das Ende des Shift-Bereichs
// aus (CHART_WIDTH_IN_BARS x InpShiftPct) statt fix 2 Kerzen hinter die
// letzte Bar. Gilt beim Erzeugen UND beim Nachfuehren.
// v1.25 (2026-07-30): S/R-Labels zeigen die DURCHBRUCHWAHRSCHEINLICHKEIT
// (User-Wunsch) — der Bot haengt sie als drittes CSV-Feld an (R;preis;pct).
// Quelle = dasselbe kalibrierte P(break)-Modell wie der S/R-Auto-Close, auf
@@ -245,7 +250,13 @@ datetime CenterTime()
//+------------------------------------------------------------------+
datetime RightTime()
{
return iTime(_Symbol, PERIOD_CURRENT, 0) + (datetime)(PeriodSeconds() * 2);
// Ganz an den RECHTEN Chartrand — also ans Ende des Shift-Bereichs, nicht nur
// 2 Kerzen hinter die letzte (User 2026-07-30: „genau so angeordnet wie der
// aktuelle Kurs"). Der Shift-Bereich ist InpShiftPct % der sichtbaren Breite;
// ein Balken Reserve, damit der Text nicht am Rand abgeschnitten wird.
long width = ChartGetInteger(0, CHART_WIDTH_IN_BARS);
int bars = (int)MathMax(2, (double)width * InpShiftPct / 100.0 - 1.0);
return iTime(_Symbol, PERIOD_CURRENT, 0) + (datetime)(PeriodSeconds() * bars);
}
//+------------------------------------------------------------------+
//| Hält die Beschriftungen beim Scrollen/Zoomen am rechten Rand |
@@ -268,7 +279,7 @@ void RepositionLabels()
// Liquiditäts-PFEILE rechtsbündig halten: die CSV ändert sich nicht bei jedem
// Tick, ohne Nachführung würden die Pfeile mit jeder neuen Kerze nach links
// wandern. Preis bleibt, nur die Zeit wird an den rechten Rand gezogen.
datetime rt = iTime(_Symbol, PERIOD_CURRENT, 0) + (datetime)(PeriodSeconds() * 2);
datetime rt = RightTime();
int na = ObjectsTotal(0, 0, OBJ_ARROW);
for(int i = 0; i < na; i++)
{
@@ -476,8 +487,7 @@ void Redraw()
string an = PFX + "ALQ_" + side;
// Rechter Rand = aktuelle (rechteste) Kerze + kleiner Versatz, damit der
// Pfeil frei neben dem Kursverlauf steht und beim Scrollen rechts bleibt.
datetime atime = iTime(_Symbol, PERIOD_CURRENT, 0)
+ (datetime)(PeriodSeconds() * 2);
datetime atime = RightTime();
if(ObjectCreate(0, an, OBJ_ARROW, 0, atime, lpx))
{
ObjectSetInteger(0, an, OBJPROP_ARROWCODE, (dirc == "U" ? 233 : 234));