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

Kein Problem, fängt ja jeder klein an.
Zu meinem Codeschnipsel mal ein kleines Beispiel:
Code:
//Aktuellen Ask-Preis ermitteln
double a_ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);

ObjectCreate(0,"Bid_Linie",OBJ_HLINE,0,0,a_ask);

//Aktuellen Preis der Linie ermitteln und speichern
double aktueller_LinienPreis = ObjectGetDouble(0,"Bid-Linie",OBJPROP_PRICE);
ObjectGetDouble liefert die aktuelle Preisposition deiner Linie. Den Rückgabewert speicherst du einfach in einer double-Variable.
Da du gefragt hast, wie du den Wert deiner Linie auslesen kannst, habe ich dir den Code gegeben. Aber wenn du nur, wie zu sehen, die Variable mit dem Wert nur mit Bid/Ask vergleichst, brauchst du den Wert ja nicht ermitteln.

Zu deinem Code, es wäre besser, wenn du ObjectDelete() und ObjectCreate() nicht ständig aufrufst.
OnTick() wird ja bei jeder Kursveränderung aufgerufen (bei jedem Tick halt). Es ist einfach sinnlos, sein Objekt zu löschen und neu zu zeichnen.
Vor allem rufst du ObjectDelete und ObjectCreate nicht erst nach einer Bedingung, sondern immer auf. Also auch wenn der Kurs in die andere Richtung geht, löscht und erstellst du deine Linie neu, obwohl diese sich nicht geändert hat.
An der stelle wäre es so besser:
Code:
void OnTick()  
{  
   if(runter == 0)  
   {  
      if(Bid_Line > Bid)
      {
         Bid_Line = Bid;
         ObjectMove(0,"Bid_Linie",0,0,Bid_Line);
      }   
   }
     
   double Account= AccountEquity();
   Comment(StringFormat("Account = %G  EUR \nLots = %G\n Bid-Line = %d",Account,Lots,Bid_Line));
}
Damit bewegst du deine Linie einfach nur, und das auch nur, wenn es nötig ist.

Außerdem würde ich dir mal die Funktion OnInit() empfehlen. Diese wäre gut, um alle Standard-Einstellungen und Initialisierungen vorzunehmen. Sie wird automatisch aufgerufen, sobald dein EA startet (wie der Name sagt "initialisieren").

Was deine Lots angeht, so können bei verschiedenen Symbolen(Währungspaare, Indices, ect.) unterschiedliche, minimale Lots sein(z.b beim einen 0.01, beim anderen 0.10).
Da solltest du deine Lot-Variable vielleicht besser mit
Zitat:
double lot = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
initialisieren. So hast du bei jedem Chart entsprechend die kleinst mögliche Lot-Größe.