Einzelnen Beitrag anzeigen
  #7 (permalink)  
Alt 27.07.21
MarkusWilhelm89 MarkusWilhelm89 ist offline
Mitglied
 
Registriert seit: Aug 2020
Beiträge: 64
MarkusWilhelm89 befindet sich auf einem aufstrebenden Ast
Standard

Hi,
ich habe versucht den Code in vernünftiger Form mal dar zu stellen.
Für weitere Hinweise zur Darstellung/Schreibweise bin ich dankbar.
Alles beginnt mit:

1. Schritt: durch eine input Variable wird der Grid_Abstand = zB.: 200 definiert
2. Schritt: Ermittlung vom Preislevel: PREISLEVEL() = OrderOpenPrice() der aktuellen MARKET-Order
3. Schritt: Grid-Bereiche bzw. die Ober-/Untergrenzen der Grid-Bereiche ermitteln

Code:
   double GRID_LOWER_1_HIGH()
     {
      double Grid_Lower_1_High = PREISLEVEL() - (1 * Grid_Abstand * Point) + (Grid_Abstand / 2) * Point;
      return(Grid_Lower_1_High);
     }

   double GRID_LOWER_1_LOW()
     {
      double Grid_Lower_1_Low = PREISLEVEL() - (1 * Grid_Abstand * Point) - (Grid_Abstand / 2) * Point;
      return(Grid_Lower_1_Low);
     }

Sobald das gemacht ist, soll die Prüfung erfolgen, ob der jeweilige OrderType() in dem ermittelten Grid-Bereich (also zwischen Ober-/Untergrenze) vorliegt.
In meinem Beispiel der OrderType() = OP_BUYLIMIT, da ich den Grid-Bereich unterhalb der aktuellen Market-Order prüfe.
Dazu anbei zwei unterschiedliche Vorgehensweisen.

Code:
// Beispiel der aufgeteilten Prüfung

   double Grid_Lower_1_Buylimit_Price = 0;
   for(int i = OrdersTotal()-1; i >= 0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
           {
            Grid_Lower_1_Buylimit_Price = OrderOpenPrice();
           }
        }
     };

   bool Grid_Lower_1_Buylimit_BOOL = false;
     {
      if(Grid_Lower_1_Buylimit_Price < GRID_LOWER_1_HIGH() && Grid_Lower_1_Buylimit_Price > GRID_LOWER_1_LOW())
        {
         Grid_Lower_1_Buylimit_BOOL = true;
        }
     }


Code:
// Beispiel der zusammenhängenden Prüfung

   bool GRID_LOWER_1_BUYLIMIT()
     {
      bool Grid_Lower_1_Buylimit = false;

      for(int i = OrdersTotal()-1; i >= 0; i--)
        {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
              {
               if(OrderType() == OP_BUYLIMIT)
                 {
                  if(OrderOpenPrice() < GRID_LOWER_1_HIGH() && OrderOpenPrice() > GRID_LOWER_1_LOW())
                    {
                     Grid_Lower_1_Buylimit = true;
                    }
                 }
              }
           }
        }

      return (Grid_Lower_1_Buylimit);
     }

Wie anfangs erwähnt, funktioniert die Abfrage bei der "aufgeteilten Prüfung", aber nicht bei der "zusammenhängenden Prüfung".