Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 10.03.18
next user next user ist offline
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich mir deinen Code so ansehe, denke ich, bei dir gibt es noch ein wenig Verständnissprobleme (Grundlagen fehlen).

Gehen wir mal kurz durch:

Code:
int start()
Ist wegen Kompatibilität noch vorhanden, sollte aber durch "OnTick()" ersetzt werden. Siehe auch Update.
Bedenke das dein Code bei JEDEM Tick ausgeführt wird. Vieles im Code ist nicht bei jedem Tick sinnvoll. Du solltest Bedingungen nutzen!

Code:
int bs_array[4] = {1,2,3,4};
int Index = ArrayMinimum(bs_array,WHOLE_ARRAY,0);
double Tief = ZIGZAG[Index];
  • In dem Code, den du gepostet hast, hat "bs_array[]" keinen Sinn.
  • Die zweite Zeile ermittelt IMMER dass gleiche, nähmlich den kleinsten Wert von "1,2,3,4". Auch diese Zeile hat keinen Sinn.
  • Die dritte würde ja noch einigermaßen Sinn ergeben, jedoch wird immer! der erste Wert verwendet. Ist sicher nicht so gedacht.
  • Diese drei Zeilen sind somit unnötig und sprechen konstant immer den gleichen Wert an.
=== === === === === === === === === === === ===
Code:
double ord = OrderSelect(LongTicket,SELECT_BY_TICKET);
  • OrderSelect() liefert nur einen Wert vom Typ "bool (true / false)". Mit "double ord" wolltest du sicher etwas anderes speichern...
  • In deinem Code bekommt "LongTicket" vor dieser Nutzung keinen Wert. Du fragst also immer! die Order mit
    der Ticketnummer "0" ab, was natürlich keinen Erfolg haben kann. Deine Double-Variable "ord" erhält dabei immer den Wert "0 (false)".
=== === === === === === === === === === === ===
Code:
if(OrderCloseTime() != 0 || LongTicket == 0)
{
   ...
  • Nach dem erfolglosen Aufruf von "OrderSelect()", wird auch "OrderCloseTime()" hier nicht erfolgreich aufgerufen.
  • Die zweite Bedingung (LongTicket ist ja 0) sorgt für das Ausführen des if-Blocks. LongTicket bekommt hier
    also endlich einen Wert und eine Order wird eröffnet.
=== === === === === === === === === === === ===
Code:
if(OrderSelect(OrderTicket(),SELECT_BY_TICKET)==true) 
{  
   if(OrderType() == OP_BUY)
   {
      if(Volume[0]==1)
      {
         bool res = OrderModify(LongTicket,OrderOpenPrice(),ZIGZAG[Index],0,0,clrAliceBlue);
         
         if(!res)
            {Print("Error Order Modify PrintER",GetLastError());}
      }
   }
}
  • "OrderTicket()" liefert die Ticketnummer der AKTUELL SELEKTIERTEN Order. Zum einen ist zu diesem Zeitpunkt keine Order
    selektiert (siehe vorherige Anmerkungen), zum anderen ist ein Aufruf von "OrderTicket()" IN der Funktion "OrderSelect()" logischerweise
    vollkommen unlogisch!
  • Das "== true" kann auch weggelassen werden.
  • Sicher, das du das Volumen mit "1" vergleichen willst? Vielleicht solltest du mal nachschauen, was das Volumen ist.
  • Wegen der vorherigen Punkte dürftest du also erst garnicht zu "OrderModify()" kommen. Und bedenke auch bitte,
    was ich weiter oben zu "ZIGZAG[Index]" geschrieben habe.