Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools  
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4008
Beiträge: 38194
Benutzer: 6.319
Aktive Benutzer: 323
Links: 80
Wir begrüßen unseren neuesten Benutzer: Abdelaliii
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor einer Stunde
- Abdelaliii
vor 2 Tagen
- Cavalino
vor 4 Tagen
- Minz90
vor 5 Tagen
- Arudo
vor 5 Tagen
- Laotsele

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 75
Gesamt: 75
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 22.04.18
Neues Mitglied
 
Registriert seit: Mar 2018
Beiträge: 12
T.P. befindet sich auf einem aufstrebenden Ast
Standard Rechtecke Zeichnen bei einer Bedingung

Hallo Leute..

Der Indikator soll eigentlich bei jeder zutreffenden Bedingung nicht nur einen Pfeil zeichnen sondern auch ein farbiges Rechteck um die beiden Kerzen.

Das High und Low der Signalkerze gibt die Höhe des Rechteckes an.
Start und Endpunkt des Rechtecks sind jeweils 2 Kerzen.


Warum macht der Indikator jetzt nur einmalig ein rechteck und nicht wie die Pfeile überall eins?
Könnte mir jemand bitte den Code richtig umstellen und es erklären?

Code:
#property copyright "Tommy"
#property link      "https://www.mql5.com"
#property version   "1.00"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Blue

double Buytrigger[];
double Selltrigger[];
double Signal[];

extern int  Feldfarbe = PaleGreen;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{

//---- indicators

   SetIndexStyle(0, DRAW_ARROW, EMPTY);
   SetIndexArrow(0, 234);
   SetIndexBuffer(0, Signal);
   SetIndexBuffer(1, Buytrigger);
   SetIndexBuffer(2, Selltrigger); 
   
//----
   SetIndexLabel(0,"Signal");
   SetIndexLabel(1,"Buytrigger");
   SetIndexLabel(2,"Selltrigger");
   
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int limit;
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   limit=Bars-counted_bars;


//---
   for(int i=1; i<limit; i++)
     {        
         
      double EH = iHigh(NULL,0,i+1);  
      double EL = iLow(NULL,0,i+1);  
      double ZH = iHigh(NULL,0,i);  
      double ZL = iLow(NULL,0,i);
      double atr = iATR(_Symbol, 0, 100, i)*0.5; 
      
           
      if ((ZH > EH || ZH == EH) && (ZL < EL || ZL == EL))  
      
      {  
      Buytrigger[i]  = High[i];
      Selltrigger[i] = Low[i];
      Signal[i] = High[i] + atr;   
      ObjectCreate("Rechteck", OBJ_RECTANGLE, 0, Time[i], High[i], Time[i+1], Low[i]); 
      ObjectSetInteger(0,"Rechteck",OBJPROP_COLOR,Feldfarbe);
      }    

} 
   
   return(0);
}
Angehängte Dateien
Dateityp: mq4 Rechtecke.mq4 (4,9 KB, 0x aufgerufen)
Mit Zitat antworten
  #2 (permalink)  
Alt 22.04.18
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 58
AVT befindet sich auf einem aufstrebenden Ast
Standard

Du hast eine Schleife, in der Du ObjectCreate() benutzt. Jedes neu geschaffene Objekt braucht aber einen einzigartigen Namen. Das mit ObjectCreate("Rechteck",...) funktioniert also nur einmal, weil der Name eben "Rechteck" ist und nicht - wenn es mehrere sind - "Rechteck-1", "Rechteck-2", "Rechteck-3" ...

Ich hoffe, das hilft schon. AVT
__________________
heute schon gelacht?
Mit Zitat antworten
  #3 (permalink)  
Alt 23.04.18
Neues Mitglied
 
Registriert seit: Mar 2018
Beiträge: 12
T.P. befindet sich auf einem aufstrebenden Ast
Standard

DANKE AVT!!!!!!

Man den ganzen Sonntag verzweifelt!!!

Habe es jetzt so gelöst das ich statt dem Namen den Wert des Triggers angebe. Der ist nämlich immer anders. Danke nochmal vielmals.

Code:
#property copyright "Tommy"
#property link      "https://www.mql5.com"
#property version   "1.00"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Blue

double Buytrigger[];
double Selltrigger[];
double Signal[];

extern int  Feldfarbe = PaleGreen;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{

//---- indicators

   SetIndexStyle(0, DRAW_ARROW, EMPTY);
   SetIndexArrow(0, 234);
   SetIndexBuffer(0, Signal);
   SetIndexBuffer(1, Buytrigger);
   SetIndexBuffer(2, Selltrigger); 
   
//----
   SetIndexLabel(0,"Signal");
   SetIndexLabel(1,"Buytrigger");
   SetIndexLabel(2,"Selltrigger");
   
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int limit;
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   limit=Bars-counted_bars;


//---
   for(int i=1; i<limit; i++)
     {        
         
      double EH = iHigh(NULL,0,i+1);  
      double EL = iLow(NULL,0,i+1);  
      double ZH = iHigh(NULL,0,i);  
      double ZL = iLow(NULL,0,i);
      double atr = iATR(_Symbol, 0, 100, i)*0.5; 
      
           
      if ((ZH > EH || ZH == EH) && (ZL < EL || ZL == EL))  
      
      {  
      Buytrigger[i]  = High[i];
      Selltrigger[i] = Low[i];
      Signal[i] = High[i] + atr;   
      ObjectCreate(" Buy Trigger " +Buytrigger[i]+"", OBJ_RECTANGLE, 0, Time[i], High[i], Time[i+1], Low[i]); 
      ObjectSetInteger(0," Buy Trigger " +Buytrigger[i]+"",OBJPROP_COLOR,Feldfarbe);
      }    

} 
   
   return(0);
}
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
chart zeichnen, mql4, programmierung, programmierung metatrader, programmierung mql4, rechtecke chart, rechtecke zeichen


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 12:15 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2018 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------