Posted By: madpower2000
Instant execution of limit orders in HFT mode. - 02/06/23 18:22
I stumbled upon strange behaviour of Instant execution of limit orders in HFT mode.
If I placed a limit order with the correct price, it was executed immediately, but it must be pending.
I can’t figure out why it happened.
Should I set up some additional system variables?
Log output:
Code to reproduce:
If I placed a limit order with the correct price, it was executed immediately, but it must be pending.
I can’t figure out why it happened.
Should I set up some additional system variables?
Log output:
Code
Load Demo.csv [0] Demo 10:00:00.43200: Ask 990.00 => 990.00 989.00 [0] Demo 10:00:00.43200: Bid 980.00 => 990.00 10.00 >>[0] 990.000000:980.000000 Enter Long Demo Entry -50.000 at 10:00:00 (Demo::L) Long 1@940.00 Entry limit [Demo::L00002] Long 1@990.00 at 10:00:01 Com 0000 Mrg 10.00 Net 0 Units 10.0000 MTotal 0.00 MCost 10.0000 PCost 10.00000 Opn 0 [0] Demo 10:00:01.86400: Ask 980.00 => 980.00 10.00 [1] Demo 10:00:01.86400: Bid 970.00 => 980.00 10.00 >>[1] 980.000000:970.000000
Code to reproduce:
Code
#define TIME_FORMAT "%Y%m%d %H:%M:%S" function main() { seed(3); set(LOGFILE+PLOTNOW); Verbose = 7; MaxBars = 50; BarPeriod = 0.1/60.; Outlier = 0; assetList("Demo.csv",0); // assetAdd("Demo",0,0,0,0,1,10,0,1,1,0,"Demo.HFT"); Hedge = 2; Fill = 8; Slippage = 0; Lots = 1; var Quote = 1000.0; var TimeStamp = wdatef(TIME_FORMAT,"20200101 10:00:00"); int result; var BidPrice; while(Bar < MaxBars) { TimeStamp += 0.000005; Quote += sign(random()) * 10; BidPrice = Quote - 10; result = priceQuote(TimeStamp, Quote); if(!result) printf("\npriceQuote(AskPrice:%f) ERROR!", Quote); result = priceQuote(TimeStamp, -BidPrice); if(!result) printf("\npriceQuote(BidPrice:%f) ERROR!", BidPrice); plot("Ask", AskPrice, LINE, RED); plot("Bid", BidPrice, LINE, BLUE); printf("\n>>[%i] %f:%f", Bar, AskPrice, BidPrice); if((NumPendingTotal+NumOpenTotal)==0) { Entry = -50; enterLong(); } } exitLong(); exitShort(); }