私はq/KDBをしばらく学んだので、事前に些細な質問で私を許していますが、私は以下の問題に直面しています。解決方法はわかりません。Q/KDBのテーブルでF型を扱う方法
私はクローズとオープン位置を計算したい示す「RES」、側、注文の合計といくつかのsimbolsのaverage_priceこれらのタイプ
c | t f a
---------| -----
sym | s p
side | s
sum_order| f
avg_price| f
と
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
という名前のテーブルを持っています、平均ポイント、クローズポジションによって作成され、オープンポジションの平均価格。
私はそれはかなり奇妙であると信じて、このクエリを使用している(私は確信してそれを行うために、より専門的な方法があるでしょう)が、それは私に次の表
を与えるposition_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
を期待通りに動作します
sym | close_position average_price open_pos open_wavgprice
----------| ----------------------------------------------------
ALPHA | 91662 0.2342456 3447 9849.73
BETA | 47 1.745035 -13 9853.38
と種類が
c | t f a
--------------| -----
sym | s s
close_position| F
average_price | F
open_pos | F
open_wavgprice| f
ある今、私の問題はここから始まり、私はポーに参加想像sition_summaryテーブルに別のテーブルが追加され、タイプfの別の列「current_price」
オープンポジションのポイントを決定することを行います。 sum_orderはF型で、open_wavgpriceとCURRENT_PRICEはFであるため、確実に、
を
select
?[open_pos>0;open_price-open_wavgprice;open_wavgprice-open]
from position_summary
が、私は」タイプのエラーを得た:
私はこの方法を試してみました。私はFタイプについてあまり知りませんでしたので、インターネットで検索しました。
まず、どうすれば対応できますか?私は "キャスト"しようとしているか "レイズ"を使用していますが、効果はありません。さらに、彼らがこの特別な機会にぴったりなのかどうかはわかりません。
2番目:クエリテーブルで「if-then」を使用するより良い方法があります(たとえば、この列のこの行が別の列の前/次、または次の次/前の列)
あなたは
実際、最初のクエリでは列はfにタイプ変換されますが、奇妙な動作では空の列だけが表示されます。 – Max