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: 43260
Benutzer: 7.223
Aktive Benutzer: 75
Links: 84
Wir begrüßen unseren neuesten Benutzer: Mane
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 19 Stunden
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak
vor 2 Wochen
- Amateur
vor 2 Wochen
- infos1982

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 19.07.17
Neues Mitglied
 
Registriert seit: Jul 2017
Beiträge: 20
icepick1661 befindet sich auf einem aufstrebenden Ast
Standard Max-/Min-Werte im dynamischen Array

Hallo,

ich erweitere momentan meine Erfahrungen in der MQL4-Programmierung.

Mit nachfolgendem Code will ich den Max-Preis (OderOpenPrice() aller offenen Long-Positionen (und später auch den Min-Wert aller Short-Positionen...) ermitteln und später weiterverwenden.

Das Array soll dynamisch sein, weil Orders dazukommen oder geschlossen werden.

Gleichwohl: es funktioniert einfach nicht. Die Sortierfunktionen gelten alle nur für statische Arrays, im Web gefundene Vergleiche der einzelnen Elemente bringen auch nichts.

Hier der Code (ich krieg ihn nicht anders rein...):

double ArrayName[];
int iPos = OrdersTotal();

ArrayResize(ArrayName,iPos+1);

ArrayInitialize(ArrayName,0);
for(iPos=0; iPos<=OrdersTotal(); iPos++)
{
if (OrderSelect(iPos, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == MagicNumber)
{
if (OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY)

{
ArrayName [iPos]=OrderOpenPrice();
}

Danke für eure Hilfe!!
  #2 (permalink)  
Alt 19.07.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Über den Button # bekommst Du diesen Code (nach Korrekturen! und Bereinigung):

Code:
double ArrayName[];
int iPos = OrdersTotal();

ArrayResize(ArrayName, iPos);
ArrayInitialize(ArrayName, 0);

for (iPos = 0; iPos < OrdersTotal(); iPos++) {
   if (OrderSelect(iPos, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUY) {
            ArrayName[iPos] = OrderOpenPrice();
         }
      }
   }
}
Aufgrund der Tatsache, dass das Array über alle möglichen offenen MarketOrders und evtl. gesetzten PendingOrders deklariert wird, aber auf der anderen Seite nach der Selektion mittels der MagicNumber nachselektiert wird, würde ich auch das Array dynamisch nur so groß deklarieren wie nötig. Beim Ermitteln des minimalen Preises der Sellorders würde, falls ein Feld den Wert 0 hat, weil das Array unnötig zu groß ist, dann als kleinsten Wert auch 0 ausgeben und nicht den minimalsten OpenPrice:

Code:
double ArrayName_Buy[];
double ArrayName_Sell[];
int cnt_buy = 0, cnt_sell = 0;
double max_price = 0, min_price = 0;

for (int iPos = 0; iPos < OrdersTotal(); iPos++) {
   if (OrderSelect(iPos, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUY) {
            ArrayResize(ArrayName_Buy, cnt_buy+1);
            ArrayName_Buy[cnt_buy] = OrderOpenPrice();
            cnt_buy++;
         }
         if (OrderType() == OP_SELL) {
            ArrayResize(ArrayName_Sell, cnt_sell+1);
            ArrayName_Sell[cnt_sell] = OrderOpenPrice();
            cnt_sell++;
         }
      }
   }
}

if (cnt_buy > 0) {
   int max_value_idx = ArrayMaximum(ArrayName_Buy, WHOLE_ARRAY, 0);
   max_price = ArrayName_Buy[max_value_idx];
}
if (cnt_sell > 0) {
   int min_value_idx = ArrayMinimum(ArrayName_Sell, WHOLE_ARRAY, 0);
   min_price = ArrayName_Sell[min_value_idx];
}
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 26.07.17
Neues Mitglied
 
Registriert seit: Jul 2017
Beiträge: 20
icepick1661 befindet sich auf einem aufstrebenden Ast
Standard

Danke Traderdoc, die Lösung funktioniert bestens. Leider stehe ich schon vorm nächsten Problem, ich öffne dazu ein neues Thema.
Thema geschlossen

Lesezeichen

Stichworte
dynamische arrays, höchster preis, kerze, max preis, maximalwert, mql4, oderopenprice, preis, 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 04:38 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.
-----------------------------------------------------------------------------------------------------------------------------