Zorro: Instant execution of limit orders in HFT mode.

Posted By: madpower2000

Zorro: Instant execution of limit orders in HFT mode. - 02/11/23 15:31

I stumbled upon Zorro's 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. This is a bug or a feature ?

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 this issue:
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();
}
Posted By: jcl

Re: Zorro: Instant execution of limit orders in HFT mode. - 05/15/23 13:38

This attempt is not only once, but twice doomed to fail. First, your script sends no limit order - for limit orders you need to set OrderLimit. But HFT simulation disables anyway all trade parameters and only enters directly at the most recent quote.
© 2024 lite-C Forums