程序循环一次后就不再继续循环,麻烦老师给改一下,先给解决这个问题,程序后续还会加入委托撤单的条件。
Params
Numeric Length1(5);
Numeric Length2(90);
Numeric jiaoyishoushu(1); //建仓数量
Numeric WinStopLength(2); //平仓跳数
Vars
Global Integer sendCount(0); //变量
Global Integer fillCount(0); //变量
Numeric mairuPrice; //多单开仓价
Numeric WinStopPrice; //多单平仓价
Series<Numeric> EMAValue1;
Series<Numeric> DbEMAValue1;
Series<Numeric> TEMAValue1;
Series<Numeric> EMAValue2;
Series<Numeric> DbEMAValue2;
Series<Numeric> TEMAValue2;
Events
OnReady()
{
//根据操作源订阅委托
Bool ret = A_SubscribeTradeByCreateSource(A_GetOrderCreateSource);
Print("A_SubscribeTradeByCreateSource:" + IIFString(ret, "True", "False"));
}
OnBar(ArrayRef<Integer> indexs)
{
//计算三重平滑均线
Range[0:DataSourceSize() - 1]
{
EMAValue1 = XAverage(Close,Length1);
DbEMAValue1 = XAverage(EMAValue1,Length1);
TEMAValue1 = XAverage(DbEMAValue1,Length1);
EMAValue2 = XAverage(Close,Length2);
DbEMAValue2 = XAverage(EMAValue2,Length2);
TEMAValue2 = XAverage(DbEMAValue2,Length2);
PlotNumeric("EMA1",TEMAValue1);
PlotNumeric("EMA2",TEMAValue2);
}
if(BarStatus == 2 && sendCount == 0 && Q_Last > TEMAValue1 ) //如果(当前bar为最后一根bar & 变量sendCount = 0 && 最新价 > 均线1 )
{
//发开仓单
mairuPrice = TEMAValue1 - (WinStopLength*MinMove*PriceScale);
Array<Integer> orders; //整数型变量名称
//账户下单操作
Bool ret = A_SendOrderEx(Enum_Buy, Enum_Entry, jiaoyishoushu, mairuPrice, orders, "", A_GetOrderCreateSource); //布尔型变量ret=账户下单(买入,开仓,1手,最新买盘价格,变量名称,将数组转为字符串,获取报单源名称
Print("Buy,A_SendOrderEx:" + IIFString(ret, "True", "False") + "," + TextArray(orders)); //提示信息(多头建仓是否成功)
if(ret)
{
sendCount = sendCount + 1;
}
}
if(BarStatus == 2 && sendCount > 0 && sendCount <= fillCount ) //如果(当前bar为最后一根bar && 变量sendCount > 0 && 变量sendCount <= 变量fillCount)
{//发平仓单
WinStopPrice = TEMAValue1 + (WinStopLength*MinMove*PriceScale);
Array<Integer> orders;
//账户下单操作
Bool ret = A_SendOrderEx(Enum_Sell, Enum_Exit, jiaoyishoushu, WinStopPrice, orders, "", A_GetOrderCreateSource); //布尔型变量ret=账户下单(卖出,平仓,1手,最新卖盘价格,变量名称,将数组转为字符串,获取报单源名称
Print("Sell,A_SendOrderEx:" + IIFString(ret, "True", "False") + "," + TextArray(orders)); //提示信息(多头平仓是否成功)
sendCount = -1;
}
}
OnFill(FillRef ordFill)
{
fillCount = fillCount + 1;
Print("fillCount:" + Text(fillCount));
}
完整模型结构分析,要么付费代写业务,要么看置顶直播投稿