//------------------------------------------------------------------------
// 简称: DualMA
// 名称: 双均线交易系统
// 类别: 公式应用
// 类型: 内建应用
//------------------------------------------------------------------------
Params
Numeric FastLength(5);// 短期指数平均线参数
Numeric SlowLength(20);// 长期指数平均线参数
Vars
Series<Numeric> AvgValue1;
Series<Numeric> AvgValue2;
Events
OnReady()
{
SetBackBarMaxCount(1+Max(FastLength,SlowLength));
}
OnBar(ArrayRef<Integer> indexs)
{
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric(\"MA1\",AvgValue1);
PlotNumeric(\"MA2\",AvgValue2);
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
{
Buy(0,Open);
}
If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
{
SellShort(0,Open);
}
}
//------------------------------------------------------------------------
// 编译版本 GS2010.12.08
// 版权所有 TradeBlazer Software 2003-2025
// 更改声明 TradeBlazer Software保留对TradeBlazer平
// 台每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
大概思路:
设置一个全局变量
CurrentEntryLots 记录当日开仓手数
判断当前交易 是否 是当日
用TrueDate
if(TrueDate != TrueDate[1])
CurrentEntryLots = 0;//每天重置
if (开仓)
CurrentEntryLots = 开仓手数;
如果持仓量大于当日开仓 说明有昨仓
触发平仓时
IF( 图层持仓量-当日开仓量) 》 0
平仓 图层持仓量-当日开仓量
if( Date>LastEntryDate) //当日不能平仓
{ If
Buy
If
SellShort
}
Return;
不太困难
没有设置当天不平仓这种选项,达成这种目标是必须要写代码处理的。
处理这种业务的时候要考虑的东西很多,如果当天日内出现了平仓条件,但是由于日内不平仓导致仓没平掉,那么这些仓要在什么时候平呢?
并不是设置一下就能解决的问题,需要好好考虑引发的其他问题
谢谢