Numeric PaiXu(ArrayRef<String> contracts_Temp)
{
If(BarStatus <> 2)
{
Return 0;
}
Integer i_Temp;
For i_Temp = 0 To GetArraySize(contracts_Temp) - 1 //冒泡排序
{
Integer j_Temp;
For j_Temp = 0 To GetArraySize(contracts_Temp) - 2 - i_Temp
{
CodeProperty props_Temp_1;
CodeProperty props_Temp_2;
GetProperty(contracts_Temp[j_Temp], props_Temp_1);
GetProperty(contracts_Temp[j_Temp + 1], props_Temp_2);
If(props_Temp_1.strikePrice > props_Temp_2.strikePrice)
{
String s_temp = contracts_Temp[j_Temp];
ArrayErase(contracts_Temp, j_Temp, 1);
ArrayInsert(contracts_Temp, j_Temp + 1, s_temp);
}
}
}
//Print(DateTimeToString(SystemTimestamp));
//Print(sys);
//For i_Temp = 0 To GetArraySize(contracts_Temp) - 1
//{
//Print(contracts_Temp[i_Temp]);
//}
//Print(sys);
//Print("还剩 = " + Text(Date_Left) + "个交易日");
//Print(sys);
Return 0;
}
Numeric Options() //获取最近的期权
{
If(BarStatus <> 2)
{
Return 0;
}
Array<String> contracts;
GetSymbolContracts(SymbolType, ExchangeCode, Enum_CategoryOptions, contracts, -1);
Numeric K = FindFirstOf(Symbol_Temp, ".");
String Str_Temp = Left(Symbol_Temp, K);
Numeric i_Temp;
ArrayClear(contracts_C);
ArrayClear(contracts_P);
For i_Temp = 0 To GetArraySize(contracts) - 1
{
CodeProperty props;
GetProperty(contracts[i_Temp], props);
Numeric Date_Temp = GetOffsetTradingDay(SystemDateTime, props.expiredDateTime);
If(Date_Temp < 3)
{
Continue;
}
Date_Left = Min(Date_Left, Date_Temp);
If(Date_Left == Date_Temp)
{
Date_Last = props.expiredDateTime;
}
}
For i_Temp = 0 To GetArraySize(contracts) - 1
{
CodeProperty props;
GetProperty(contracts[i_Temp], props);
Numeric Date_Temp = GetOffsetTradingDay(SystemDateTime, props.expiredDateTime);
If(Date_Temp == Date_Left)
{
If(props.opType == 1)
{
ArrayPushBack(contracts_C, contracts[i_Temp]);
}
If(props.opType == 2)
{
ArrayPushBack(contracts_P, contracts[i_Temp]);
}
}
}
PaiXu(contracts_C);
PaiXu(contracts_P);
CodeProperty props;
GetProperty(contracts_C[0], props);
Numeric Numeric_Temp = props.strikePrice;
String Str_Temp0 = contracts_C[0];
String Str_Temp1 = StringReplace(Str_Temp0, "-", "");
Symbol_Temp = StringReplace(Str_Temp1, "C" + Text(Numeric_Temp), "");
Return 0;
}
Numeric XuZhi_N_Dang() //获取平值档位期权
{
If(BarStatus <> 2)
{
Return 0;
}
GetTick(Symbol_Temp, Tick_Symbol_Temp); //获取期货盘口
Numeric Temp_C = 10 ^ 10;
//Numeric Temp_P = 10 ^ 10;
Integer i_Temp;
For i_Temp = 0 To GetArraySize(contracts_C) - 1
{
CodeProperty props;
GetProperty(contracts_C[i_Temp], props);
Numeric strikePrice_Temp = props.strikePrice;
Numeric abs_Temp_C = Abs(strikePrice_Temp - Tick_Symbol_Temp.last);
If(Temp_C > abs_Temp_C)
{
Temp_C = abs_Temp_C;
strikePrice_N = props.strikePrice;
Symbol_C_N = contracts_C[i_Temp]; //平值看涨
}
//Print("strikePrice_N = " + Text(strikePrice_N));
//Print("Tick_Symbol_Temp.last = " + Text(Tick_Symbol_Temp.last));
}
For i_Temp = 0 To GetArraySize(contracts_P) - 1
{
CodeProperty props;
GetProperty(contracts_P[i_Temp], props);
Numeric strikePrice_Temp = props.strikePrice;
If(strikePrice_Temp == strikePrice_N)
{
Symbol_P_N = contracts_P[i_Temp]; //平值看跌
}
}
Return 0;
}
此时 GetTick(Symbol_C_N, Tick_C_N); 系统运行查看时间需要50-100毫秒不等,请教如何解决这个时延的问题,是函数体内哪里出了问题导致的么,还是交易所TICK发送机制的问题?