/**
Script to create simulated data
DolphinDB Inc.
DolphinDB server version: 2.00.10
Last modification time: 2023.12.25
*/

/**
* @ Function Name: genOneDayData
* @ Brief: Generate foreign exchange tick data for a specified market.
* @ Param rawCurrencyPair:Codes of currency pair
* @ Param rawBid:Bid price of currency pair
* @ Param date:Date
* @ Param market:Market
* @ return:A table of tick data
* @ Sample Usage:genOneDayData(rawCurrencyPair =  ["NZD/USD","USD/JPY"],Bids = [0.61114,143.984],date = 2023.06.01,market = `HKFEMT)
*/
def genOneDayData(rawCurrencyPair,rawBid,date,marketName)
{
	dataTable = table(1:0,`market`currencyPair`time`bid`bidVolume,[`SYMBOL,`SYMBOL,`TIMESTAMP,"DOUBLE","INT"])
    num = 0
    for(i in 0..(rawCurrencyPair.size() - 1))
	{
        market = take(marketName,172800)
		currencyPair = take(rawCurrencyPair[i],172800)
		time = concatDateTime(date,00:00:00.000 + 500*(0..(172800-1)))
		bid = norm(rawBid[i],0.1,172800)
		bidVolume = int(norm(5000000,500000,172800))
		t = table(market,currencyPair,time,bid,bidVolume)
		dataTable.append!(t)
	}
	return select * from dataTable order by time,currencyPair
}

// The real data copied from the official website of CFETS
currencyPair = ["NZD/USD","USD/JPY","USD/CHF","GBP/USD","EUR/JPY","CNY/THB","CNY/TRY","CNY/SEK","CNY/PLN","CNY/SAR","CNY/KRW","CNY/RUB","CAD/CNY","SGD/CNY","AUD/CNY","HKD/CNY","EUR/CNY","CNY/MXN","CNY/NOK","CNY/DKK","CNY/HUF","CNY/AED","CNY/ZAR","CNY/MYR","CHF/CNY","NZD/CNY","GBP/CNY","100JPY/CNY","USD/CNY"]
bids = [0.61114,143.984,0.89425,1.27282,157.7,4.904,3.60415,1.4865,0.56205,0.51888,180.72,11.5679,5.4696,5.3465,4.7983,0.92282,7.9141,2.365,1.4956,0.9407,46.746,0.50849,2.5687,0.644,8.0801,4.4165,9.198,5.0189,7.2262]

date = 2023.06.01
// Create HKFEMT tick data
HKFEMT_Tick = genOneDayData(currencyPair,bids,date,`HKFEMT)
// Create CFETS tick data
CFETS_Tick = genOneDayData(currencyPair,bids,date,`CFETS)

//Set thresholds
threshold = dict(currencyPair,bids + 0.08)