新手求指點(diǎn)marketposttion的問題
作者:開拓者 TB 來源:cxh99.com 發(fā)布時(shí)間:2016年02月18日
- 咨詢內(nèi)容:
Params
Numeric teLength(16); // 離市周期 Trailing Exit Length,在15分鐘上用16表達(dá)為4小時(shí)K線的最低或最高價(jià)
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Vars
NumericSeries MACDValue;
NumericSeries AvgMACD;
Numeric MACDDiff;
Numeric ExitHighestPrice; // 離市時(shí)判斷需要的N周期最高價(jià)
Numeric ExitLowestPrice; // 離市時(shí)判斷需要的N周期最低價(jià)
BoolSeries Condition1;
BoolSeries Condition2;
NumericSeries duo;
NumericSeries kong;
NumericSeries yid;
NumericSeries yik;
Begin
MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
AvgMACD = XAverage(MACDValue,MACDLength);
MACDDiff = MACDValue - AvgMACD;
PlotNumeric("MACD",MACDValue);
PlotNumeric("MACDAvg",AvgMACD);
If (MACDDiff >= 0)
PlotNumeric("MACDDiff",MACDDiff,0,Red);
Else
PlotNumeric("MACDDiff",MACDDiff,0,Green);
PlotNumeric("零線",0);
Condition1 = CrossOver(MACDValue,AvgMACD); //金叉買進(jìn)
Condition2 = CrossUnder(MACDValue,AvgMACD); //死叉賣出
ExitLowestPrice = LowestFC(Low[1],teLength);
ExitHighestPrice = HighestFC(High[1],teLength);
If(MarketPosition!=0)
{
If(Condition1[1] && AvgMACD[1]<0 ) // 0線以下金叉開多
{
Buy(1,Open);
duo=ExitLowestPrice-50;
yid=(open-duo)*2+Open;
}Else If(Condition2[1] && AvgMACD[1]>0 ) //0線以上死叉開空
{
SellShort(1,Open);
kong=ExitHighestPrice+50;
yik=Open-(kong-Open)*2;
}
}
If(MarketPosition==1)
{
If(Open>=yid)
{
Sell(0,Open);
}Else
{
If(open<=duo)
{
Sell(0,Open);
}
}
}
If(MarketPosition==-1)
{
If(open<=yik)
{
BuyToCover(0,Open);
}Else
{
If(open>=kong)
{
BuyToCover(0,open);
}
}
}
End
這一段代碼中,為什么 有marketposition!=0這個(gè)條件,它就不開倉,去掉marketposition!=0就可以正常開倉。
- TB技術(shù)人員:
marketposition==0說明是沒有信號(hào)持倉的情況下。
marketposition!=0 是指已經(jīng)有信號(hào)持倉的情況下。
加上marketposition!=0的條件是指已經(jīng)有信號(hào)持倉后再去執(zhí)行相應(yīng)的指令。。
整個(gè)公式后面的指令也是判斷==1或==-1時(shí),即加倉的指令。。
那圖表上加載一個(gè)公式時(shí),一定是從0信號(hào)開始的。。在信號(hào)持倉為0時(shí)是不滿足你的任一開倉指令的。
自然,就一個(gè)信號(hào)也沒有了。
在公式里這個(gè)位置加上這個(gè)marketposition!=0的判斷明顯是不合理的。
- TB客服:
謝謝,版主老大,說明文件上沒寫這個(gè)。我改成==0了,沒問題了!