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.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3653
Beiträge: 36083
Benutzer: 5.791
Aktive Benutzer: 598
Links: 80
Wir begrüßen unseren neuesten Benutzer: DayTrader2000
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 2 Tagen
- DayTrader2...
vor 2 Tagen
- erfolgreic...
vor 3 Tagen
- ehonk
vor 3 Tagen
- nagateru
vor 5 Tagen
- elray17

Onlineuser
'Wer ist online' anzeigen Benutzer: 4
Gäste: 56
Gesamt: 60
Team: 0
Team:  
Benutzer:  Domke01, ForexMax, Nefastus, traderdoc
Freunde anzeigen

Empfehlungen

Werbung

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 2 Wochen
Neues Mitglied
 
Registriert seit: Sep 2014
Beiträge: 18
Traderole befindet sich auf einem aufstrebenden Ast
Standard mehrere Horizontale Linien

Hallo,

weiss jemand, wie man mehrere Linien, für z.B. Suppe/Res, erzeugen kann? Man kann ja nur einmal einen Namen verwenden bei ObjectCreate() und ich weiss nicht so recht wie ich das umgehen kann bzw. ich bekomme das nicht programmiert. Ich habe Ansätze gefunden, die den Objektnamen zweiteilen und dann per StringConcetenate wieder zusammen setzen. Der erste teil bleibt praktisch immer unverändert und der zweite teil wird ständig geändert durch z.B. inkrementieren von Zahlen...
Mit Zitat antworten
  #2 (permalink)  
Alt vor 2 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.758
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
string Name = "Irgendwas";
for (int i = 0; i <= 10; i++) {
   ObjectCreate(Name + (string)i, ...);
}
Somit werden 11 Objecte gebildet, mit den Namen Irgendwas0 bis Irgendwas10.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #3 (permalink)  
Alt vor 2 Wochen
Neues Mitglied
 
Registriert seit: Sep 2014
Beiträge: 18
Traderole befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Hilfe.

Ich habe das so eingebunden in meinen Code. Nun ist aber das Problem, das mir direkt beim ersten Tick 10 Linien anstatt 1 eingezeichnet zur gleichen Zeit und Preis werden und dann ist Schluss..

Wie kann ich das verhindern?
Mit Zitat antworten
  #4 (permalink)  
Alt vor 2 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.758
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
//beide Variablen global deklarieren
string Name = "Irgendwas";
int ObjectCounter = 0;

if (falls_eine_linie_gesetzt_werden_soll == true) {
   ObjectCounter++;
   ObjectCreate(Name + (string)ObjectCounter, ...);
   falls_eine_linie_gesetzt_werden_soll = false;
}
Nun fangen die Linien zwar mit dem Index 1 an. Wenn der Indesx mit 0 beginnen sollen, dann muß ObjectCounter++; unter ObjectCreate geschrieben werden.
falls_eine_linie_gesetzt_werden_soll muss nun an der entsprechenden Stelle auf true gesetzt werden, wenn eben eine neue Linie gezeichnet werden soll.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #5 (permalink)  
Alt vor einer Woche
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 369
Raul0 befindet sich auf einem aufstrebenden Ast
Standard

Das einfachste Du postest den Teil Deines Code mit der Objekterstellung, evt. kann Dir per kleiner Eingriff der gesuchte Lichtblick gegeben werden.
__________________

Tradertool
Mit Zitat antworten
  #6 (permalink)  
Alt vor einer Woche
Neues Mitglied
 
Registriert seit: Sep 2014
Beiträge: 18
Traderole befindet sich auf einem aufstrebenden Ast
Standard

Vielen Danke erstmal für die Idee mit dem object counter. das hat funktioniert. Nun bin ich auf ein anderes Problem gestossen. Und zwar rechnet der Indikator alle im Chart vorhandenen Bars. D.h. man bekommt hunderte linen. Wie könnte man das abändern, das er vielleicht nur die letzen 500 bars einbezieht um Highs and Lows zu bestimmen?

PHP-Code:
#property version   "1.00"
#property strict
#property indicator_chart_window

extern int periode_to_next_extremum 20;
int bars_to_check 40;
double ResLevel[], SupLevel[];
datetime ResTime[],SupTime[];
int objectcounter 1;
string NameRES "line";
string TextRES "RES";

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   
ArrayResize(ResLevel,1);
   
ArrayResize(ResTime,2);
//--- indicator buffers mapping

//---
   
return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const 
int prev_calculated,
                const 
datetime &time[],
                const 
double &open[],
                const 
double &high[],
                const 
double &low[],
                const 
double &close[],
                const 
long &tick_volume[],
                const 
long &volume[],
                const 
int &spread[])
  {
//---
   
int limit;
   
int counted_bars IndicatorCounted();
//---- check for possible errors 
   
if(counted_bars<0) return(-1);
   
limit=Bars counted_bars;

   
//---- main loop 
   
for(int i 1limiti++)
      {
      
//Resistance

      
if(iHighest(NULL,0,MODE_HIGH,bars_to_check,i) == +  periode_to_next_extremum)
         {
         
ResLevel[0] = High[periode_to_next_extremum];
         
ResTime[0] = Time[periode_to_next_extremum];
         
ResTime[1] = Time[periode_to_next_extremum] + 9999999;
         
objectcounter++;
         if(!
ObjectCreate(NameRES + (string)objectcounter,OBJ_TREND,0,ResTime[0],ResLevel[0],ResTime[1],ResLevel[0]))
            {
            Print(
"There must be sth wrong Trend: "GetLastError());      
            }
            else Print(
"Trend has been drawn: ",NameRES + (string)objectcounter);
         if(!
ObjectCreate(TextRES + (string)objectcounter,OBJ_TEXT,0,ResTime[0],ResLevel[0]))
            {
            Print(
"There must be sth wrong Text: "GetLastError());
            }
         if(!
ObjectSetText(TextRES + (string)objectcounter,TextRES + (string)objectcounter,10,"Times New Roman"Red))
            {
            Print(
"There must be sth wrong Change Text: "GetLastError());
            }            
         }
      
//Support

      
}
      
//--- return value of prev_calculated for next call
   
return(rates_total);
  }
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
   {
   
int number_of_objects_deleted ObjectsDeleteAll(0,"",0,-1);
   Print(
"number_of_objects-deleted = "number_of_objects_deleted);
   } 
Mit Zitat antworten
  #7 (permalink)  
Alt vor einer Woche
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 369
Raul0 befindet sich auf einem aufstrebenden Ast
Standard

Über den Main Loop, oder?


PHP-Code:
//500 Bars

if( limit 500 limit 500


//---- main loop 
   
for(int i 1limiti++) 
__________________

Tradertool
Mit Zitat antworten
  #8 (permalink)  
Alt vor einer Woche
Neues Mitglied
 
Registriert seit: Sep 2014
Beiträge: 18
Traderole befindet sich auf einem aufstrebenden Ast
Standard

ok das funktioniert super. danke
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
horizontale linien, indikator linien, linien, mehrere linien, mql4, programmierung, programmierung metatrader, programmierung mql4


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 17:39 Uhr.



-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 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.
-----------------------------------------------------------------------------------------------------------------------------