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: 4978
Beiträge: 43264
Benutzer: 7.222
Aktive Benutzer: 75
Links: 84
Wir begrüßen unseren neuesten Benutzer: AlbertZiz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Woche
- AlbertZiz
vor einer Woche
- michak
vor einer Woche
- Amateur
vor 2 Wochen
- infos1982
vor 2 Wochen
- Thomas75

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 09.06.17
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...
  #2 (permalink)  
Alt 09.06.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
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.
  #3 (permalink)  
Alt 11.06.17
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?
  #4 (permalink)  
Alt 11.06.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
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.
  #5 (permalink)  
Alt 12.06.17
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 422
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.
__________________

Easy Trading Assistant
  #6 (permalink)  
Alt 12.06.17
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);
   } 
  #7 (permalink)  
Alt 13.06.17
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 422
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++) 
__________________

Easy Trading Assistant
  #8 (permalink)  
Alt 13.06.17
Neues Mitglied
 
Registriert seit: Sep 2014
Beiträge: 18
Traderole befindet sich auf einem aufstrebenden Ast
Standard

ok das funktioniert super. danke
Thema geschlossen

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 12:30 Uhr.





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