uniVocity/univocity-trader

Hope to support cross market Pairs trading

hlevel opened this issue · 4 comments

Hello, I've been following your trading framework for a long time

I find that the framework is very advantageous for trend trading, but it is not easy to handle the cross market hedging of a single strategy

e.g

Cross market hedging. Trading Pairs Binance btc_usdt,huobi btc_usdt

Cross market triangular hedging. Trading Pairs Binance btc_usdt,eth_usdt; huobi eth_btc

com.univocity.trader.strategy.Strategy#getSignal We need a pairs. We need a market order In this way, we can judge whether the three comparisons are profitable or not, and it is not necessary to use indicators comparison

Thanks!

jbax commented

Can you provide a sample of pseudocode demonstrating what you want to do? It seems you could solve this with multiple strategy implementations posting prices to a global aggregator of prices/market conditions for each pair in each exchange, then other strategies could simply read from that and determine what to do.

Sorry, I'll try your way again!

Excuse me. I studied the source code recently. I drew a rough picture about the system flow, The system does not support hedging strategy here
The system is now in a situation where a strategy can only read a single candle e.g btc_usdt
My thoughts is that a single strategy can read multiple candle at the same time e.g btc_usdt can also read eth_usdt, eth_btc
My buying signals depend on the other two markets e.g btc_usdt depends on eth_usdt and eth_btc
Do you have any good suggestions ?

jbax commented

The system receives as many pairs at the same time as you want it to. If you run the simple example here all candles will be received and processed in parallel (in the example, "BTC", "ETH", "XRP", "ADA" all paired with USDT)

A new strategy instance is created to run against each pair. All you have to do is to make sure all these instances have access to some sort of "central object" (like a static class or something) that they can query prices of other symbols from. The problem you are having is to write the code to do what you want, the framework itself doesn't prevent you from doing what you need.