再续发一交易系统 [开拓者 TB]
- 咨询内容:
If(BarStatus==2)
{
If(curProfit>maxProfit) maxProfit=curProfit;
If(curProfit<maxLoss) maxLoss=curProfit;
}
Else
{
If(tradState==1)
{
If((High-tradCost)>maxProfit) maxProfit=(High-tradCost);
If((Low-tradCost)<maxLoss) maxLoss=(Low-tradCost);
}
If(tradState==-1)
{
If((tradCost-Low)>maxProfit) maxProfit=tradCost-Low;
If((tradCost-High)<maxLoss) maxLoss=tradCost-High;
}
}
//平多反空
If(tradState==1 And sc And tradNum<maxTrad And Time>=0.0001*tradBegin And Time<=0.0001*tradEnd)
{
if(BarStatus==2)tradePrice= Q_BidPrice -splitDot; Else tradePrice=Open-splitDot;
If(SellShort(maxLots,tradePrice))
{
tradMem="平多反空-"+Text(tradePrice);Commentary(tradMem);
SetTBProfileString(pKey,pKeyTradProve,Text(1));
SetTBProfileString(pKey,pKeyTradState,Text(-1));
SetTBProfileString(pKey,pKeyTradCost,Text(tradePrice));
SetTBProfileString(pKey,pKeyTradNum,Text(1+tradNum));
SetTBProfileString(pKey,pKeyTradIdx,Text(CurrentBar()));
maxProfit=0;
maxLoss=0;
curProfit=0;
}
}
//平空反多
If(tradState==-1 And bc And tradNum<maxTrad And Time>=0.0001*tradBegin And Time<=0.0001*tradEnd)
{
if(BarStatus==2) tradePrice= Q_AskPrice +splitDot; Else tradePrice=Open+splitDot;
If(Buy(maxLots,tradePrice))
{
tradMem="平空反多-"+Text(tradePrice);Commentary(tradMem);
SetTBProfileString(pKey,pKeyTradProve,Text(1));
SetTBProfileString(pKey,pKeyTradState,Text(1));
SetTBProfileString(pKey,pKeyTradCost,Text(tradePrice));
SetTBProfileString(pKey,pKeyTradNum,Text(1+tradNum));
SetTBProfileString(pKey,pKeyTradIdx,Text(CurrentBar()));
maxProfit=0;
maxLoss=0;
curProfit=0;
}
}
tradCyc=(CurrentBar()-tradIdx);
tradMem="浮盈:"+Text(curProfit)+",最大浮盈:"+Text(maxProfit)+",仓期:"+Text(tradCyc);Commentary(tradMem);
dopos="";
//开仓BAR的处理
if(tradCyc==0)
{
}
//持仓BAR的处理
Else
if(tradCyc>0)
{
//开仓后第一根BAR的处理-应对bar走完后的信号消失问题**********************************************
if(tradCyc==1)
{
。。。。。
}
Else
dopos=DoPosition(tradState,tradCyc, curProfit, maxProfit, stopLoss, stopProfis,tracProfis,tracLoss,returnProfis,minProfis,maxHolds,closeTime);
} //位置=做位置 (持仓状态,持仓周期,持仓当前浮动盈亏,持仓最大浮盈,亏损大于于此值时止损, )
dopos=DoPosition(tradState,tradCyc,curProfit,maxProfit,stopLoss,stopProfis,tracProfis,tracLoss,returnProfis,minProfis,maxHolds,closeTime);
//统一的平仓处理-------------------------------------------------------------------------------------------
//这里提点个人的想法,大家讨论。
//楼主的框架是把所有的东西(开、平仓,止损,止盈,追踪止盈,固定值止盈,回撤止盈)都放在一个交易指令中,
//本人以为,这种大而全的结构,很不易于维护,调试等。
//何不把这些分开到多个交易指令中呢?
//比如说 开,平仓一个指令,止损一个指令,止盈一个指令,追踪止盈一个指令。
//这样分成多个模块好处是多多。
//在一个图表中,插入多个指令,就像搭积木,把不同的指令组合起来可以得到不同的策略。
//fish0451 作者回复:有道理!
if(Len(dopos)>2)
{
//处理交易价格,叫卖叫买价加上滑点,便于成交
if(BarStatus==2)
{
If(tradState==1) tradePrice= Q_BidPrice -splitDot;
If(tradState==-1) tradePrice= Q_AskPrice +splitDot;
}Else tradePrice=Close-tradState*splitDot;
//平多
If(tradState==1)
{
If(Sell(maxLots,tradePrice))
{
tradMem=dopos+":平多-"+Text(tradePrice);
SetTBProfileString(pKey,pKeyTradProve,Text(1));
SetTBProfileString(pKey,pKeyTradState,Text(0));
maxProfit=0;
maxLoss=0;
}
}
//平空
If(tradState==-1)
{
If(BuyToCover(maxLots,tradePrice))
{
tradMem=dopos+":平空-"+Text(tradePrice);
SetTBProfileString(pKey,pKeyTradProve,Text(1));
SetTBProfileString(pKey,pKeyTradState,Text(0));
maxProfit=0;
maxLoss=0;
}
}
Commentary(tradMem);
}
}
}
End - TB技术人员: DoPosition 没有定义啊,不能编译过去,能否把DoPosition函数给出来
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 262069696 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容