Ich habe begonnen, q/KDB seit einer Weile zu lernen, deshalb verzeihen Sie mir im Voraus für triviale Frage, aber ich bin mit dem folgenden Problem konfrontiert, ich weiß nicht, wie zu lösen .Wie man Typ F in einer Tabelle in Q/KDB behandelt
Ich habe eine Tabelle "res" zeigt, Seite, Summierung von Aufträgen und average_price einiger Simbols namens
sym side | sum_order avg_price
----------| -------------------
ALPHA B | 95109 9849.73
ALPHA S | 91662 9849.964
BETA B | 47 9851.638
BETA S | 60 9853.383
mit diesen Typen
c | t f a
---------| -----
sym | s p
side | s
sum_order| f
avg_price| f
I enge und offene Positionen berechnen möchten , Durchschnittspunkt, der durch die enge Position und den Durchschnittspreis der offenen Position gebildet wird.
ich diese Abfrage verwendet haben, die ich glaube, es ist ziemlich bizarr ist (ich bin sicher, es wird eine professionelle Art und Weise, es zu tun), aber es funktioniert wie
erwartetposition_summary:select
close_position:?[prev[sum_order]>sum_order;sum_order;prev[sum_order]],
average_price:avg_price-prev[avg_price],
open_pos:prev[sum_order]-sum_order,
open_wavgprice:?[sum_order>next[sum_order];avg_price;next[avg_price]][0]
by sym from res
mir die folgende Tabelle geben
sym | close_position average_price open_pos open_wavgprice
----------| ----------------------------------------------------
ALPHA | 91662 0.2342456 3447 9849.73
BETA | 47 1.745035 -13 9853.38
und Typen sind
c | t f a
--------------| -----
sym | s s
close_position| F
average_price | F
open_pos | F
open_wavgprice| f
Nun mein Problem hier beginnt, stelle ich mir po beitreten sition_summary Tabelle mit einer anderen Tabelle anfügen eine andere Spalte "current_price" des Typs f
Was ich tun möchte, ist die Punkte der offenen Positionen zu bestimmen.
Ich habe auf diese Weise versucht:
select
?[open_pos>0;open_price-open_wavgprice;open_wavgprice-open]
from position_summary
aber ich habe ‚Typ Fehler,
sicher, weil sum_order Typ F ist und open_wavgprice und CURRENT_PRICE sind f. Ich habe im Internet gesucht, indem ich nicht viel über F-Typ gefunden habe.
Erstens: Wie kann ich damit umgehen? Ich habe versucht, "caste" oder "raze" zu benutzen, aber keine Effekte und außerdem bin ich nicht sicher, ob sie bei dieser besonderen Gelegenheit richtig sind.
Zweitens: Gibt es eine bessere Möglichkeit, "Wenn-Dann" in Abfragetabellen zu verwenden (z. B. in Plain English: Wenn diese Zeile dieser Spalte dann die vorherige/nächste einer anderen Spalte oder die zweite oder dritte von vorherige/nächste Spalte)
Danke für Sie F
bedeutet die „Zelle“ in der Spalte enthält einen Vektor von Schwimmern, anstatt ein Atom
Eigentlich konvertiert Ihre erste Abfrage wirklich Spalten in Typ f, aber seltsames Verhalten zeigt nichts als eine leere Spalte. – Max