開(kāi)拓者止盈代碼
作者:開(kāi)拓者 TB 來(lái)源:cxh99.com 發(fā)布時(shí)間:2012年10月27日
- 咨詢(xún)內(nèi)容: 下面代碼的思路就是兩根均線(xiàn),金叉做多,死叉做空,價(jià)格盈利達(dá)到400點(diǎn)后,止盈價(jià) = 達(dá)到過(guò)的最高價(jià) — (達(dá)到過(guò)的最高價(jià) — 開(kāi)倉(cāng)價(jià)) * 0.5。
以TA為例,假設(shè)金叉開(kāi)多的價(jià)格為7000元,那么價(jià)格在達(dá)到7400后,比如價(jià)格最高到過(guò)7500,那么如果價(jià)格回落到 7500 - (7500 - 7000) * 0.5 = 7250元時(shí),平多止盈。
Params
Numeric longpara(30);
Numeric shortpara(10);
Numeric StopWin(0.5); //止盈系數(shù),最大盈利回吐該系數(shù)作為止盈價(jià)
Numeric WinPoint(400); //止盈起始值(以?xún)r(jià)格計(jì)算)
Vars
NumericSeries MAlong; //長(zhǎng)周期均線(xiàn)
NumericSeries MAshort; //短周期均線(xiàn)
Bool buycond;
Bool sellcond;
Numeric BuyOpen(100000); //多單開(kāi)倉(cāng)價(jià)
Numeric SellOpen(0); //空單開(kāi)倉(cāng)價(jià)
Numeric BuyStopWin(0); //多單止盈價(jià)
Numeric SellStopWin(0); //空單止盈價(jià)
Numeric OpenBar; //開(kāi)倉(cāng)K線(xiàn)的索引值
Numeric OpenCount; //當(dāng)前K線(xiàn)到開(kāi)倉(cāng)K線(xiàn)之間的個(gè)數(shù)
Numeric MostHigh; //開(kāi)倉(cāng)后達(dá)到過(guò)的最高價(jià)
Numeric MostLow; //開(kāi)倉(cāng)后達(dá)到過(guò)的最低價(jià)
Begin
MAlong = Average(Close, longpara);
MAshort = Average(Close, shortpara);
buycond = CrossOver(MAshort, MAlong);
sellcond = CrossUnder(MAshort, MAlong);
//止盈代碼
OpenCount = CurrentBar - GetGlobalVar(1); //計(jì)算開(kāi)倉(cāng)K線(xiàn)到當(dāng)前K線(xiàn)的個(gè)數(shù)
If(MarketPosition == 1)
{
MostHigh = Highest(High, OpenCount); //計(jì)算開(kāi)倉(cāng)后到當(dāng)前K線(xiàn)為止的最高價(jià)
If(MostHigh - GetGlobalVar(0) >= WinPoint) //開(kāi)倉(cāng)后最大浮盈(以?xún)r(jià)格計(jì)算)超過(guò)止盈起始值
{BuyStopWin = MostHigh - (MostHigh - GetGlobalVar(0)) * StopWin;} //計(jì)算止盈價(jià)格
If(Low <= BuyStopWin) //達(dá)到止盈條件時(shí)止盈
{Sell(0, Min(Open, BuyStopWin));}
}
If(MarketPosition == -1)
{
MostLow = Lowest(Low, OpenCount);
If(GetGlobalVar(0) - MostLow >= WinPoint)
{SellStopWin = MostLow + (GetGlobalVar(0) - MostLow) * StopWin;}
If(High >= SellStopWin)
{BuyToCover(0, Max(Open, SellStopWin));}
}
//止盈代碼結(jié)束
If(buycond)
{
Buy(0, Close);
SetGlobalVar(0, Close); //記錄開(kāi)倉(cāng)價(jià)
SetGlobalVar(1, CurrentBar); //記錄開(kāi)倉(cāng)K線(xiàn)位置
Return;
}
If(sellcond)
{
SellShort(0, Close);
SetGlobalVar(0, Close); //記錄開(kāi)倉(cāng)價(jià)
SetGlobalVar(1, CurrentBar); //記錄開(kāi)倉(cāng)K線(xiàn)位置
Return;
}
End