Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL5 (http://www.expert-advisor.com/forum/forumdisplay.php?f=221)
-   -   Trigger im Chart (http://www.expert-advisor.com/forum/showthread.php?t=6657)

Aleksi 11.05.20 17:27

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);

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


Aleksi 11.05.20 18:15

Der Code wurde Geändert in
Code:

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

//Objekeigenschaften für Linie einstellen
//Objekeigenschaften für Linie einstellen
bool ObjectCreate(
  const long chart_ID=0,        // ID des Charts
  const string          name="Line2",      // Linienname
  const int            sub_window=0,      // Nummer des Unterfensters
  double                price=0,          // Linienpreis
  const color          clr=clrBlue,        // Linienfarbe
  const ENUM_LINE_STYLE style=STYLE_SOLID, // Linienstil
  const int            width=1,          // Linienbreite
  const bool            back=false,        // Im Hintergrund
);
//Linie bewegen
bool ObjectMove(
  const long chart_ID=0,        // ID des Charts
  const string          name="Line2",      // Linienname
  const int            sub_window=0,      // Nummer des Unterfensters
  double                price=0,          // Linienpreis
  const color          clr=clrBlue,        // Linienfarbe
  const ENUM_LINE_STYLE style=STYLE_SOLID, // Linienstil
  const int            width=1,          // Linienbreite
  const bool            back=false,        // Im Hintergrund
);
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| 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
                  double TriggerLine=PositionBuyPrice+Trigger*_Point;
                  //long TriggerLine1=DoubleToString
                  //Linienfarbe einstellen
                  ObjectSetInteger(0,"Line2",OBJPROP_COLOR,clrViolet);

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

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

Fehler:
syntax error: type expected SnippetJumper.mq5 26 1


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:34 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum