You are not logged in.

janson

Professional

Posts: 1,306

Location: Bayern

Thanks: 97

  • Send private message

31

Wednesday, January 3rd 2007, 11:00am

RE: Excel-Formatierung negativer Zahlen als positive

Vielen Dank XY, aber jetzt kriege ich immer nur den Wert 0! :D

Also mein Problem ist eigentlich ganz einfach: In der besagten Zelle will ich mir die Stoppgröße anzeigen lassen, indem die Formel lautet =G4-H4. In die Zelle G4 gebe ich den Einstiegskurs ein, in H4 meinen IS. Nur ist je nachdem ob es ein Short oder Longtrade ist, das Ergebnis mal negativ mal positiv.

Ich bin nicht so ganz fit in Excel, aber man könnte das doch auch umgehen indem man eine wenn-dann funktion schreibt, oder? (wenn H4>G4 dann H4-G4)
Democracy is two wolves and a lamb voting on what to have for lunch.

xyxyber

Unregistered

30

Wednesday, January 3rd 2007, 9:58am

Excel-Formatierung negativer Zahlen als positive

Hauptmenü / Format / Zellen oder Kontextmenü / Zellen formatieren
/ Zahlen / Benutzerdefiniert / Typ / 0;0
oder mit Farben [Schwarz][<0]Standard;[Rot][>=0]

Grundsätzlich ist das Unterdrücken des Vorzeichens aber bedenklich, da es bei einer späteren Ansicht der Daten meist sehr verwirrend ist und schlimme Deutungsfehler hervorrufen kann.

janson

Professional

Posts: 1,306

Location: Bayern

Thanks: 97

  • Send private message

29

Tuesday, January 2nd 2007, 11:30pm

wie kann ich in excel eine zelle so formatieren, dass wenn ein negativer zahlenwert herauskommt dieser positiv wird?
Democracy is two wolves and a lamb voting on what to have for lunch.

trash

Resteverzehrer

Posts: 982

Thanks: 1275

  • Send private message

28

Monday, March 6th 2006, 11:23pm

Quoted

Original von Erik Nijkamp
Im MS Excel
Extras->Optionen->International->Dezimaltrennzeichen
Sonst kleines Skript mit Suchen&Ersetzen.

Beides ist im OpenOffice auch möglich.


thx für die schnelle hilfe, erik.

deine lsg mit dem ändern der dezimaltrennzeichen unter extras>optionen gibt es in open office nicht.
kann mich aber auch erinnern, dass es dies in ms excel "gab".

aber ich habe mittlerweile die lsg des problems gefunden und zwar unter bearbeiten>suchen&ersetzen, damit hat es geklappt. ;)

puh, gott sei dank. :]
"I'm a trader, baby. So, why don't you kill me?!"

Posts: 36

  • Send private message

27

Monday, March 6th 2006, 10:34pm

Im MS Excel
Extras->Optionen->International->Dezimaltrennzeichen
Sonst kleines Skript mit Suchen&Ersetzen.

Beides ist im OpenOffice auch möglich.

trash

Resteverzehrer

Posts: 982

Thanks: 1275

  • Send private message

26

Monday, March 6th 2006, 10:17pm

hi, ich habe ein eine exceldatenreihe zugeschickt bekommen mit ohlc index spalten

in der form:

datum uhrzeit xxxx,xx xxxx,xx xxxx,xx xxxx,xx volumen


wenn ich dies als csv datei ausgeben möchte, erhalte ich:

datum, uhrzeit, xxxx, xx, xxxx, xx, xxxx, xx, xxxx, xx, volumen


ist natürlich murks, denn ich möchte es folgendermaßen:

datum, uhrzeit, xxxx.xx, xxxx.xx, xxxx.xx, xxxx.xx, volumen


kann man das komma in excel umformatieren von xxxx,xx in xxxx.xx?

ich habe nichts gefunden.
habe nämlich nicht gerade sehr viel lust es einzeln manuell für jeden wert zu ändern.:(
kann natürlich gut möglich sein, dass ich an grauem star leide,
weil ich es nicht selber sehe oder gerade irgendwie aufm schlauch stehe. :D

ich nutze open office 2.0.

danke an den helfenden excelcrack. ;)
"I'm a trader, baby. So, why don't you kill me?!"

This post has been edited 1 times, last edit by "trash" (Mar 6th 2006, 10:21pm)


eric

Professional

  • "eric" started this thread

Posts: 1,472

Location: nähe Zürich

Occupation: Student

  • Send private message

25

Monday, January 9th 2006, 10:09am

Hi
Jetzt habe ich zum ersten mal OnData versucht, so wie es gepostet wurde, nur "RangeA1" habe ich natürlich angepasst.
Und es funktioniert!
Vielen Dank für die Hilfe. Vielleicht gibt es noch ein paar Dinge zum verfeinern, aber auf jeden Fall läuft es soweit.

ktrade

Unregistered

24

Monday, January 9th 2006, 9:24am

Alles klar, jetzt hab ich es kapiert! Du bist echt gut :)

Posts: 36

  • Send private message

23

Monday, January 9th 2006, 1:59am

Quoted

Original von ktrade
Ich hab schon zu Anfang gemutmasst, dass Excel Probleme haben wird der Datenflut Herr zu werden und denke es noch immer. Nur war ich optimistisch, weil Du unten geschrieben hat dass auch ein ereignisgesteuertes Datensammeln kein Problem sei ?(
ktrade

Wir diskutierten anfangs über das "Change" Event der Worksheet Klasse.
Hierbei wird bei einer Wertänderung in einer Zelle der korrospondierende
Zellenbezug in Form der Range übergeben, somit brauch die History nur
für diesen einen Wert aktualisiert werden - eine Komplexität von O(1).

Jedoch bei dem "OnData" Event fehlt eben dieser Zellenbezug und ohne
eine Zuordnung von jeweils einer Tabelle zu einem Kurs müssen alle
Kurswerte in die History bei jedem Tick eines einzelnen Kurses gespeichert
werden, also O(n). Nun wird das n wohl nicht sonderlich groß sein und
eventuell ist der Arbeitsaufwand für Excel akzeptabel. Aber die
Verschwendung der Rechenleistung oder eines Rechners nur zur Datensammlung ist dann doch schon extrem.

Wie gesagt, bei Tickdaten ist die 1 Kurs : 1 Tabelle Beziehung wohl sehr
sinnvoll, bei sekündlichen Daten würde ich den Timer verwenden.

Grüße
Erik

ktrade

Unregistered

22

Monday, January 9th 2006, 12:18am

Quoted

Original von Erik Nijkamp
Das OnData Event ist zwar elegant, aber bist du dir auch bewusst, das nun
bei jedem DDE Hotlink Event die Funktion aufgerufen wird? Wenn du die
Daten chronologisch ablegen willst, wird dieses jetzt bei jedem Tick durchgeführt
und ich vermute, dass Excel gerade bei Forex nicht sonderlich viel Chancen
bei der Abarbeitung hat.

OnData ist dokumentiert in der Msdn:
http://msdn2.microsoft.com/en-us/library…eet.ondata.aspx

Zudem werden bei OnData keine Zellenbezüge übergeben?
Also ist es wohl eher sinnvoll für für jeden Kurs ein Sheet zu verwenden,
wenn dur wirklich Tickdaten benötigst, ansonsten würde ich aus Performance
Gründen die sekündliche Timerlösung vorziehen.


Hi Erik Nijkamp,
so undokumentiert wie in dem anderen Forum geschrieben steht scheint das OnData-Ereignis doch nicht zu sein, danke für den Hinweis!
Ich hab schon zu Anfang gemutmasst, dass Excel Probleme haben wird der Datenflut Herr zu werden und denke es noch immer. Nur war ich optimistisch, weil Du unten geschrieben hat dass auch ein ereignisgesteuertes Datensammeln kein Problem sei ?(
eric schrieb ja zu Beginn des Threads, dass er Tickdaten sammeln möchte. Wenn Sekunden reichen, hast Du ja schon eine gute Lösung gepostet.
API-Lösung ist bei dieser Zielsetzung ein weiterer Unsicherheitsfaktor und für dieses Ziel nicht gut, da hast Du völlig recht!
Ciao
ktrade

Posts: 36

  • Send private message

21

Sunday, January 8th 2006, 11:06pm

API Funktionen im VBA benutzen ist nie sonderlich stabil und auch nur bei
einfachen Queries oder ähnliche Aufgaben ratsam.

Application.Wait(...) sollte ausreichend sein.

Das OnData Event ist zwar elegant, aber bist du dir auch bewusst, das nun
bei jedem DDE Hotlink Event die Funktion aufgerufen wird? Wenn du die
Daten chronologisch ablegen willst, wird dieses jetzt bei jedem Tick durchgeführt
und ich vermute, dass Excel gerade bei Forex nicht sonderlich viel Chancen
bei der Abarbeitung hat.

OnData ist dokumentiert in der Msdn:
http://msdn2.microsoft.com/en-us/library…eet.ondata.aspx

Zudem werden bei OnData keine Zellenbezüge übergeben?
Also ist es wohl eher sinnvoll für für jeden Kurs ein Sheet zu verwenden,
wenn dur wirklich Tickdaten benötigst, ansonsten würde ich aus Performance
Gründen die sekündliche Timerlösung vorziehen.

eric

Professional

  • "eric" started this thread

Posts: 1,472

Location: nähe Zürich

Occupation: Student

  • Send private message

20

Sunday, January 8th 2006, 10:27pm

Danke. Damit könnte ich mir sonst mit einer Schleife und Sleep einen einfachen Timer basteln, falls OnData nicht funktioniert.
Lol, ich habe immer das Gefühl meine Lösungen sind ziemlich primitiv. Aber Hauptsache es funktioniert, doch das muss es erst noch.

This post has been edited 1 times, last edit by "eric" (Jan 8th 2006, 10:28pm)


ktrade

Unregistered

19

Sunday, January 8th 2006, 10:24pm

Es müsste mit einem Aufruf der API Funktion "sleep"
2 Beispiele:
visual basic:
http://www.activevb.de/tipps/vb6tipps/tipp0099.html
vba
http://www.chf-online.de/api/sleep.htm

Eine andere Methode mit timer:
http://www.bygsoftware.com/Excel/VBA/pause.htm

Musst halt testen was geht. Für was willst Du ne Pause?

This post has been edited 1 times, last edit by "ktrade" (Jan 8th 2006, 10:25pm)


eric

Professional

  • "eric" started this thread

Posts: 1,472

Location: nähe Zürich

Occupation: Student

  • Send private message

18

Sunday, January 8th 2006, 9:57pm

Das Makro Sammeln ist sicher eleganter, nur habe ich es nicht verstanden.
Sobald wieder Kurse kommen, werde ich es probieren.

Noch eine Frage: Weisst du oder jemand anderes ob es möglich ist in den Code eine Pause einzufügen, also einen Befehl der das Programm während der Ausführung z.B. für 1 Sek. pausieren lässt?

ktrade

Unregistered

17

Sunday, January 8th 2006, 8:43pm

Wenn Dein Makro "WertKopieren" funktioniert und das ominöse OnData-Ereignis noch unterstützt wird, dann denke ich auf den ersten Blick, dass es klappen müsste. Probier es doch einfach aus!
Die Art und Weise des Makros "Sammeln" im ursprünglichen Code ist sicherlich eleganter und wahrscheinlich auch schneller, als der Umweg über die Zwischenablage?

eric

Professional

  • "eric" started this thread

Posts: 1,472

Location: nähe Zürich

Occupation: Student

  • Send private message

16

Sunday, January 8th 2006, 1:53pm

So, jetzt habe ich mal ein Makro gemacht, das die Aktion die ich brauche ausführt und es scheint zu funktionieren.
Die Zelle, deren Werte ich auflisten möchte ist Tabelle1, F7 und kopieren möchte ich die Werte nach Tabelle2 B5, B6, B7 usw. Jedes mal wenn Tabelle1, F7 einen neuen Wert annimmt.

Sub WertKopieren()
'
' WertKopieren Makro

Dim Shift As Long
Shift = 0
Sheets("Tabelle1").Select
Range("F7").Select
Selection.Copy
Sheets("Tabelle2").Select
Range("B5").Offset(Shift, 0).Select
ActiveSheet.Paste
Shift = Shift + 1

End Sub



Könnte ich das nun mit dem OnData Ereignis so kombinieren:

Sub SammelnStarten()
Worksheets("Tabelle1").OnData = "WertKopieren"
End Sub

Sub WertKopieren()
'
' WertKopieren Makro

Dim Shift As Long
Shift = 0
Sheets("Tabelle1").Select
Range("F7").Select
Selection.Copy
Sheets("Tabelle2").Select
Range("B5").Offset(Shift, 0).Select
ActiveSheet.Paste
Shift = Shift + 1

End Sub


??
Das ist das erste mal dass ich mich mit Makros und VBA beschäftige, darum habe ich noch nicht viel Ahnung davon.

This post has been edited 2 times, last edit by "eric" (Jan 8th 2006, 1:59pm)


eric

Professional

  • "eric" started this thread

Posts: 1,472

Location: nähe Zürich

Occupation: Student

  • Send private message

15

Tuesday, January 3rd 2006, 11:12am

RE: Excel+Trading

Werde ich machen

ktrade

Unregistered

14

Tuesday, January 3rd 2006, 11:06am

RE: Excel+Trading

Quoted


Sub SammelnStarten()
Worksheets("Tabelle1").OnData = "Sammeln"
End Sub


Sub Sammeln()
Dim intRow As Integer
With Worksheets("Tabelle2")
intRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(intRow, 1) = Now
.Cells(intRow, 2) = Worksheets("Tabelle1").Range("A1").Value
End With
End Sub


Sieht ja wirklich fast schon zu einfach aus, KISS halt ;)
Bin gespannt, ob das nicht mehr dokumentierte OnData-Ereignis noch mit neueren Excel-Versionen funktioniert, lass es mich bitte wissen. Bei Office2000 sollte es noch gegangen sein

Ciao
ktrade

eric

Professional

  • "eric" started this thread

Posts: 1,472

Location: nähe Zürich

Occupation: Student

  • Send private message

13

Tuesday, January 3rd 2006, 9:45am

RE: Excel+Trading

Danke KTrade! Genau das ist es, denke ich. Falls es noch unterstützt wird in Office 2003.
Meine Bücher für VBA habe ich noch nicht erhalten, danach kann ich loslegen.

ktrade

Unregistered

12

Tuesday, January 3rd 2006, 2:02am

RE: Excel+Trading

@eric
Ich räum grad meinen Saustall auf und da bin ich über einen Ausdruck über das Sammeln von DDE-Börsenkursen in Excel mit dem wohl nicht mehr dokumentierten OnData Erignis gestossen.

Falls es interessant für Dich ist, hier der Link:
http://www.herber.de/forum/archiv/12to16/t15181.htm

Ciao
ktrade