Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 11.05.20
Aleksi Aleksi ist offline
Neues Mitglied
 
Registriert seit: May 2020
Ort: Duisburg
Beiträge: 28
Aleksi befindet sich auf einem aufstrebenden Ast
Standard Trigger im Chart

Hallo ich bin dabei mir ein kleinen Teil für mein neues Projekt zu schreiben.
Es handelt sich um ein ExpertAdvisor mit einer "Triggerlinie" im Chart was abhängig von gesetzten StopLoss einer Order ist. den Teil was nach erreichen der Linie passiert werde ich dann später fertig schreiben.

Nun sehe ich den Wald vor lauter Bäumen nicht, der Fehler den ich nicht finde
drückt sich im Tester mit absolut keiner Regung aus, was das anlegen der von den einzeichnen der Linie angeht . Da brauche ich eure Hilfe

Code:
// Codeschnipsel Trigger

#include <Trade\Trade.mqh>
CTrade trade;
double TriggerLine1=0;
input int SL=200;
input int TP=400;
input int Trigger=100;


//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//Ask&Bid-Preis ermitteln
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID), _Digits);
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK), _Digits);

//Werte für TP&SL BuyOrder

   if(PositionsTotal()==0)
     {
      //Kaufen-Order oeffnen
      trade.Buy(0.01,NULL,Ask,Ask-SL* _Point,Ask+TP* _Point);
     }

//Daten Ermitteln für Order
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      //Ermitteln von Ticketnummer
      ulong PositionTicket= PositionGetInteger(POSITION_TICKET);

      //Ermitteln von Kaufpreis
      double PositionBuyPrice= PositionGetDouble(POSITION_PRICE_OPEN);

      //Ermitteln von StopLoss
      double PositionStopLoss= PositionGetDouble(POSITION_SL);

      //Ermitteln von TakeProfit
      double PositionTakeProfit= PositionGetDouble(POSITION_TP);

      //Ermitteln vo Typ der Position
      double PositionTyp= PositionGetInteger(POSITION_TYPE);

      //Ermitteln von Symbol
      string symbol=PositionGetSymbol(i);

      //Wenn Symbol passt
      if(_Symbol==symbol)

         //Wenn Kaufen ist
         if(PositionTyp==POSITION_TYPE)

            //Wenn StopLoss unter Kaufpreis liegt
            if(PositionStopLoss<PositionBuyPrice)

               //Wenn der Askpreisueber xPunkte ueber Kaufpreis liegt
               if(Ask > (PositionBuyPrice+Trigger*_Point))
                 {
                  //Setze Trigger
                   TriggerLine1=PositionBuyPrice+Trigger*_Point;                

                  //Untere Linie:
                  //Objekeigenschaften für Linie einstellen
                  ObjectCreate(_Symbol,"Line2",OBJ_HLINE,0,0,TriggerLine1);

                  //Linienfarbe einstellen
                  ObjectSetInteger(0,"Line2",OBJPROP_COLOR,clrViolet);

                  //Linienbreite
                  ObjectSetInteger(0,"Line2",OBJPROP_WIDTH,1);

                  //Linie bewegen
                  ObjectMove(_Symbol,"Line2",0,0,TriggerLine1);

                 }
     }
  }
//+------------------------------------------------------------------+

Geändert von Aleksi (11.05.20 um 17:52 Uhr)