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: 4973
Beiträge: 43248
Benutzer: 7.220
Aktive Benutzer: 82
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 832
Gesamt: 833
Team: 0
Team:  
Benutzer:  JosephTK
Freunde anzeigen

Empfehlungen

Like Tree3Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 20.08.13
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Question Flexible Summe aus Variablenreihe berechnen?

Guten Tag,

ich habe eine größere Anzahl an Variablen in der Werte abgelegt werden. Ist es möglich die Summe einer flexiblen Anzahl dieser Variablen auszulesen?
Also zB.: es gibt eine Reihe von 50 Variablen und dazu eine externe Variable die die Anzahl der zu addierenden Variablen (der 50) auswählt. Also Steht in der externen Variable 30 dann soll die Summe der ersten 30 der 50 Variablen berechnet werden, steht dort 5 dann nur die ersten 5 der 50 Variablen...

Wie ist das Programmiertechnisch möglich?

Grüße C$D
  #2 (permalink)  
Alt 20.08.13
Mitglied
 
Registriert seit: Aug 2013
Beiträge: 61
dave_hofmann befindet sich auf einem aufstrebenden Ast
Standard

Hallo Ca$hDigger,

habe mir dein Problem mal angeschaut und muss überlegen wie du das genau meinst. Liegen die Werte als Array vor oder sind es tatsächlich verschiedene Variablen? Im zweiten Fall ist es schon schwieriger, habe trotzdem eine Lösung.

Schau mal hier meine Lösung, vielleicht kannst du damit was anfangen.
Die erste Summenberechnung ist für die Arraylösung, die zweite für verschiedene Variablen. Hier ist der Trick, dass die Cases umgedreht angeordnet sind und per Fall Through verbunden sind.

Code:
#define MAX_NUMBER_OF_ELEMENTS 100

//Für den Fall das tatsächlich verschiedene Variablen gemeint sind
int var1;
int var2;
int var3;
int var4;
int var5;


int start()
{
   int summe;
   int aiInputArray[MAX_NUMBER_OF_ELEMENTS];//Es kann hier auch ein double verwendet werden, dann nur überall anpassen
   
   Comment("Summe:"+getSumOfArray(aiInputArray,5));
   if(getSumOfDifferentVars(summe,5) == TRUE)
   {
      Comment("Summe:"+summe);
   }
}

int getSumOfArray(int &aiInputArray[], int iNumberOfSumElements)//hier return Typ wahlweise auch double angeben, je nach Typ des Input-Array
{
   int iSumme = 0;//hier wahlweise auch double angeben, je nach Typ des Input-Array
   int i;
   
   for(i=0; ((i < iNumberOfSumElements) && (i < MAX_NUMBER_OF_ELEMENTS));i++)
   {
      iSumme += aiInputArray[i];
   } 
   return (iSumme);
}

int getSumOfDifferentVars(int &summe, int iNumberOfSumElements)
{
   bool retValue;
   
   retValue = TRUE;
   summe = 0;
   
   switch(iNumberOfSumElements)
   {
      case 5:
         summe += var5;
      case 4:
         summe += var4;     
      case 3:
         summe += var3;
      case 2:
         summe += var2;      
      case 1:
         summe += var1;
         break;
      default:
       retValue = FALSE;
       break;
   }
   return(retValue);
}
Viel Erfolg,

Dave
Ca$hDigger likes this.
  #3 (permalink)  
Alt 20.08.13
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Genau es sind verschiedene Variablen (also kein Array). Ist für diese Variante dann nur der letzte Teil also ab "int getSumOfDifferentVars(int &summe, int iNumberOfSumElements)" relevant? Hab als Newcomer noch nicht ganz verstanden wie die Summe der verschiedenen Variablen dort zustande kommt
  #4 (permalink)  
Alt 20.08.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Wo kommen denn die Variablen her bzw. wo stehen sie?
Wenn sie im Programm selbst anfallen, dann können sie auch einfach einem Array zugeordnet werden, welches über den Wert der separaten Variable ausgelesen und gleichzeitig addiert wird. Fertig!

traderdoc
  #5 (permalink)  
Alt 20.08.13
Mitglied
 
Registriert seit: Aug 2013
Beiträge: 61
dave_hofmann befindet sich auf einem aufstrebenden Ast
Standard

Hallo Ca$hDigger,

die zu summierenden Werte stehen in den Variablen:
Code:
int var1;
int var2;
int var3;
int var4;
int var5;
Der Funktionskopf "int getSumOfDifferentVars(int &summe, int iNumberOfSumElements)"
ist folgendermaßen zu sehen.
Das erste int ist der Rückgabe Status, er kann entweder True sein, dann hat die Funktion geklappt oder False dann gab es einen Fehler.
Fehler ist es dann, wenn die Anzahl an Elementen nicht korrekt ist.
das & vor summe gibt an, dass es ein Aufruf per Referenz ist, also ebenso ein Rückgabewert. Also in die Funktion wird nur die Adresse übergeben, so dass die Summe in diese Variable geschrieben wird und dann an die Aufrufen Funktion übergeben wird.
Das zweite Argument iNumberOfSumElements gibt die Anzahl der zu summierenden Elemente an.

Achtung! Es muss natürlich so sein, dass wenn du zwei Elemente addieren möchtest immer var1 und var2 addiert werden und wenn du drei Elemente addieren möchtest
var1, var2 und var3 addiert werden.
Wenn du nun als Beispiel drei Elemente macht der Code folgendes.
Da das Switch Argument drei ist, gehst du in den Case 3 und addierst
auf die leere Summe den Wert aus Var3, also ist die Summe Var3.
Danach fällst du durch und addierst auf die Summe Var2 (die Summe ist jetzt Var2+Var3). Du fällst wieder durch und addiert dann Var1 hinzu.
Die Summe ist nun Var1+Var2+Var3,aufgrund des Break springst du raus.
Fertig

Schönen Gruß

Dave
Ca$hDigger likes this.
  #6 (permalink)  
Alt 20.08.13
Mitglied
 
Registriert seit: Aug 2013
Beiträge: 61
dave_hofmann befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Wo kommen denn die Variablen her bzw. wo stehen sie?
Wenn sie im Programm selbst anfallen, dann können sie auch einfach einem Array zugeordnet werden, welches über den Wert der separaten Variable ausgelesen und gleichzeitig addiert wird. Fertig!

traderdoc
Könnte funtionieren.

@Ca$hDigger: Am besten können wir helfen, wenn wir deinen Code sehen.

Schönen Abend

Dave
  #7 (permalink)  
Alt 20.08.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Das funktioniert auf jeden Fall!
  #8 (permalink)  
Alt 20.08.13
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Hi also nochmal um das mit den Variablen zu klären: Die Variablen sind global definiert und vom Typ int.
Ich schau mir das Bisherige gleich nochmal genau an muss das erstmal verstehen, sind neue Programmieraspekte für mich drin. Die möglichst einfachste Lösung wäre natürlich perfekt, ich schau jetzt mal wie weit ich durchsteige
  #9 (permalink)  
Alt 20.08.13
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

um es nochmal ganz genau zu sagen es sind die Globalvariable innerhalb des EAs also nicht die Taste F3 Globalvariablen die auf dem Metatrader sitzen
  #10 (permalink)  
Alt 27.08.13
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Hallo und nochmal danke für den bisherigen Code. Ich muss leider nochmal nachfragen denn mit dem Code komme ich nicht zurecht. Also die Variante mit den globalen Variablen ist mir ehrlich gesagt zu hoch da musste ich jetzt passen. Es kam so rüber als wäre eine Arraylösung effektiver und ich habe mich, da unwissend, dazu ein bisschen eingelesen. Würde ich jetzt die Variablenwerte als Array speichern dann hätte ich eine Variable die etliche verschiedenen Werte aufnehmen kann (was ich sowieso bevorzugen würde um im Code jede Menge Platz zu sparen)

Code:
double variable[51]
// die Indizes dieser Variablen laufen dann von 0-50
Nochmal zur Ausgangsfrage wie kann ich jetzt aus einer variablen Anzahl dieser Arraywerte dessen Summe berechnen?

LG C$D
Thema geschlossen

Lesezeichen

Stichworte
berechnung, flexible summe, mql4, programmierung, programmierung metatrader, summe, summe variablen, variablen, variablenreihe

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 23:42 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.
-----------------------------------------------------------------------------------------------------------------------------