Jump to content
Tom Next - Daytrading Community

"Spielereien mit String"


Kleinerbroker

Recommended Posts

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 .

  • Upvote 1
Link to comment
Share on other sites

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) KEINE

Frage sondern will informieren , wie ich dieses Problem gelöst habe . Einfach, weil mir auch schon soviel Hilfe zu Teil

wurde . KB

 

PS.: An anderer Stelle wurde der Code gerade hinterfragt, was zum Beispiel passieren würde, wenn der Markt 1 oder 3 oder 5 Digits

hätte . Muss ich mal gucken , wenn es ein Thema werden sollte .... kenne im Moment keinen entsprechenden Markt .

 

Pivot.png

Link to comment
Share on other sites

 

PS.: An anderer Stelle wurde der Code gerade hinterfragt, was zum Beispiel passieren würde, wenn der Markt 1 oder 3 oder 5 Digits

hätte . Muss ich mal gucken , wenn es ein Thema werden sollte .... kenne im Moment keinen entsprechenden Markt .

 

Pivot.png

 

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. :laugh:

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...