I am currently trying to write a crypto triangle arbitrage algorithm (testing out ETH/USD - BTC/USD here), and I cannot seem to get the order flow to work properly. 

My logic is to check the imbalance between ETHUSD and its synthetic (BTCUSD*ETHBTC), and to attempt to arbitrage the imbalance when it exists. For these trades to work, the trades from ETHUSD -> ETHBTC -> BTCUSD have to be executed sequentially as quickly as possible. 

I tried a couple of different ways of doing this, none of them worked very well. I am currently trying to leverage the OnOrderEvent method to create a waterfall of sorts. i.e. when the previous order gets 'filled', the next order executes, and so on. 

What I'm seeing is that the initial order for ETHUSD is filled, but the subsequent order to 'sell' is never triggered. I'm out of logs right now, so maybe there is something I can't see that is going on.

Author