Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ interface TradeRepository : ReactiveCrudRepository<TradeModel, Long> {
startTime: Date?,
@Param("endTime")
endTime: Date?,
limit:Int
limit: Int
): Flow<TradeModel>

@Query("select * from trades where symbol = :symbol order by create_date desc limit :limit")
Expand All @@ -59,12 +59,14 @@ interface TradeRepository : ReactiveCrudRepository<TradeModel, Long> {

@Query(
"""
with first_trade as (select * from trades where create_date > :date order by create_date limit 1),
last_trade as (select * from trades where create_date > :date order by create_date desc limit 1)
select symbol,
(select taker_price from trades where create_date > :date and symbol=t.symbol order by create_date desc limit 1) - (select taker_price from trades where create_date > :date and symbol=t.symbol order by create_date limit 1) as price_change,
((((select taker_price from trades where create_date > :date and symbol=t.symbol order by create_date desc limit 1) - (select taker_price from trades where create_date > :date and symbol=t.symbol order by create_date limit 1))/(select taker_price from trades where create_date > :date and symbol=t.symbol order by create_date limit 1))*100) as price_change_percent,
(sum(matched_quantity)/sum(taker_price)) as weighted_avg_price,
(select taker_price from trades where create_date > :date and symbol=t.symbol order by create_date limit 1) as last_price,
(select matched_quantity from trades where create_date > :date and symbol=t.symbol order by create_date limit 1) as last_qty,
(select matched_price from last_trade where symbol=t.symbol) - (select matched_price from first_trade where symbol=t.symbol) as price_change,
((((select matched_price from last_trade where symbol=t.symbol) - (select matched_price from first_trade where symbol=t.symbol))/(select matched_price from first_trade where symbol=t.symbol))*100) as price_change_percent,
(sum(matched_quantity)/sum(matched_price)) as weighted_avg_price,
(select matched_price from last_trade where symbol=t.symbol) as last_price,
(select matched_quantity from last_trade where symbol=t.symbol) as last_qty,
(
select price from orders
join order_status os on orders.ouid = os.ouid
Expand All @@ -89,11 +91,11 @@ interface TradeRepository : ReactiveCrudRepository<TradeModel, Long> {
and executed_quantity = (select max(executed_quantity) from order_status where ouid = orders.ouid)
order by create_date desc limit 1
) as open_price,
max(taker_price) as high_price,
min(taker_price) as low_price,
max(matched_price) as high_price,
min(matched_price) as low_price,
sum(matched_quantity) as volume,
(select id from trades where create_date > :date and symbol=t.symbol order by create_date limit 1) as first_id,
(select id from trades where create_date > :date and symbol=t.symbol order by create_date desc limit 1) as last_id,
(select id from first_trade where symbol=t.symbol) as first_id,
(select id from last_trade where symbol=t.symbol) as last_id,
count(id) as count
from trades as t
where create_date > :date
Expand All @@ -104,12 +106,14 @@ interface TradeRepository : ReactiveCrudRepository<TradeModel, Long> {

@Query(
"""
with first_trade as (select * from trades where create_date > :date and symbol = :symbol order by create_date limit 1),
last_trade as (select * from trades where create_date > :date and symbol = :symbol order by create_date desc limit 1)
select symbol,
(select taker_price from trades where create_date > :date and symbol=:symbol order by create_date desc limit 1) - (select taker_price from trades where create_date > :date and symbol=:symbol order by create_date limit 1) as price_change,
((((select taker_price from trades where create_date > :date and symbol=:symbol order by create_date desc limit 1) - (select taker_price from trades where create_date > :date and symbol=:symbol order by create_date limit 1))/(select taker_price from trades where create_date > :date and symbol=:symbol order by create_date limit 1))*100) as price_change_percent,
(sum(matched_quantity)/sum(taker_price)) as weighted_avg_price,
(select taker_price from trades where create_date > :date and symbol=:symbol order by create_date limit 1) as last_price,
(select matched_quantity from trades where create_date > :date and symbol=:symbol order by create_date limit 1) as last_qty,
(select matched_price from last_trade) - (select matched_price from first_trade) as price_change,
((((select matched_price from last_trade) - (select matched_price from first_trade))/(select matched_price from first_trade))*100) as price_change_percent,
(sum(matched_quantity)/sum(matched_price)) as weighted_avg_price,
(select matched_price from last_trade) as last_price,
(select matched_quantity from last_trade) as last_qty,
(
select price from orders
join order_status os on orders.ouid = os.ouid
Expand All @@ -134,11 +138,11 @@ interface TradeRepository : ReactiveCrudRepository<TradeModel, Long> {
and executed_quantity = (select max(executed_quantity) from order_status where ouid = orders.ouid)
order by create_date desc limit 1
) as open_price,
max(taker_price) as high_price,
min(taker_price) as low_price,
max(matched_price) as high_price,
min(matched_price) as low_price,
sum(matched_quantity) as volume,
(select id from trades where create_date > :date and symbol=:symbol order by create_date limit 1) as first_id,
(select id from trades where create_date > :date and symbol=:symbol order by create_date desc limit 1) as last_id,
(select id from first_trade) as first_id,
(select id from last_trade) as last_id,
count(id) as count
from trades as t
where create_date > :date and symbol = :symbol
Expand Down Expand Up @@ -241,18 +245,18 @@ interface TradeRepository : ReactiveCrudRepository<TradeModel, Long> {
select
f.start_time as open_time,
f.end_time as close_time,
(select taker_price from trades tt where symbol = :symbol and tt.create_date >= f.start_time and tt.create_date < f.end_time order by tt.create_date limit 1) as open,
max(t.taker_price) as high,
min(t.taker_price) as low,
(select taker_price from trades tt where symbol = :symbol and tt.create_date >= f.start_time and tt.create_date < f.end_time order by tt.create_date desc limit 1) as close,
(select matched_price from trades tt where symbol = :symbol and tt.create_date >= f.start_time and tt.create_date < f.end_time order by tt.create_date limit 1) as open,
max(t.matched_price) as high,
min(t.matched_price) as low,
(select matched_price from trades tt where symbol = :symbol and tt.create_date >= f.start_time and tt.create_date < f.end_time order by tt.create_date desc limit 1) as close,
sum(t.matched_quantity) as volume,
count(id) as trades
from trades t
right join intervals f
on t.create_date >= f.start_time and t.create_date < f.end_time
where symbol = :symbol or symbol is null
group by f.start_time, f.end_time
order by f.start_time asc
order by f.start_time
limit :limit
"""
)
Expand Down Expand Up @@ -283,21 +287,23 @@ interface TradeRepository : ReactiveCrudRepository<TradeModel, Long> {

@Query(
"""
with first_trade as (select matched_price, symbol from trades where create_date > :since order by create_date limit 1),
last_trade as (select matched_price, symbol from trades where create_date > :since order by create_date desc limit 1)
select
symbol,
coalesce((select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date desc limit 1), 0.0) as last_price,
coalesce((select matched_price from last_trade where symbol = t.symbol), 0.0) as last_price,
coalesce(
max(
(select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date desc limit 1)
- (select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date limit 1)
(select matched_price from last_trade where symbol = t.symbol)
- (select matched_price from first_trade where symbol = t.symbol)
),
0.0
) as price_change,
coalesce(
(
(select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date desc limit 1)
- (select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date limit 1)
) / (select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date limit 1) * 100,
(select matched_price from last_trade where symbol = t.symbol)
-(select matched_price from first_trade where symbol = t.symbol)
) / (select matched_price from first_trade where symbol = t.symbol) * 100,
0.0
) as price_change_percent
from trades t
Expand All @@ -310,21 +316,23 @@ interface TradeRepository : ReactiveCrudRepository<TradeModel, Long> {

@Query(
"""
with first_trade as (select matched_price, symbol from trades where create_date > :since order by create_date limit 1),
last_trade as (select matched_price, symbol from trades where create_date > :since order by create_date desc limit 1)
select
symbol,
coalesce((select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date desc limit 1), 0.0) as last_price,
coalesce((select matched_price from last_trade where symbol = t.symbol), 0.0) as last_price,
coalesce(
max(
(select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date desc limit 1)
- (select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date limit 1)
(select matched_price from last_trade where symbol = t.symbol)
- (select matched_price from first_trade where symbol = t.symbol)
),
0.0
) as price_change,
coalesce(
(
(select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date desc limit 1)
-(select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date limit 1)
) / (select matched_price from trades where create_date > :since and symbol = t.symbol order by create_date limit 1) * 100,
(select matched_price from last_trade where symbol = t.symbol)
-(select matched_price from first_trade where symbol = t.symbol)
) / (select matched_price from first_trade where symbol = t.symbol) * 100,
0.0
) as price_change_percent
from trades t
Expand All @@ -337,15 +345,17 @@ interface TradeRepository : ReactiveCrudRepository<TradeModel, Long> {

@Query(
"""
with first_trade as (select matched_quantity as mq, symbol from trades where create_date > :since order by create_date limit 1),
last_trade as (select matched_quantity as mq, symbol from trades where create_date > :since order by create_date desc limit 1)
select
symbol,
coalesce(sum(matched_quantity), 0.0) as volume,
count(id) as trade_count,
coalesce(
(
(select matched_quantity from trades where create_date > :since and symbol = t.symbol order by create_date desc limit 1)
- (select matched_quantity from trades where create_date > :since and symbol = t.symbol order by create_date limit 1)
) / (select matched_quantity from trades where create_date > :since and symbol = t.symbol order by create_date limit 1) * 100,
(select mq from last_trade where symbol = t.symbol)
- (select mq from first_trade where symbol = t.symbol)
) / (select mq from first_trade where symbol = t.symbol) * 100,
0.0
) as change
from trades t
Expand All @@ -359,15 +369,17 @@ interface TradeRepository : ReactiveCrudRepository<TradeModel, Long> {

@Query(
"""
with first_trade as (select matched_quantity as mq, symbol from trades where create_date > :since order by create_date limit 1),
last_trade as (select matched_quantity as mq, symbol from trades where create_date > :since order by create_date desc limit 1)
select
symbol,
coalesce(sum(matched_quantity), 0.0) as volume,
count(id) as trade_count,
coalesce(
(
(select matched_quantity from trades where create_date > :since and symbol = t.symbol order by create_date desc limit 1)
- (select matched_quantity from trades where create_date > :since and symbol = t.symbol order by create_date limit 1)
) / (select matched_quantity from trades where create_date > :since and symbol = t.symbol order by create_date limit 1) * 100,
(select mq from last_trade where symbol = t.symbol)
- (select mq from first_trade where symbol = t.symbol)
) / (select mq from first_trade where symbol = t.symbol) * 100,
0.0
) as change
from trades t
Expand Down