[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 311

 

Frage zur Funktionsweise des Testers: Nachdem Sieeinen Test durchgeführt haben, ändern Sie die Parameter (Daten, Währungspaar, Zeitrahmen) und führen den Test erneut aus - er läuft, aber wenn er beendet ist, ändern sich die Informationen in den Registerkarten wie "Diagramm" und "Bericht" überhaupt nicht - alles bleibt vom vorherigen Test erhalten. Der gespeicherte Bericht ist ebenfalls veraltet. Was ist der Grund dafür und wie kann man ihn beheben? Vielleicht gibt es eine Funktion zum Zurücksetzen der Ergebnisse?

Ich habe das Handbuch gelesen, Artikel gelesen, das Forum durchsucht - ich habe keine Hinweise auf ein solches Problem gefunden...

 

Ich denke, ich muss eine externe Datei verwenden, um den Indikator anzuzeigen, damit ich ihn als Expert Advisor verwenden kann. Ich kann nicht herausfinden, was los ist.Ich brauche Hilfe bitte, nur ein wenig links, kein Geld leider, die letzte jetzt auf dem Handelskonto, aber das System pflügt, überprüft, wenn jemand braucht, um einen kleinen Bericht über die manuelle Handel skype.

1) mit dem Bericht

Wer wird helfen, zu beenden, was er begonnen hat, mit denen die Strategie teilen (Indikator Knirschen nur ein Teil der Strategie, aber nicht weniger wichtig). Real Grad (kann nicht so lange Glück, mähte nur unsere Energetik und dass nicht ein Stopp-Schleife, bis dann, alles geht auf den Aufstieg und Sie sehen, mit dem, was Fortschritte).

Dateien:
 
aber hier sind die Teile des Codes
Dateien:
 

Können Sie mir sagen, was los ist? Vier Aufträge hintereinander werden normal geändert, aber beim vierten Tick wird OrderModify error 1 geschrieben.

Nach einer Trendwende ist die erste Ordnung in Ordnung, die zweite Ordnung ändert sich normal, aber es wird wieder der gleiche Unsinn geschrieben...

Die Normalisierung spielt dabei keine Rolle.

Ich kämpfe schon seit mehreren Tagen!

   for (x=0;x<OrT;x++)
   {
   if (OrderSelect(x,SELECT_BY_POS)==true)
    {
     if (OrderMagicNumber() == magic)
      {
       if (OrderType = OP_BUY)
       {
       shift = iBarShift(Symbol(),30,OrderOpenTime());                           //запомнил свечу открытия
        for (m=shift;m>=1;m--)
        if (High[m]-OrderOpenPrice() >= TS*Point)
        {
         if (OrderOpenPrice()+spread*Point != OrderStopLoss())
         {
          OrderModify(OrderTicket(),OrderOpenPrice(),                           //переводит SL в безубыток
          OrderOpenPrice()+spread*Point,OrderTakeProfit(),0,CLR_NONE);
          return;
         }
        }
       }
      }
     if (OrderMagicNumber() == magic)
     {
      if (OrderType = OP_SELL)
      {
       shift = iBarShift(Symbol(),30,OrderOpenTime());                           //запомнил свечу открытия
        for (m=shift;m>=1;m--)
        if (OrderOpenPrice()-Low[m] >= TS*Point)
        {
         if (OrderOpenPrice()-spread*Point != OrderStopLoss())
         {
           OrderModify(OrderTicket(),NormalizeDouble(OrderOpenPrice(),dig),     //переводит SL в безубыток
           NormalizeDouble(OrderOpenPrice()-spread*Point,dig),
           NormalizeDouble(OrderTakeProfit(),dig),0,CLR_NONE);
           return;
         }
        }
       } 
      }
    }
   }

Ich danke Ihnen im Voraus.

 
CYBOPOB:

Können Sie mir sagen, was los ist? Vier Aufträge hintereinander werden normal geändert, aber beim vierten Tick wird OrderModify error 1 geschrieben.

Nach einer Trendumkehr ist der erste Auftrag in Ordnung, der zweite ändert ihn, aber er zeigt wieder denselben Fehler an...

Die Normalisierung spielt dabei keine Rolle.

Ich kämpfe schon seit einigen Tagen mit diesem Problem!

Ich danke Ihnen im Voraus.

Entweder Sie berücksichtigen die Regeln selbst (beim Schreiben des Codes), oder Sie verwenden fertige Lösungen, bei denen diese Regeln bereits berücksichtigt werden.
 
CYBOPOB:

Können Sie mir sagen, was los ist? Vier Aufträge hintereinander werden normal geändert, aber beim vierten Tick wird OrderModify error 1 geschrieben.

Nach einer Trendumkehr ist die erste Ordnung in Ordnung, die zweite Ordnung ändert sich normal, aber es wird wieder der gleiche Unsinn geschrieben...

Die Normalisierung spielt dabei keine Rolle.

Ich kämpfe schon seit mehreren Tagen!

Ich danke Ihnen im Voraus.

Vor der Änderung müssen Sie überprüfen, ob der Parameter für den Stoppauftrag nicht gleich dem neuen Stopp ist. Wenn sie gleich sind, gibt es nichts zu ändern. Daher: Fehler 1.
 

Über das Sortieren von Arrays.
Ich versuche, zwei Arrays zu sortieren: die erste in aufsteigender Reihenfolge(ArraySort(num_array);Funktion), und die zweite nach dem ersten, so dass, wenn das fünfte Element im ersten Array zuerst kommt, dann das zweite Array wird das gleiche tun (fünfte Element kommt zuerst).
Wenn es eine MQL-Funktion zum Sortieren von Arrays gibt, geben Sie mir bitte den Link.
Herzliche Grüße. Schurkin.

 
artmedia70:
Bevor Sie eine Änderung vornehmen, müssen Sie überprüfen, ob der Parameter für den Stoppauftrag nicht gleich dem neuen Stopp ist. Wenn sie gleich sind, gibt es nichts zu ändern. Daher: Fehler 1.


War es das nicht?

if (OrderStopLoss() != OrderOpenPrice()-spread*Point)

Artem, betrachte es nicht als Problem, schreibe den Code, ja? Oder gib mir das Ding, das du in der Hand hältst, dann beende ich diese Qual...

 
CYBOPOB:

War es das nicht?

Artem, betrachte es nicht als Problem, schreibe den Code, ja? Oder gib mir das Ding, das du in der Hand hast, dann beende ich diese Qual...


Das nicht. Ich habe es Ihnen gesagt:

Bevor Sie eine Änderung vornehmen, müssen Sie überprüfen, ob der Parameter für den Stoppauftrag nicht gleich dem neuen Stopp ist. Wenn sie gleich sind, gibt es nichts zu ändern. Daher Fehler 1.

 

Ich habe eine Frage an die Fachleute. Ich möchte die Funktion universell machen. Die Funktion zählt, wie viele Balken eines Merkmals (bullish oder bearish, passend zur Größe, vielleicht füge ich noch etwas hinzu) aufeinander folgen, und wenn es einen Balken gibt, der diesem Merkmal nicht entspricht, d.h. in eine andere Richtung zeigt, wird der Zähler zurückgesetzt.

Hier ist ein Code, in dem ich eine der Varianten berechne. D.h. wenn die Balken eines Merkmals nach oben gehen, d.h. bullish sind.

int LastCandlesType(int trend)
{
   int cnt,                            // Счётчик идущих друг за другом свечей с требуемыми признаками

   for (int i=i_AnyBarsToHistory; i>=1; i--)
   {
      if ((Close[i] - Open[i]) >= i_sizeOfSequentialCorrectionBar * pt)     // Если бар соответствует требуемым признакам..
          cnt++;                                                                     // .. прибавим 1 к счётчику

      if (Close[i] < Open[i])                                                        // Если бар, не соответствует основному признаку..
          cnt = 0;                                                                   // .. счётчик обнуляем
      
/*      if (i == 1)
      Print("i = ", i,"; cnt = ", cnt);*/
   }

   if (cnt == 3)                                                                     // Если 5 баров вподряд бычьи..
    return (REQUIRED_SEQUENTIAL_CANDLE_GOT);                                         //..Выходим из функции
}

Wie kann man erreichen, dass bei der Übergabe des Trendparameters an diese Funktion, die für die Übergabe des vermeintlichen Haupttrends im Moment verantwortlich ist, die Berechnung auf diesem Parameter basiert?

D.h. wenn Trend == abwärts, war die Funktion in der Schleife wie jetzt, und wennTrend == aufwärts, wurden Open[i] und Close[i] in der Schleife vertauscht, so dass die Bedingungen eingehalten wurden. Denn in diesem Fall ist der Schlusskurs des Balkens niedriger als der Eröffnungskurs und die Differenz wird als Minus ausgewiesen.