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: 3824
Beiträge: 36910
Benutzer: 6.081
Aktive Benutzer: 495
Links: 80
Wir begrüßen unseren neuesten Benutzer: DarthTrader
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 14 Stunden
- DarthTrade...
vor 16 Stunden
- Eren
vor 23 Stunden
- Rene1504
vor einem Tag
- ibdafx
vor einem Tag
- Batangenyo

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

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 19.07.17
Neues Mitglied
 
Registriert seit: Jul 2017
Beiträge: 17
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: 1.875
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: 17
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 +1. Es ist jetzt 15:02 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
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.
-----------------------------------------------------------------------------------------------------------------------------