再續(xù)發(fā)一交易系統(tǒng) [開拓者 TB]
- 咨詢內(nèi)容:
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)+",倉(cāng)期:"+Text(tradCyc);Commentary(tradMem);
dopos="";
//開倉(cāng)BAR的處理
if(tradCyc==0)
{
}
//持倉(cāng)BAR的處理
Else
if(tradCyc>0)
{
//開倉(cāng)后第一根BAR的處理-應(yīng)對(duì)bar走完后的信號(hào)消失問(wèn)題**********************************************
if(tradCyc==1)
{
。。。。。
}
Else
dopos=DoPosition(tradState,tradCyc, curProfit, maxProfit, stopLoss, stopProfis,tracProfis,tracLoss,returnProfis,minProfis,maxHolds,closeTime);
} //位置=做位置 (持倉(cāng)狀態(tài),持倉(cāng)周期,持倉(cāng)當(dāng)前浮動(dòng)盈虧,持倉(cāng)最大浮盈,虧損大于于此值時(shí)止損, )
dopos=DoPosition(tradState,tradCyc,curProfit,maxProfit,stopLoss,stopProfis,tracProfis,tracLoss,returnProfis,minProfis,maxHolds,closeTime);
//統(tǒng)一的平倉(cāng)處理-------------------------------------------------------------------------------------------
//這里提點(diǎn)個(gè)人的想法,大家討論。
//樓主的框架是把所有的東西(開、平倉(cāng),止損,止盈,追蹤止盈,固定值止盈,回撤止盈)都放在一個(gè)交易指令中,
//本人以為,這種大而全的結(jié)構(gòu),很不易于維護(hù),調(diào)試等。
//何不把這些分開到多個(gè)交易指令中呢?
//比如說(shuō) 開,平倉(cāng)一個(gè)指令,止損一個(gè)指令,止盈一個(gè)指令,追蹤止盈一個(gè)指令。
//這樣分成多個(gè)模塊好處是多多。
//在一個(gè)圖表中,插入多個(gè)指令,就像搭積木,把不同的指令組合起來(lái)可以得到不同的策略。
//fish0451 作者回復(fù):有道理!
if(Len(dopos)>2)
{
//處理交易價(jià)格,叫賣叫買價(jià)加上滑點(diǎn),便于成交
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技術(shù)人員: DoPosition 沒(méi)有定義啊,不能編譯過(guò)去,能否把DoPosition函數(shù)給出來(lái)
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 262069696 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容