Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Mathe Nachhillfe gesucht (http://www.expert-advisor.com/forum/showthread.php?t=6742)

AVT 08.08.20 14:16

Mathe Nachhillfe gesucht
 
Eigentlich suchte ich nach der Erklärung, was
_Digits%2 "in Normalsprache bedeutet/ausrechnet".
Soweit ich gekommen bin, ist das wohl "Rest von _Digits geteilt durch 2".
Also habe ich mir ein Print gemacht - das aber ergibt völlig widersprüchliche Angaben:
Code:

Print(" Digits=",DoubleToStr(_Digits,0),
      " Digits/2=",DoubleToStr((_Digits/2),_Digits),
      " Digits%2=",DoubleToStr(Digits%2,_Digits) );
// ==> Result EURUSD (Digits=5)
// Digits=5
// Digits/2=2.00000
// Digits%2=1.00000
// ==> Result AUDJPY (Digits=3)
// Digits=3
// Digits/2=1.000
// Digits%2=1.000

Wieso ist 5/2=2 und nicht 2.5, wieso ist 3/2=1 und nicht 1.5
und wieso ist der Rest nicht 5.
Kann mir das bitte jemand erklären? Danke. AVT

Indikator-Trading 08.08.20 15:47

Der % Operator ist ja der Modulo Operator. Also 5%2 ergibt 1 da die zwei zweimal gerade in die 5 passt und der Rest der übrig bleibt 1 ist (5-4 =1)

10%7 würde somit 3 liefern, da dass der Rest der Division ist.

Digits wird vom Typ integer sein. Daher kommt nur das ganzzahlige Ergebnis zurück und der Rest wird "verschluckt"

AVT 08.08.20 16:21

Zitat:

Zitat von Indikator-Trading (Beitrag 44193)
Der % Operator ist ja der Modulo Operator.
Digits wird vom Typ integer sein. Daher kommt nur das ganzzahlige Ergebnis zurück und der Rest wird "verschluckt"

Danke Indikator-Trading, das Wort Modulo hat geholfen :)

Daß aber bei ner Division von Integer zwingend ein Integer-Ergebnis rauskommt, finde ich ziemlich merkwürdig - heißt ja, wenn ich eine Periode von 25 Tagen um die Hälfte kürze (also /2) kommt (rein rechnerisch 12,5 raus, was dann gerundet (,5 nach oben) wird und dann in 13 Tagen endet - ohne daß ich mich dagegen wehren kann.
Bedeutet wohl dann gleichzeitig, daß ich die Periode dann als double setzen muß, um wenigstens selber zu bestimmen, ob auf- oder abgerundet wird.
AVT

MA-EA 08.08.20 21:39

Hallo.

Hab über nen Weg nach gedacht, wie man von beliebigen double Werten rausfinden kann, ob sie gerade oder ungerade sind. Das einfachste wär wohl, sie so oft mit 2 zu dividieren oder zu multiplizieren, bis die letzte Stelle 0 oder 5 ist. :confused: Keine Ahnung, brauch auch Mathe-Nachhilfe. :rolleyes:

Indikator-Trading 08.08.20 21:55

Zitat:

Zitat von MA-EA (Beitrag 44196)
Hallo.

Hab über nen Weg nach gedacht, wie man von beliebigen double Werten rausfinden kann, ob sie gerade oder ungerade sind. Das einfachste wär wohl, sie so oft mit 2 zu dividieren oder zu multiplizieren, bis die letzte Stelle 0 oder 5 ist. :confused: Keine Ahnung, brauch auch Mathe-Nachhilfe. :rolleyes:

Ich würde dir eher empfehlen die beiden ersten Posts in diesem Thema durchzulesen, dann hättest du deine Lösung. Dann das mit einer kleinen If-Abfrage kombinieren und fertig. Da Du ja schon Jahre dabei bist, schaffst du den Rest schon selbst oder?

traderdoc 08.08.20 21:59

Zitat:

Zitat von MA-EA (Beitrag 44196)
Hallo.
Keine Ahnung, brauch auch Mathe-Nachhilfe. :rolleyes:

Stimmt!

Nun, bei der Division einer Integerzahl stolpern tatsächlich viele und ja, die Integerzahl müsste dann vorher in eine double gewandelt werden.

Dann klappts auch mit der Kommastelle.

traderdoc

Indikator-Trading 08.08.20 22:09

Zitat:

Zitat von MA-EA (Beitrag 44196)
Das einfachste wär wohl, sie so oft mit 2 zu dividieren oder zu multiplizieren, bis die letzte Stelle 0 oder 5 ist

Hm, rechnen wirs mal durch.
Ist 6 grade?
MA-EA Lösungsweg:
6*2=12
12*2=24
24*2=48
Weitere Ergebnisse:
96,192,364,768,.....,422212465065984,...,usw
Endet davon was mit 5 oder 0 -> Nein
6 ist somit ungerade!
Mathematik ist schon was tolles oder?

traderdoc 08.08.20 22:41

Zitat:

Zitat von MA-EA (Beitrag 44196)
Hallo.
Hab über nen Weg nach gedacht, wie man von beliebigen double Werten rausfinden kann, ob sie gerade oder ungerade sind. Das einfachste wär wohl, sie so oft mit 2 zu dividieren oder zu multiplizieren, bis die letzte Stelle 0 oder 5 ist. :confused: Keine Ahnung, brauch auch Mathe-Nachhilfe. :rolleyes:

Ok, ich nehme jetzt mal das Zitat ganz ernst und beachte im Satzbau die wiederholten "oder" und schlussfolgere, dass der Nachhilfling in der Oder-Verknüpfung der fettmarkierten Stellen ein Logik sieht.

Nehmen wir wieder die 6:
6/2=3
3/2 = 1,5
1,5/2=0,75
0,75/2=0,375
0,375/2=0,1875

Ich glaube fest daran, dass die letzte Stelle keine 0 ergeben wird.
Nein halt doch! Man könnte ja auch
6/2=3.0 schreiben -> also dann doch eine gerade Zahl!

Nehmen wir nun die 16:
16/2=8,0

Also auch eine gerade Zahl!

Nun nehmen wir mal 17:
17/2 = 8,50

Endet auf 0 -> also auch eine gerade Zahl!

@Indicator-Trading hatte gerade herausgefunden, dass die 6 ungerade sein muss. Hm, ich komme zu dem Ergebnis, es existieren nur gerade Zahlen, weil alle Divisionen auf eine 0 enden.

Was nun Herr Gauß?

traderdoc

AVT 09.08.20 12:44

Zitat:

Zitat von traderdoc (Beitrag 44198)
Nun, bei der Division einer Integerzahl stolpern tatsächlich viele und ja, die Integerzahl müsste dann vorher in eine double gewandelt werden.

Eine Zusatzfrage bitte: Ist das allgemeine Programmiersprachen Praxis, daß Integerdivisionen immer Integerergebnisse liefern, oder ist das von Sprache zu Sprache verschieden?
Danke. AVT

Indikator-Trading 09.08.20 14:07

Ich würde sagen dass das interne Abhandeln der Division abhängig vom Compiler ist. Manche erkennen das automatisch. Hier ist es halt leider nicht so intelligent das der Compiler erkennt, dass du eine Division durchführst und das direkte Ergebnis ausgeben möchtest.

MA-EA 11.08.20 14:28

Also ganz streng genommen, sind ja im Grunde alle double-Werte gerade, weil man sie theoretisch alle bis in die Unendlichkeit durch 2 teilen könnte... :confused: Ok, irgendwann gehts nicht mehr, oder die Menschheit interessiert es nicht ob gerade oder ungerade, aus welchen Gründen auch immer...


Dann müsste man vielleicht den double-Wert ohne irgendwelche Rechnerei prüfen. Das Einfachste wär natürlich, einfach die letzte Stelle zu prüfen, hab aber keine Ahnung wie und in meinem MQL4-Buch stehts nicht drin. :(

traderdoc 11.08.20 18:04

Zitat:

Zitat von MA-EA (Beitrag 44205)
Also ganz streng genommen, sind ja im Grunde alle double-Werte gerade, weil man sie theoretisch alle bis in die Unendlichkeit durch 2 teilen könnte... :confused: Ok, irgendwann gehts nicht mehr, oder die Menschheit interessiert es nicht ob gerade oder ungerade, aus welchen Gründen auch immer...


Dann müsste man vielleicht den double-Wert ohne irgendwelche Rechnerei prüfen. Das Einfachste wär natürlich, einfach die letzte Stelle zu prüfen, hab aber keine Ahnung wie und in meinem MQL4-Buch stehts nicht drin. :(

Ich würde mal behaupten, dass alle double-Werte weder gerade noch ungerade sind, weil nur ganze Zahlen gerade oder ungerade sein können. Und ganze Zahlen gehören nicht zum Datentyp double.
@MA-EA: Sag mal, kann man tatsächlich alle bis in die Unendlichkeit durch 2 teilen und bis wohin geht denn die Unendlichkeit? Ich brauche jetzt echt Nachhilfe!

traderdoc

MA-EA 12.08.20 21:33

Liste der Anhänge anzeigen (Anzahl: 1)
Unendlichkeit gibts wahrscheinlich gar nicht. Ohne Ende kann es keinen Anfang geben. :confused:

Aber kommen wir zum eigentlich Thema:Mathe-Nachhilfe. Die kann ich wirklich brauchen. :rolleyes:

Lacht mich gerne aus, aber ich versuche raus zu finden wie man

2.58 multipliziert mit 0.123

Einfach * funktioniert glaub ich nicht. 2.58 / 0.123 liefert irgendwie komische Ergebnisse. :confused: Vielleicht hatte ich den richtigen Rechenweg auch schon und weiß es nur nicht.

Es geht darum, den EA im Anhang anhand von Margin und AccountBalance einen bestimmten %Wert des Letzteren als Lots einsetzen zu lassen.

traderdoc 12.08.20 22:56

Zitat:

Zitat von MA-EA (Beitrag 44218)
[FONT=Arial][SIZE=3]
2.58 multipliziert mit 0.123

Einfach * funktioniert glaub ich nicht. 2.58 / 0.123 liefert irgendwie komische Ergebnisse. :confused:

Warum nicht * ?
Und für welche mathematische Grundrechenoperation steht denn / ?

traderdoc

AVT 12.08.20 23:19

Zitat:

Zitat von MA-EA (Beitrag 44218)
Unendlichkeit gibts wahrscheinlich gar nicht. Ohne Ende kann es keinen Anfang geben.

Interessante Aussage. Wenn man also einen Kreis als ein rundes, geschlossenes Gebilde definiert, wäre ein Kreis kein Kreis mehr (Pi hat derzeit etwa 34 Billionen Nachkommastellen, wenn ich mich recht erinnere).

Zitat:

... ich versuche raus zu finden wie man
2.58 multipliziert mit 0.123 ...
Einfach * funktioniert glaub ich nicht. 2.58 / 0.123 liefert irgendwie komische Ergebnisse. ...
Ganz einfach mit dem Multiplikationszeichen, mein Taschenrechner sagt, da kommt 0.31734 raus.
Daß 2.58 / 0.123 ein komisches Ergebnis liefert ist klar, das ist ja auch ne Division.
Zitat:

Es geht darum, den EA im Anhang anhand von Margin und AccountBalance einen bestimmten %Wert des Letzteren als Lots einsetzen zu lassen.
Uuuppss, das ist zu hoch für mich, sowas laß ich mein Tradingpanel ausrechnen :)
AVT

MA-EA 13.08.20 18:47

Darüber denk ich irgendwie schon seit Jahren nach. :rolleyes:


Der Rechenweg ist eigentlich im Großen und Ganzen klar. Vielleicht ist der noch nicht ganz richtig, das größte Problem ist aber eben Multiplikation/Division von Werten die <1.0 sind. :confused:

Code:

//=============================================================================================================
// A U T O L O T S  werden falsch berechnet!
//=============================================================================================================

//////////////////////////////////////////////////////////////////////////////////////////////////////////////


    double MarReq=MarketInfo(Symbol(),MODE_MARGINREQUIRED); // nötige Margin für 1 Lot (100.000 Units)
    double AccBal=AccountBalance(); // momentaner Kontostand


//  "1 Lot" geteilt durch Mindest-Lot, um später raus zu finden, wie viel Margin für Mindest-Lot gebraucht wird.
    if(Min_L<1.0)double oneL_ML=1.0*Min_L;
    if(Min_L>=1.0)oneL_ML=1.0/Min_L;


//  Margin_für_1_Lot geteilt durch Ergebnis, um raus zu finden, wie viel Margin für Mindest_Lot benötigt wird.
//  z.B.:  €1000,00 / 100 = €10,00
    if( MarReq<1.0 )double MarReq_ML= MarReq * oneL_ML; // ?
    if( MarReq>=1.0 )MarReq_ML= MarReq / oneL_ML; // ?


//////////////////////////////////////////////////////////////////////////////////////////////////////////////


//  1% vom Kontostand ausrechnen
//  z.B.: €1000,00 / 100% = €10,00
    if( AccBal<1.0 )double OnePercAccBal = AccBal * 100.0; // ?
    else OnePercAccBal = AccBal / 100.0; // ?


//  1% des Kontostands * Prozent, für die Lots gekauft werden sollen
//  z.B.: €10,00 * 2,5% = €25,00 ?
    if( OnePercAccBal<1.0 ){
      if(Auto_Lotsize_Perc<1.0)double OnePercAccBal_AutoLotPerc = OnePercAccBal / Auto_Lotsize_Perc; // ?
      else OnePercAccBal_AutoLotPerc = OnePercAccBal * Auto_Lotsize_Perc;} // ?
     
     
    if( OnePercAccBal>=1.0 ){
      if(Auto_Lotsize_Perc<1.0)OnePercAccBal_AutoLotPerc = OnePercAccBal / Auto_Lotsize_Perc; // ?
      else OnePercAccBal_AutoLotPerc = OnePercAccBal * Auto_Lotsize_Perc;} // ?


//////////////////////////////////////////////////////////////////////////////////////////////////////////////


// 
    double OnePercAccBalAutoLotPerc_MREQMinL = OnePercAccBal_AutoLotPerc / MarReq_ML;


//  z.B.: €25,00 * 0.01L = 0.025L (?)

    double Print_Lots = OnePercAccBalAutoLotPerc_MREQMinL * Min_L;


AVT 13.08.20 19:46

Zitat:

Zitat von MA-EA (Beitrag 44238)
Code:

double AccBal=AccountBalance(); // momentaner Kontostand
if( AccBal<1.0 )double OnePercAccBal = AccBal * 100.0; // ?


Wenn AccBal<1.0 bist Du pleite!! :eek: Das mal nur so nebenbei bemerkt, und wenn Du das dann noch mit 100 malnimmst, bist Du eben 100 mal pleitiger.
AVT

MA-EA 13.08.20 22:10

Gibts nicht Micro-Lots? Oder Trading ohne Hebel? :rolleyes:

Indikator-Trading 14.08.20 06:13

:confused:
Naja, wenn dein Account gerade bei z.b. 0,56€ steht, dann kanns ja nicht mehr lange dauern bis du Millionär bist :rolleyes:

MA-EA 09.09.20 11:21

Hallo.

Brauch noch mal Mathe-Nachhilfe. :rolleyes:

Und zwar im Dividieren und Multiplizieren von Dezimalzahlen. Ich schnall das irgendwie nicht. :confused:




Z.B.

0.75 dividieren durch 5

0.75 dividieren durch 0.5

5 dividieren durch 0.75

0.75 multiplizieren mit 0.5

-0.75 multiplizieren mit 5.0


Ich versteh einfach nicht so ganz, wann das Divisionszeichen ( / ) und wann das Multiplikationszeichen ( * ) verwendet werden muss.


Nebenbei: Wie gesagt, was keinen Anfang hat, kann kein Ende haben, und umgedreht. Anfang eines Kreises ist vermutlich das Zentrum, sein Ende ist seine "Kante", um es mal so zu formulieren. Oder gibts irgendwas, das entsteht, indem es an nem Punkt ansetzt, und bis zu dessen anderen "Seite" ne Kurve zeichnet? Aber dazu sollte man vielleicht mal nen extra Thema anfangen. ;) :cool:

TogoTiger 09.09.20 12:53

Frag mal deinen Taschenrechner. Der weiss das ganz bestimmt.

Indikator-Trading 09.09.20 13:22

Zitat:

Zitat von MA-EA (Beitrag 44386)
Hallo.

Brauch noch mal Mathe-Nachhilfe. :rolleyes:

Und zwar im Dividieren und Multiplizieren von Dezimalzahlen. Ich schnall das irgendwie nicht. :confused:

...

0.75 dividieren durch 5

0.75 dividieren durch 0.5

5 dividieren durch 0.75

0.75 multiplizieren mit 0.5

-0.75 multiplizieren mit 5.0


Ich versteh einfach nicht so ganz, wann das Divisionszeichen ( / ) und wann das Multiplikationszeichen ( * ) verwendet werden muss.

Dir hat man doch ins Hirn geschissen oder???

TogoTiger 09.09.20 14:11

Der will uns doch verarschen.
Hat lange gedauert, bis ich das gemerkt habe. Selber schuld.

Indikator-Trading 09.09.20 14:38

Zitat:

Zitat von TogoTiger (Beitrag 44389)
Der will uns doch verarschen.
Hat lange gedauert, bis ich das gemerkt habe. Selber schuld.

Nein, das glaube ich nicht. Dazu müsste er ja Selbstironie aufweisen können und gleichzeitig eine realistische Einschätzung über sein Unvermögen/Vermögen haben.....
Da bleibe dann eher bei meiner These aus Post #22
Die wurde ja sowieso schon mehrfach von ihm in anderen Themen hier im Forum bestätigt...

traderdoc 09.09.20 19:01

Das schlägt in der Tat dem Fass den Boden raus. Also ich habe ja in den 35 Jahren Programmierung schon so Einige erlebt, deren Materie das Programmieren dann wirklich nicht war, aber das lag dann eher am logischen Mangelvermögen.

Was uns @MA-EA jetzt hier auftischt, grenzt wirklich an Verarschung, denn es kann mir keiner erzählen, dass selbst nur nach dem Besuch von 6 Klassen ein Unwissen über die Benutzung des Divisions-Querstriches bzw. des Multiplikations-Sternchens bestehen soll.

Aber evtl. outet er sich ja nochmal, was der ganze Zinnober hier soll.

Bis dahin bleiben wir gespannt.

traderdoc

TogoTiger 09.09.20 19:49

Selbst hier wo ich wohne, in einem der ärmsten Länder Afrikas mit entsprechend lausigen Schulen, würde kein 10 jähriges Kind so eine Frage stellen.
Nein, der Typ verarscht uns. Es hilft nur eins: ignorieren.

traderdoc 09.09.20 21:01

Zitat:

Zitat von TogoTiger (Beitrag 44394)
Selbst hier wo ich wohne, in einem der ärmsten Länder Afrikas mit entsprechend lausigen Schulen, würde kein 10 jähriges Kind so eine Frage stellen.
Nein, der Typ verarscht uns. Es hilft nur eins: ignorieren.

Nur, was sollte sein Ziel und was sein Nutzen sein?

traderdoc

TogoTiger 09.09.20 21:40

Der Typ ist krank. Er scheint das zu brauchen.
Was solls, ich brauch das nicht. Ich les das nur noch, wenn ich mich mal amüsieren will
Nur, dafür gibts Besseres hier in Afrika.

MA-EA 10.09.20 01:08

Liste der Anhänge anzeigen (Anzahl: 1)
Würd ich mir so ne Mühe machen, bloß um irgendwen zu verar... :rolleyes:


Das Folgende ist vielleicht kein Mathe-Problem, aber es ist verwirrend. Ich meine, wie kann denn, wenn man von einem MA-Wert nen anderen MA-Wert abzieht, und den zu nem weiteren MA plus/minus rechnet, wie können da vollkommen unlogische Anzeigen im Datenfenster rauskommen? Schaut Euch das mal an. Entweder ist am Indi im Anhang wirklich irgendwas total verkehrt, oder der MT4 braucht dringenst Mathe-Nachhilfe. Anders ist das jedenfalls echt nicht mehr zu erklären. :confused: Wenn Ihr nicht helfen wollt, dann sagt mir wenigstens was ungefähr der Fehler sein könnte. Aber das ist doch echt nicht mehr normal...
Code:

extern string MfMs2="( MA_Fast - MA_Slow )";

extern int              MA_Fast_Period=6;
input ENUM_MA_METHOD    MA_Fast_Method=MODE_SMA;
input ENUM_APPLIED_PRICE MA_Fast_Price =PRICE_MEDIAN;

extern int              MA_Slow_Period=12;
input ENUM_MA_METHOD    MA_Slow_Method=MODE_SMA;
input ENUM_APPLIED_PRICE MA_Slow_Price =PRICE_MEDIAN;



extern string PmMfMsD2="( + - PlMi_MA )";

extern int              PlMi_MA_Period=10;
input ENUM_MA_METHOD    PlMi_MA_Method=MODE_SMA;
input ENUM_APPLIED_PRICE PlMi_MA_Price =PRICE_CLOSE;

extern string i1= "If Plus_PMPrice = true";
extern string i2= "Line = ...";
extern bool Plus_MA_PlMi = false;

Code:

double MAfa_Pr , MAsl_Pr , pmMA_Pr ;

//=============================================================================================================
// D E K L A R A T I O N  P R I C E S
//=============================================================================================================



double Pr_Hi=iHigh (NULL,NULL,i);
double Pr_Cl=iClose(NULL,NULL,i);
double Pr_Op=iOpen (NULL,NULL,i);
double Pr_Lo=iLow  (NULL,NULL,i);

double Pr_HL = Pr_Hi + Pr_Lo;
double Pr_ME = Pr_HL / 2.0;

double Pr_HCL = Pr_Hi + Pr_Cl + Pr_Lo;
double Pr_TY  = Pr_HCL / 3.0;   
   
double Pr_HOCL = Pr_Hi + Pr_Cl + Pr_Op + Pr_Lo;
double Pr_WE  = Pr_HOCL / 4.0;

// Zuweisung fast MA Price
if(MA_Fast_Price==PRICE_HIGH    )MAfa_Pr=Pr_Hi;
if(MA_Fast_Price==PRICE_CLOSE  )MAfa_Pr=Pr_Cl;
if(MA_Fast_Price==PRICE_OPEN    )MAfa_Pr=Pr_Op;
if(MA_Fast_Price==PRICE_LOW    )MAfa_Pr=Pr_Lo;
if(MA_Fast_Price==PRICE_MEDIAN  )MAfa_Pr=Pr_ME;
if(MA_Fast_Price==PRICE_TYPICAL )MAfa_Pr=Pr_TY;
if(MA_Fast_Price==PRICE_WEIGHTED)MAfa_Pr=Pr_WE;

// Zuweisung slow MA Price
if(MA_Slow_Price==PRICE_HIGH    )MAsl_Pr=Pr_Hi;
if(MA_Slow_Price==PRICE_CLOSE  )MAsl_Pr=Pr_Cl;
if(MA_Slow_Price==PRICE_OPEN    )MAsl_Pr=Pr_Op;
if(MA_Slow_Price==PRICE_LOW    )MAsl_Pr=Pr_Lo;
if(MA_Slow_Price==PRICE_MEDIAN  )MAsl_Pr=Pr_ME;
if(MA_Slow_Price==PRICE_TYPICAL )MAsl_Pr=Pr_TY;
if(MA_Slow_Price==PRICE_WEIGHTED)MAsl_Pr=Pr_WE;

// Zuweisung Ma_Plus_Minus Price
if(PlMi_MA_Price==PRICE_HIGH    )pmMA_Pr=Pr_Hi;
if(PlMi_MA_Price==PRICE_CLOSE  )pmMA_Pr=Pr_Cl;
if(PlMi_MA_Price==PRICE_OPEN    )pmMA_Pr=Pr_Op;
if(PlMi_MA_Price==PRICE_LOW    )pmMA_Pr=Pr_Lo;
if(PlMi_MA_Price==PRICE_MEDIAN  )pmMA_Pr=Pr_ME;
if(PlMi_MA_Price==PRICE_TYPICAL )pmMA_Pr=Pr_TY;
if(PlMi_MA_Price==PRICE_WEIGHTED)pmMA_Pr=Pr_WE;



//=============================================================================================================
// ( ( M A S F S F A S T + M A S F S S L O W ) / 2 )
//=============================================================================================================

double MAfast=iMA(_Symbol,_Period,MA_Fast_Period,0,MA_Fast_Method,MAfa_Pr,i);
double MAslow=iMA(_Symbol,_Period,MA_Slow_Method,0,MA_Slow_Method,MAsl_Pr,i);

// (( MAsFS_fast + MAsFS_slow / 2 )
double FAminSL =  MAfast - MAslow;

// Version ohne d2

//=============================================================================================================
//
//=============================================================================================================

double PlMi_MA=iMA(_Symbol,_Period,PlMi_MA_Period,0,PlMi_MA_Method,pmMA_Pr,i);

//=============================================================================================================
// B U F F E R  Z U W E I S U N G
//=============================================================================================================


if(Plus_MA_PlMi==true )BUF_CHA_MAmMApmMA[i]= PlMi_MA + FAminSL;

  if(Plus_MA_PlMi==false)BUF_CHA_MAmMApmMA[i]= PlMi_MA - FAminSL;

Die drei untersten Werte im Datenfenster unter Volume sind doch echt nicht mehr nachvollziehbar. :confused:

https://charts.mql5.com/26/71/eurgbp...ades-plc-2.png

Indikator-Trading 10.09.20 11:03

Zitat:

Zitat von MA-EA (Beitrag 44397)
...irgendwas total verkehrt, oder der MT4 braucht dringenst Mathe-Nachhilfe. Anders ist das jedenfalls echt nicht mehr zu erklären. :confused:

Ja, ich hab es gerade selbst kontrolliert. Der Fehler liegt wirklich im MT4, wenn du eine Version neuer als Build 1130 hast. Das hätte ich echt nicht für möglich gehalten!

traderdoc 10.09.20 11:32

So, dann präge Dir jetzt endlich ein:

Division = /
Multiplikation = *

Und jetzt frage hier nie! wieder wegen Division
bzw. Multiplikation. Wenn Du das o.g. nun
immer noch nicht verstanden hast, rate ich Dir,
gehe zur Nachhilfe. Evtl. bedarf das jedoch ärztlicher
Hilfe.

traderdoc

MA-EA 28.09.20 20:40

Liste der Anhänge anzeigen (Anzahl: 1)
* und / sind eigentlich klar. Nur scheint der MT4 damit nicht umgehn zu können. Mach ich das Ganze nicht so, wie im folgenden Code/Indikator, kommen "unlogische" Ergebnisse im MT4 raus. Nicht nur in diesem Indi, auch in Anderen und in EAs. Vermutlich ist er, bzw. seine Art zu rechnen, nicht gerade die Neueste... Nebenbei: Weiß Jemand was Neues über MQL 6 / MT 6 ?


Jedenfalls kommen hier nen paar schöne - ähm - nennen wir es Übungsaufgaben. :rolleyes:




Aufgabe: Der automatische Multi soll das Ergebnis der anderen Berechnungen so umrechnen, dass dieses an den Kurs-Verlauf angepasst und seinem Verhältnis zu diesem entsprechend korrekt im Chart angezeigt wird. Wie berechnet man den Auto-Multi korrekt?




Brauch Jemand Mathe-Nachhilfe? ;) :D Ich auf jeden Fall. :(


Sollten andere Fehler ausser den Mathe-(un-)Logischen drin sein, dann sorry.

Code:

//=============================================================================================================
// M A s + M A s
//=============================================================================================================

double MAs_pl_MAs=MA_one+MA_two+MA_thr+MA_fou+MA_fiv+MA_six+MA_sev;

//=============================================================================================================
// ( M A s + M A s ) / D I V
//=============================================================================================================



// Wert links (zwischen -1 und 1)...
if( MAs_pl_MAs > -1.0 && MAs_pl_MAs < 1.0 ){

// ...soll durch Wert geteilt werden, der ebenfalls zwischen -1 und 1 ist.
  if( Div >  -1.0 && Div <  1.0 )MAplMA_Div = MAs_pl_MAs * Div ;

// ...soll durch Wert geteilt werden, der nicht zwischen zwischen -1 und 1 ist.
  if( Div <= -1.0 || Div >= 1.0 )MAplMA_Div = MAs_pl_MAs / Div ;

}



// Wert links (nicht zwischen -1 und 1)...
if( MAs_pl_MAs < -1.0 || MAs_pl_MAs > 1.0 ){

// ...soll durch Wert geteilt werden, der zwischen -1 und 1 ist.
  if( Div >  -1.0 && Div <  1.0 )MAplMA_Div = MAs_pl_MAs * Div ;

// ...soll durch Wert geteilt werden, der nicht zwischen -1 und 1 ist.
  if( Div <= -1.0 || Div >= 1.0 )MAplMA_Div = MAs_pl_MAs / Div ;

}



//=============================================================================================================
// A U T O  M U L T I
//=============================================================================================================


if(AutoMulti==true){

  if( Div > -1.0  &&  Div < 1.0 )Multi = Div * MAcount;

  if( Div <= -1.0 || Div >= 1.0 )Multi = Div / MAcount;


}



//=============================================================================================================
// B U F F E R  Z U W E I S U N G
//=============================================================================================================



// Wert links, der zwischen -1 und 1 ist...
if( MAplMA_Div > -1.0 && MAplMA_Div < 1.0 ){

// ...soll multipliziert werden mit Wert, der auch zwischen -1 und 1 ist.
  if( Multi  > -1.0 && Multi  < 1.0 )BUF_SevMAdVxAutoV_CHA[i] = MAplMA_Div / Multi ;

//
  if( Multi <= -1.0 || Multi >= 1.0 )BUF_SevMAdVxAutoV_CHA[i] = MAplMA_Div * Multi ;
 
}



//
if( MAplMA_Div <= -1.0 || MAplMA_Div >= 1.0 ){

// 
  if( Multi  > -1.0 && Multi  < 1.0 )BUF_SevMAdVxAutoV_CHA[i] = MAplMA_Div / Multi ;
 
//
  if( Multi <= -1.0 || Multi >= 1.0 )BUF_SevMAdVxAutoV_CHA[i] = MAplMA_Div * Multi ;
}


Indikator-Trading 29.09.20 00:11

Immer wieder beeindruckend mit welcher Hartnäckigkeit du hier meinst irgend einen Schwachsinn verbreiten zu müssen...

Erklär mir mal diese Logik aus deinen "Indikator":

Code:


      Pr_Hi=iHigh(NULL,NULL,i);
      Pr_Lo=iLow(NULL,NULL,i);

      Pr_HL = Pr_Hi + Pr_Lo;
      if(Pr_HL > -1.0  … )

Wie verdammt nochmal soll eine Summe aus einem HighWert und LowWert jemals negativ werden? Warum abfragen ob diese Summe >-1.0 ist???
Wie soll überhaupt mal einer dieser Werte negativ sein/werden (mal von dem Ölfuture vor kurzen abgesehen) ??? Na, merkst du was???

Du weißt immer noch nicht womit du es hier zutun hast. Einfach nur noch traurig.

Das einzige was jemals bei dir wirklich negativ wird, wird dein Kontostand sein.

Wer selbst unfähig ist logisch zu denken, sollte hier nicht behaupten das die Entwicklungsumgebung unlogisch handelt. Die macht nur das was DU da programmierst, und das ist halt einfach nur gequirlte SCHEIßE.

PUNKT

MA-EA 07.10.20 14:52

Liste der Anhänge anzeigen (Anzahl: 1)
Das mach ich halt der Vollständigkeit halber. :rolleyes:

Ich versuch mal, es anders zu formulieren:

Man hat bis zu 7 Werte. Die sollen zusammen addiert und durch einen einstellbaren Wert geteilt werden. Jetzt z.B. mal durch 3,5. Danach soll das Ergebnis so angepasst werden, dass es so aussieht, als wäre die Summe der 7 Werte auch durch 7 geteilt worden. Wie z.B. bei nem MA auf 7 Perioden, die Summe der 7 Kerzen wird aber nur durch 3,5 geteilt. Wie rechnet man das Ergebnis dann wieder so um, dass es im Chart so aussieht, als wäre die Summe der 7 Kerzen doch durch ihre Anzahl von 7 geteilt worden?

Der (Un-)Sinn dahinter ist, dass man sozusagen einen nach eigenen Werten gewichteten MA (oder vielleicht Price) im Chart hat. Z.B. High, Close und Low zusammen rechnen, aber nur durch 2 teilen, um z.B. zu sehn, wie sich das Ding gegenüber dem Median Price oder gegenüber dem Mittelwert High+Close verhält.

Weiß selber noch nicht so richtig, was das bringen soll, aber für die Mathe-Experten wärs doch bestimmt interessant. Dann könnte man bestimmte Bewegungen/Verhältnisse (raus)filtern oder verstärken oder wie auch immer. Siehe exponentielle oder smoothed MAs oder so.


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:31 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum