Geschrieben 26. Februar 201115 Jr. comment_113775 Ein Include, der mir einen Aufsatzpunkt "Pivot" im Verhältnis zur EMA der 200 Tage geben soll .Das Hauptprogramm übergibt den Wert der EMA und bekommt dafür den "Pivot" zurück . Dieser sollentweder mit "25" oder "75" enden , je nach Lage der EMA im 100´er Feld ...z Bsp 1,3978 soll 1,3925 zurückgeben,1,3945 aber 1,3875 . Anbei : Der Pivot ist für mich der Zielkurs für eine Stop-Order . Es wird der Double-Zahlenwert der EMA in einen String konvertiert, dann die für mich wichtigen letztenbeiden Nachkommastellen ausgeschnitten . Nun erfolgt Umwandlung in eine Integerzahl um in Folge dieFallunterscheidung 50 durchzuführen . Je nach Ergebnis wird der erste Teil des String herangezogen,dieser in eine Double verwandelt und schlussendlich je nach "Digits" 0,25 oder 0,0025 abgezogen/addiert . Guckst Du : //+-----------------------------------------------------------------------------------------------+ //| Ernten_Pivot.mqh | //| The code should be used for Ernten only | //+-----------------------------------------------------------------------------------------------+ //+-----------------------------------------------------------------------------------------------+ //| function : returns Pivot : shall be ´25´oder ´75´ ie 1.2325 or 1.2375 | //+-----------------------------------------------------------------------------------------------+ // | double calcPivot(double locLazy200) // | { // | string buf1 = DoubleToStr(locLazy200 ,Digits);// | int buf2 = StringLen(buf1) ;// | string buf3 = StringSubstr(buf1 ,buf2-2,2) ;//die letzten beiden Zahlen | int buf4=StrToInteger(buf3) ;// convert zu ganzer Zahl | //+-----------------------------------------------------------------------------------------------+ if (Digits == 2) // Pair mit 2 Stellen hinter Komma | { // | if (buf4 < 50 ) // und 200EMA im UNTEREN "100-Feld" | { // | double buf5 = (StrToDouble(StringSubstr(buf1 ,0,4)))-0.25 ;// | } // | else { // ist im OBEREN "100-Feld" | buf5 = (StrToDouble(StringSubstr(buf1 ,0,4)))+0.25 ;// | } // | Comment ( "\n","\n"," Digits= ",Digits,"\n"," 1= ", buf1 ,"\n"," 2= ",buf2,"\n"," 3= ", // | buf3,"\n"," 4= ",buf4,"\n"," Pivot = ",buf5) ;// | return (buf5) ;// = Pivot | } // | //+-----------------------------------------------------------------------------------------------+ if (Digits == 4) // ein Pair mit 4 Stellen hinter Komma | { // | if (buf4 < 50 ) // und 200EMA im unteren "100-Feld" | { // | buf5 = (StrToDouble(StringSubstr(buf1 ,0,4)))-0.0025 ;// | } // | else { // ist im OBEREN "100-Feld" | buf5 = (StrToDouble(StringSubstr(buf1 ,0,4)))+0.0025 ;// | } // | Comment ( "\n","\n"," Digits= ",Digits,"\n"," 1= ", buf1 ,"\n"," 2= ",buf2,"\n"," 3= ", // | buf3,"\n"," 4= ",buf4,"\n"," Pivot = ",buf5) ;// | return (buf5) ;// = Pivot | } // | } // | //------------------------------------------------------------------------------------------------+ Der Code unterscheidet Märkte mit 2 oder 4 Nachkomma-Stellen . Ich poste diesen Schnipsel , weil er anderen Anfängern behilflich sein möge . Und den "alten Hasen" wäre ich sehr und aufrichtig für Verbesserungsvorschläge aller Art zu Dank verbunden . KB PS.: Für den Interessierten habe ich meine beiden Comment-Zeilen im Code gelassen .Diese nutzte ich zum debuggen . In meinem Code entferne ich diese nun . Erntenist der EA an dem ich arbeite und der dem Goldhopper folgt . Melden
Geschrieben 26. Februar 201115 Jr. comment_113776 Hmm, bin ja Progtechnisch hinterm Mond, kannst du mal einen Screen posten, der dein beschriebenes anhand eines Charts erklärt ? Ich verstehe so etwas visuell einfach besser. Melden
Geschrieben 26. Februar 201115 Jr. Autor comment_113788 Der Code soll den Wert 112,75 berechnen, wenn die 200EMA bei 113,49 steht . In meinem EA würde ich dort eine Stop Sell Order platzieren wollen .Das ist für mich der Hintergrund des kleinen Programmes . Aber ich stelle in diesem Falle (ausnahmsweise einmal) KEINEFrage sondern will informieren , wie ich dieses Problem gelöst habe . Einfach, weil mir auch schon soviel Hilfe zu Teilwurde . KB PS.: An anderer Stelle wurde der Code gerade hinterfragt, was zum Beispiel passieren würde, wenn der Markt 1 oder 3 oder 5 Digitshätte . Muss ich mal gucken , wenn es ein Thema werden sollte .... kenne im Moment keinen entsprechenden Markt . Melden
Geschrieben 26. Februar 201115 Jr. comment_113793 PS.: An anderer Stelle wurde der Code gerade hinterfragt, was zum Beispiel passieren würde, wenn der Markt 1 oder 3 oder 5 Digitshätte . Muss ich mal gucken , wenn es ein Thema werden sollte .... kenne im Moment keinen entsprechenden Markt . Hängt auch vom Broker ab, bei Alpari zb hat alles mit JPY 3 Digits. EURUSD hat 5.Das sind wahren Herausforderungen beim Programmieren, wenn das alles berücksichtigen willst. Melden
Ein Include, der mir einen Aufsatzpunkt "Pivot" im Verhältnis zur EMA der 200 Tage geben soll .
Das Hauptprogramm übergibt den Wert der EMA und bekommt dafür den "Pivot" zurück . Dieser soll
entweder mit "25" oder "75" enden , je nach Lage der EMA im 100´er Feld ...z Bsp 1,3978 soll 1,3925 zurückgeben,
1,3945 aber 1,3875 . Anbei : Der Pivot ist für mich der Zielkurs für eine Stop-Order .
Es wird der Double-Zahlenwert der EMA in einen String konvertiert, dann die für mich wichtigen letzten
beiden Nachkommastellen ausgeschnitten . Nun erfolgt Umwandlung in eine Integerzahl um in Folge die
Fallunterscheidung 50 durchzuführen . Je nach Ergebnis wird der erste Teil des String herangezogen,
dieser in eine Double verwandelt und schlussendlich je nach "Digits" 0,25 oder 0,0025 abgezogen/addiert .
Guckst Du :
//+-----------------------------------------------------------------------------------------------+ //| Ernten_Pivot.mqh | //| The code should be used for Ernten only | //+-----------------------------------------------------------------------------------------------+ //+-----------------------------------------------------------------------------------------------+ //| function : returns Pivot : shall be ´25´oder ´75´ ie 1.2325 or 1.2375 | //+-----------------------------------------------------------------------------------------------+ // | double calcPivot(double locLazy200) // | { // | string buf1 = DoubleToStr(locLazy200 ,Digits);// | int buf2 = StringLen(buf1) ;// | string buf3 = StringSubstr(buf1 ,buf2-2,2) ;//die letzten beiden Zahlen | int buf4=StrToInteger(buf3) ;// convert zu ganzer Zahl | //+-----------------------------------------------------------------------------------------------+ if (Digits == 2) // Pair mit 2 Stellen hinter Komma | { // | if (buf4 < 50 ) // und 200EMA im UNTEREN "100-Feld" | { // | double buf5 = (StrToDouble(StringSubstr(buf1 ,0,4)))-0.25 ;// | } // | else { // ist im OBEREN "100-Feld" | buf5 = (StrToDouble(StringSubstr(buf1 ,0,4)))+0.25 ;// | } // | Comment ( "\n","\n"," Digits= ",Digits,"\n"," 1= ", buf1 ,"\n"," 2= ",buf2,"\n"," 3= ", // | buf3,"\n"," 4= ",buf4,"\n"," Pivot = ",buf5) ;// | return (buf5) ;// = Pivot | } // | //+-----------------------------------------------------------------------------------------------+ if (Digits == 4) // ein Pair mit 4 Stellen hinter Komma | { // | if (buf4 < 50 ) // und 200EMA im unteren "100-Feld" | { // | buf5 = (StrToDouble(StringSubstr(buf1 ,0,4)))-0.0025 ;// | } // | else { // ist im OBEREN "100-Feld" | buf5 = (StrToDouble(StringSubstr(buf1 ,0,4)))+0.0025 ;// | } // | Comment ( "\n","\n"," Digits= ",Digits,"\n"," 1= ", buf1 ,"\n"," 2= ",buf2,"\n"," 3= ", // | buf3,"\n"," 4= ",buf4,"\n"," Pivot = ",buf5) ;// | return (buf5) ;// = Pivot | } // | } // | //------------------------------------------------------------------------------------------------+Der Code unterscheidet Märkte mit 2 oder 4 Nachkomma-Stellen .
Ich poste diesen Schnipsel , weil er anderen Anfängern behilflich sein möge .
Und den "alten Hasen" wäre ich sehr und aufrichtig für Verbesserungsvorschläge aller
Art zu Dank verbunden .
KB
PS.: Für den Interessierten habe ich meine beiden Comment-Zeilen im Code gelassen .
Diese nutzte ich zum debuggen . In meinem Code entferne ich diese nun . Ernten
ist der EA an dem ich arbeite und der dem Goldhopper folgt .