Inhalte aufrufen

  • Über WindowsLive anmelden Log In with Google Anmelden
  • Mitglied werden
Profilbild

Excel 2013 und MT4 - Formel mit Platzhalter

- - - - -

Best Answer SuchAndEasy , 18 March 2014 - 17:09 Uhr

Vielen Dank liebe Wall-Nuss!

 

Ich gebe mich geschlagen. Excel hat gewonnen. Das ist echt das erste Mal, dass ich irgendwo nicht weiter komme mit Excel. VBA ist kein Problem für mich. Danke für die Idee. ZellenWert müsste doch eigentlich der Excel-Funktion Wert entsprechen, oder? Dabei wird ein beliebiger Text in eine(n) für Excel les- und auswertbaren Text, Wert oder Funktion umgewandelt. Dies funktioniert leider nicht. Ich habe jetzt für jedes Symbol extra den Zellenausdruck in der richtigen Syntax für BID und ASK in jede einzelne Zelle geschrieben.

 

Na gut, ich habe es schreiben lassen. Ich habe mir mit Hilfe von AutoIt ein kleines Programm gebastelt, was die Arbeit für mich übernimmt.

 

Man muss sich halt nur zu helfen wissen.

 

Danke an alle.

Go to the full post »


  • Du kannst leider keine neuen Themen eröffnen
  • Please log in to reply
12 Antworten zu diesem Thema

  #1
OFFLINE   SuchAndEasy

Hallo Ihr Lieben!

 

Folgende Formel kennt jeder, der sich schon mit der Thematik Excel und MT4 (DDE-Server) auseinandergesetzt hat:

='MT4'|BID!EURUSD

Damit zeigt man den Bid-Preis von EUR/USD an. Soweit ist ja auch alles klar.

 

Nun habe ich aber eine Liste, in der die ganzen Symbol-Bezeichnungen enthalten sind. Angenommen, die Symbole stehen in der Spalte A. In Spalte B möchte ich nun die Bid-Preise zu den Symbolen in Spalte A anzeigen lassen.

 

Nehmen wir wieder das Beispiel EUR/USD. Dieses Symbol steht im Feld A8. Um im Feld B8 nun den Bid-Preis angezeigt zu bekommen, müsste ich ja nun, wie oben erwähnt, ='MT4'|BID!EURUSD eintragen. Das möchte ich aber nicht. In Spalte A stehen bspw. ca. 300 Symbole (alle so geschrieben wie im MT4, wie also für die Formel in Spalte B erforderlich).

 

Ich habe versucht, ganz nach Excel-Logik, mit folgender Formel mir die Dateneingaben zu vereinfachen. Im Feld B7 habe ich eingetragen: ='MT4'|BID!A7

Das ging natürlich nicht. Aber so wie ich Excel kenne, ist mein Vorhaben sicher realisierbar über irgendwelche Formatbefehle.

 

Wie kann ich also die Formel in Spalte B schreiben, damit ich mir jegliches Eintippen der anderen 299 Symbole spare.

ich will ja nicht nur Bid-Kurse haben. Was für eine Fummelei.

 

Ich hoffe, dass es verständlich formuliert ist und Ihr mir helfen könnt.

 

Danke!


Bearbeitet von SuchAndEasy, 17 March 2014 - 23:57 Uhr,

Mir doch egal, was ich denke!

  #2
OFFLINE   Wall-Nuss

Mit der Formel Funktion INDIREKT sollte es gehen:

 

='MT4'|BID! & INDIREKT(A7)

Habe jetzt kein Excel und kein MT4 also kann ich leider nicht testen :S:


  • SuchAndEasy gefällt das

  #3
OFFLINE   DaBuschi

Nehmen wir wieder das Beispiel EUR/USD. Dieses Symbol steht im Feld A8. Um im Feld B8 nun den Bid-Preis angezeigt zu bekommen, müsste ich ja nun, wie oben erwähnt, ='MT4'|BID!EURUSD eintragen. Das möchte ich aber nicht. In Spalte A stehen bspw. ca. 300 Symbole (alle so geschrieben wie im MT4, wie also für die Formel in Spalte B erforderlich).

 

Ich habe versucht, ganz nach Excel-Logik, mit folgender Formel mir die Dateneingaben zu vereinfachen. Im Feld B7 habe ich eingetragen: ='MT4'|BID!A7

 

Danke!

 

Wenn ich davon ausgehe, dass Du als Ergebnis "='MT4'|BID!EURUSD" erhalten willst, in Feld A7 "EUR/USD" steht und Du die Formel "='MT4'|BID!A7", dann sollte Excel als Ergebnis "#N/A" rauskommen.

 

In meinen Augen gibt es zwei Dinge zu tun. Aus EUR/USD muss EURUSD werden. Entweder nutzt Du die Excel-Funktion für Ersetzen (STRG+H) und ersetzt "/" durch "" (nichts) oder aber Du wandelst das Währungspaar über eine Formel um wie z.B. "=LEFT(A7,3)&RIGHT(A7,3)" (alternativ mit LINKS und RECHTS arbeiten, falls deutsches Excel).

 

Nun hast Du schonmal die Grundvoraussetzungen für die Formel.

 

Wenn Du die Währungspaare in Spalte A ohne "/" ausweist, sollte Deine Formel in Spalte B wie folgt aussehen "='MT4'|BID!&A7".

Willst Du die "/" weiterhin in Spalte A behalten, brauchst Du folgende Formel ""='MT4'|BID!&LEFT(A7,3)&RIGHT(A7,3)"

 

Viel Erfolg.


  • SuchAndEasy gefällt das
Ein erfolgreicher Trader weiß nicht, was passieren wird. Aber er weiß zu jeder Zeit, was er tun muss.

  #4
OFFLINE   SuchAndEasy

Vielen Dank Euch beiden. Aber leider klappt des net so. Ich denke, dass MT4 eben genau diesen String erwartet: ...BID!EURUSD. Man müsste also MT4 bzw. dem DDE Server vorgaukeln, dass er genau diesen String bekommt. Nur statt EURUSD hätte ich halt gern einen Zellbezug zu einer Zelle, in der EURUSD bereits enthalten ist.

Ich denke der Befehl INDIREKT war schon ein guter Ansatz, wird ja mit diesem Befehl die Formel weitergereicht.

Vielleicht kann man die Formel, also den Befehl an DDE, irgendwie "aufbereiten".

 

Bis dann

 

Edit: Hier ist ein Lösungsansatz, den ich aber noch irgendwie umfummeln muss

Please Login or Register to see this Hidden Content

grad kein Plan:S: 


Bearbeitet von SuchAndEasy, 18 March 2014 - 10:59 Uhr,

Mir doch egal, was ich denke!

  #5
OFFLINE   Wall-Nuss

Ich glaub, ich weiß was du meinst... Bin mir jetzt aber nicht ganz sicher wie das Zeichen "|" von Excel interpretiert wird, bzw. ob es von MT4 DDE-Server ausgewerten werden soll.

Die Formel beginnt mit einem String an ='MT4' und danach der Rest mit >> I BID!EURUSD << Damit gehe ich mal davon aus, DDE-Server den letzte Part bekommen soll.

 

Die einfache Möglichkeit, wäre ein 3-Zeiler in VBA-Code, andere Umwege mit Excel-Formel-Funktionen kann man sich sparen:

Please Login or Register to see this Hidden Content

Auch Ersetzen von Slash oder Weitere Sachen kann man hier ebenfalls anstellen...

 

Update: @SuchAndEasy, stelle bitte eine leere Excel-Tabelle hier rein und ich baue die Funktion dort ein


Bearbeitet von Wall-Nuss, 18 March 2014 - 13:20 Uhr,

  • SuchAndEasy gefällt das

  #6
OFFLINE   SuchAndEasy

✓  Best Answer

Vielen Dank liebe Wall-Nuss!

 

Ich gebe mich geschlagen. Excel hat gewonnen. Das ist echt das erste Mal, dass ich irgendwo nicht weiter komme mit Excel. VBA ist kein Problem für mich. Danke für die Idee. ZellenWert müsste doch eigentlich der Excel-Funktion Wert entsprechen, oder? Dabei wird ein beliebiger Text in eine(n) für Excel les- und auswertbaren Text, Wert oder Funktion umgewandelt. Dies funktioniert leider nicht. Ich habe jetzt für jedes Symbol extra den Zellenausdruck in der richtigen Syntax für BID und ASK in jede einzelne Zelle geschrieben.

 

Na gut, ich habe es schreiben lassen. Ich habe mir mit Hilfe von AutoIt ein kleines Programm gebastelt, was die Arbeit für mich übernimmt.

 

Man muss sich halt nur zu helfen wissen.

 

Danke an alle.


Mir doch egal, was ich denke!

  #7
OFFLINE   forexler

rtf



  #8
OFFLINE   fxdaytrader

rtf Oder "rtfm" (read the fu**ing manual)? ;)


Kommst' heut' nicht, kommst' morgen oder gar nicht ...
Krank im Kopf, aber sonst ganz nett :troll:

meet the Fabrik-Mods | ForexFabrik ForenSuche | alter mql4 compiler (hier

  #9
OFFLINE   SuchAndEasy

Ich glaub, ich weiß was du meinst... Bin mir jetzt aber nicht ganz sicher wie das Zeichen "|" von Excel interpretiert wird, bzw. ob es von MT4 DDE-Server ausgewerten werden soll.

Die Formel beginnt mit einem String an ='MT4' und danach der Rest mit >> I BID!EURUSD << Damit gehe ich mal davon aus, DDE-Server den letzte Part bekommen soll.

 

Die einfache Möglichkeit, wäre ein 3-Zeiler in VBA-Code, andere Umwege mit Excel-Formel-Funktionen kann man sich sparen:

Please Login or Register to see this Hidden Content

 

Danke Wall-Nuss. Genau so geht's. Jetzt habe ich es auch geschnallt. Der letzte Groschen ist gefallen. Fast peinlich das Ganze, aber manchmal braucht man einen Fingerzeig. Danke!

 

 

Update:

Ich habe es mit einer For...Next-Schleife gelöst:

Please Login or Register to see this Hidden Content

In Spalte B stehen die ganzen Werte bereits drin. Dies ist jetzt nur ein Beispiel, aber so klappt es letzten Endes doch noch. So musste ich dank Wall-Nuss' Fingerzeig nun doch nicht vor Excel kapitulieren. Man, VBA ist ja auch so lange her, da war ja mal was ... :-"


Bearbeitet von SuchAndEasy, 20 March 2014 - 19:09 Uhr,

Mir doch egal, was ich denke!

  #10
OFFLINE   SuchAndEasy

Und so habe ich es nun gemacht. Ist vielleicht auch für andere interessant.

 

Ich habe in einer Excel-Tabelle namens Übersicht genau 425 Werte untereinander. Diese habe ich so aus der Markttabelle des Anbieters übernommen und festgestellt, dass die Schreibweise genau der erforderlichen Syntax entspricht um Daten vom MT4 in Excel in Echtzeit anzeigen zu lassen. Darin sind enthalten Forex und CFDs für Indizes, Rohstoffe und Aktien. Diese Intrumente stehen in Spalte B. Nun wollte ich mir eben die BID- und ASK-Kurse ALLER Instrumente in meiner Übersichtstabelle anzeigen lassen. Um dies zu realisieren, ist es natürlich von Vorteil, wenn ich innerhalb einer Formel einen Zellbezug zur richtigen Zelle in Spalte B herstelle und dann, wie in Excel üblich, einfach nach unten ziehe. Also angenommen in Zelle B5 steht das Instrument AUDCAD. Möchte ich nun in Zelle P5 den BID-Preis zu AUDCAD anzeigen lassen, so ist die folgende Syntax erforderlich: ='MT4'|BID!AUDCAD. Also dachte ich mir, dass ich in P5 ebenso schreiben könnte: ='MT4'|BID! & A5. Oder wie Wall-Nuss vorschlug: ='MT4'|BID! & INDIREKT("A5"). Dann bräuchte ich P5 bloß nach unten ziehen. In Spalte Q dann das Gleiche mit dem ASK-Preis.

 

So weit die Theorie. Denkste.

 

Mit VBA ging es dann aber doch.

 

So weit so gut. ABER bei den Indizes trat beim erneuten Start von Excel ein Fehler auf. Die Zeichenfolge _xlbgnm. schob sich in die Syntax zwischen BID und dem Symbol. Also dachte ich mir, dass die Zell-Werte von den Indizes bei jedem Start von Excel mit VBA neu geschrieben werden müssen, damit die Syntax wieder stimmt und die abgefragten Werte wieder richtig angezeigt werden. Das habe ich dann halt gleich für alle Werte so gemacht und fertig war meine Übersicht.

Please Login or Register to see this Hidden Content


Mir doch egal, was ich denke!

  #11
OFFLINE   forexler

unglaublich viel arbeit wird hier für ein einfaches copy paste reingesteckt, wie gesagt, rtf(m)



  #12
OFFLINE   Wall-Nuss

Danke Wall-Nuss. Genau so geht's. Jetzt habe ich es auch geschnallt. Der letzte Groschen ist gefallen. Fast peinlich das Ganze, aber manchmal braucht man einen Fingerzeig. Danke!

 

Gern geschehen :welldone:

 

Ich bin mir da nicht ganz sicher, wie du es umgesetzt hast. Eigentlich war es vorgesehen, die Funktion im Code-Bereich zu platzieren.

Danach schreibst du die Formel wie gewohnt in einer Excel-Zelle, in dem Fall:

 =ZellenWert(A5)

 

Danach kannst du die Zelle auch wie gewohnt Weiter kopieren. Mehr VBA wollte ich hier sonst keinem zumuten :-"

 

Aber sonst ist schön, wie viel du Arbeit in deine Sache damit investiert 8)

 

Update: Das Problem bei M$-Office ist die Programm-interne Verarbeitung von Daten, wobei der Datentyp nicht immer klar definiert ist, weil Objekte überall eingesetzt werden. Um sich nicht in diesen Problemen zu quählen, kann man die Sache so umgehen und selbst eine Funktion mit eine klaren Datentyp zu nutzen. Das mein Vermutung zunächst. Ich bin mir noch nicht sicher ob es geht. Anderenfalls muss die Funktion noch angepasst werden.

 

Update2: Das Ganze muss auch mit normalen Excel-Funktionen irgendwie gelöst werden. Leider habe ich hier kein Excel kann ich also nichts Testen. Und wie ich schon erwähnt habe, mein Spezialgebiet ist Programmierung, da braucht man Excel nur bedingt. Habe jedoch schon einige Excel-Tabellen gesehen, die mit hunderten von Wenn-Dann Funktion "ausgefüllt" waren. Da wundert man sich manchmal, wie sonst "effektiv" Excel genutzt werden kann Thumbs%20Up.png


Bearbeitet von Wall-Nuss, 21 March 2014 - 19:57 Uhr,


  #13
OFFLINE   SuchAndEasy

Gern geschehen :welldone:

 

Ich bin mir da nicht ganz sicher, wie du es umgesetzt hast. Eigentlich war es vorgesehen, die Funktion im Code-Bereich zu platzieren.

Danach schreibst du die Formel wie gewohnt in einer Excel-Zelle, in dem Fall:

 

...

 

Hallo Wall-Nuss!

 

Dies funktioniert leider so nicht. Aber durch Deine Idee bin ich letztlich auf die Lösung gekommen. Warum es mit der selbstgemachten Funktion nicht geht, ist wahrscheinlich der gleiche Grund wie ohne VBA. Ich schätze mal, dass der DDE-Server eben genau diese einzigartige Syntax als Befehl erwartet. Dieses ist scheinbar nicht dynamisch zu bewerkstelligen.

 

Ich habe es so umgesetzt, dass VBA den erforderlichen Befehl für den DDE-Server in der erforderlichen Syntax in die Zelle schreibt, genauso wie es geschrieben werden muss. So ging es dann halt.

Also danke nochmal. Ich weiß produktive Kommentare sehr zu schätzen. Es geht ja nicht zuletzt um den Austausch und die Tatsache, dass jeder noch was dazu lernen kann.

 

 

@forexler

425 Instrumente je einen BID- und einen ASK-Wert = 850 Mal copy&paste; und dann auch noch an der richtigen Stelle in der Zelle, also im Editiermodus

Na viel Spaß dabei. Mach das mal und stoppe die Zeit. Und wenn Du noch weitere Werte haben möchtest, wohlgemerkt für alle Instrumente (die Sinnhaftigkeit spielt dabei jetzt keine Rolle, jedem das Seine), dann nochmal 425 Mal copy&paste.

 

Ich schreibe dann bloß noch eine Zeile in meine Select ... Case - Abfrage. Damit habe ich dann zehn Zeilen Code und keine 1275 Male copy&paste.

 

Na ja, jedem das Seine.

 

Weißt Du, es geht mir persönlich ja nicht nur um die Werte in Excel, sondern um das Problem der Lösung an sich. Ist es irgendwann noch einmal erforderlich dieses Problem zu lösen, dann schreibe ich meine paar Zeilen Code und brauche dafür nicht einmal fünf Minuten, wie Du schon sagtest, copy&paste. :welldone:

 

Und die Lösung meines Problems habe ich hier dargelegt, weil ich es selbst immer sehr schade finde, wenn der TO alle anderen nicht an der Problemlösung teilhaben lässt. Außerdem freut sich jemand mit dem gleichen Problem eine Lösung zu finden, auch wenn er nur still mitliest und nichts schreibt, ja vielleicht sogar irgendwann auch mal Du.

 

 

Servus!

 

 

 

...

 

Update2: Das Ganze muss auch mit normalen Excel-Funktionen irgendwie gelöst werden. Leider habe ich hier kein Excel kann ich also nichts Testen. Und wie ich schon erwähnt habe, mein Spezialgebiet ist Programmierung, da braucht man Excel nur bedingt. Habe jedoch schon einige Excel-Tabellen gesehen, die mit hunderten von Wenn-Dann Funktion "ausgefüllt" waren. Da wundert man sich manchmal, wie sonst "effektiv" Excel genutzt werden kann Thumbs%20Up.png

 

 

Update1 zu Deinem Update2:

Genau die Effektivität von Excel macht es meiner Meinung nach auch erforderlich über den Tellerrand von Excel hinaus zu schauen und sich mit VBA zu beschäftigen. Denn da wo Excel aufhört, fängt VBA erst an. Selbst 425 Mal copy&paste läst sich mit einem Dreizeiler lösen, dauert keine Minute. Auch schon die restriktive bedingte Formatierung von Excel findet seine Ergänzung in VBA, wo mehr als drei Bedingungen programmierbar sind. Schließlich möchte ich sagen, dass Excel mit Hilfe von VBA wirklich effektiv sein kann.


Mir doch egal, was ich denke!



Similar Topics

  Thema Eröffnet von Statistik Letzter Beitrag




0 Benutzer lesen gerade dieses Thema

0 Mitglieder, 0 Gäste, 0 anonyme Nutzer