Vertikale Linie im Strategietester in allen Zeiteinheiten

Einloggen oder registrieren, um einen Kommentar zu schreiben
Marc-André
56
Marc-André  

Hallo zusammen,

ich verzweifele gerade daran, eine banale vertikale Linie im Strategie Tester auf allen Timeframes sichtbar zu machen.

Also, wenn ich quasi anhand historischer Daten debugge, öffnen sich aufgrund mehrerer CopyBuffer in unterschiedlichen Zeiteinheiten mehrere Charts (z.B. M1, M15, H1).

Nun möchte ich die vertikale Linie nicht nur auf dem Hauptchart sichtbar machen, sondern auf allen.

Ich dachte das funktioniert mit ObjectSetInteger aber leider erfolglos.

Hat jemand eine Idee?

         CChartObjectVLine *vLine;
         vLine = new CChartObjectVLine;
         string vLineName = "CrossedV " + (string)TimeCurrent();
         vLine.Create(0, vLineName, 0, TimeCurrent());
         vLine.Color(clrBlue);
         bool ok =  ObjectSetInteger(0, vLineName, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS);         
         ChartRedraw(0);

Danke im Voraus.

LG

amando
2893
amando  
Marc-André:

Hallo zusammen,

ich verzweifele gerade daran, eine banale vertikale Linie im Strategie Tester auf allen Timeframes sichtbar zu machen.

Also, wenn ich quasi anhand historischer Daten debugge, öffnen sich aufgrund mehrerer CopyBuffer in unterschiedlichen Zeiteinheiten mehrere Charts (z.B. M1, M15, H1).

Nun möchte ich die vertikale Linie nicht nur auf dem Hauptchart sichtbar machen, sondern auf allen.

Ich dachte das funktioniert mit ObjectSetInteger aber leider erfolglos.

Hat jemand eine Idee?

Danke im Voraus.

LG

Also mit chartid 0 geht das mal sicher nicht, weil du damit ja nur das ausgewählte fenster ansprichst.

ob das im strategietester geht ist eine gute frage.

dazu müsstest du die chart id herauslesen und dann diese anstelle der 0 einsetzen

im tester hab ich das aber nie probiert

Marc-André
56
Marc-André  
amando:

Also mit chartid 0 geht das mal sicher nicht, weil du damit ja nur das ausgewählte fenster ansprichst.

ob das im strategietester geht ist eine gute frage.

dazu müsstest du die chart id herauslesen und dann diese anstelle der 0 einsetzen

im tester hab ich das aber nie probiert

Danke für die Antwort.

Habe mal folgenden Code ausgeführt:

long chartID=ChartFirst();

while(chartID >= 0)
  {
   Print(chartID);
   chartID = ChartNext(chartID);
  }


Tatsächlich wird aber immer nur eine ChartID gefunden und immer mit dem Wert "12345".

Wenn ich diese Einsetze funktioniert es leider auch net... :-(


Danke im Voraus.

LG

amando
2893
amando  
Marc-André:

Danke für die Antwort.

Habe mal folgenden Code ausgeführt:


Tatsächlich wird aber immer nur eine ChartID gefunden und immer mit dem Wert "12345".

Wenn ich diese Einsetze funktioniert es leider auch net... :-(


Danke im Voraus.

LG

Na das kann mal nicht funktionieren 

die anzahl der chart windows bekommst du so nicht

du sagst ja in deiner while schleife schon, fang mit 0 an 


//+------------------------------------------------------------------+
void LoadChartID()
  {
// Array für ChartID
   long currChart,prevChart=ChartFirst();

   int i=1,limit=100;                                          // ab 1 weil aktuelles Chart hat ID 0
   ArrayResize(ChartId,limit);                                 // chart ID
   ArrayResize(ChartTimeFrame,limit);                            // Chart Periode
   ArrayResize(ChartExpert,limit);

   ChartId[0] = ChartFirst();                                  // erstes Chart in den Array
   ChartTimeFrame[0] = ChartPeriod(ChartId[0]);
   ChartExpert[0] = ChartGetString(ChartId[0],CHART_EXPERT_NAME);
   while(i<limit)                                              // sie haben bestimmt mehr als 100 geoeffnete Dateien
     {
      currChart=ChartNext(prevChart);                          // bekommen einen neuen Chart mittels des vorherigen
      if(currChart<0)
         break;
      ChartId[i] = currChart;
      ChartTimeFrame[i] = ChartPeriod(ChartId[i]);
      ChartExpert[i] = ChartGetString(ChartId[i],CHART_EXPERT_NAME);
      prevChart=currChart;                                     //speichern wir Identifikator des laufenden Charts für ChartNext()
      i++;                                                     // nicht vergessen, den Counter zu steigern

     }

   ArrayResize(ChartId,i);                                     // Array auf die Anzahl der Charts anpassen
   ArrayResize(ChartTimeFrame,i);                                // Chart Periode Array anpasen
   ArrayResize(ChartExpert,i);


  }
Marc-André
56
Marc-André  
amando:

Na das kann mal nicht funktionieren 

die anzahl der chart windows bekommst du so nicht

du sagst ja in deiner while schleife schon, fang mit 0 an 


Hi,

danke für den Code. Tatsächlich findet sich auch dann nur eine ChartID mit 12345.

Im Anhang das Debugging Fenster.


Vermutlich geht das dann gar nicht?

LG

Einloggen oder registrieren, um einen Kommentar zu schreiben