您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

再续发一交易系统 [开拓者 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  点击在线交流进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容