請(qǐng)版主老師幫忙看看問題何在
作者:開拓者 TB 來源:cxh99.com 發(fā)布時(shí)間:2014年02月05日
- 咨詢內(nèi)容:
本帖最后由 torowills 于 2013-12-5 18:53 編輯
Params
BOOL lastprofitabletradefilter(True);
Vars
NumericSeries ma1;
NumericSeries ma2;
boolSeries lastbuy(false);
boolSeries lastsell(false);
NumericSeries takeprofitset(10);
Numeric myentryprice;
Numeric myexitprice;
Numeric minpoint;
Begin
If(barstatus==0)
{
lastbuy=true;
lastsell=true;
}
Commentary("lastbuy="+iifstring(lastbuy,"true","False"));
Commentary("lastsell="+iifstring(lastsell,"true","False"));
minpoint=MinMove*PriceScale;
ma1=AverageFC(close,5);
PlotNumeric("MA1",ma1);
ma2=AverageFC(close,10);
PlotNumeric("MA2",ma2);
If(marketposition==0)
{ If(CrossOver(ma1[1],ma2[1]) && ((!lastprofitabletradefilter)or(lastbuy)))
{Buy(1,open);
lastbuy=False;
lastsell=true;
MyEntryPrice=open;}
if(crossunder(ma1[1],ma2[1]) && ((!lastprofitabletradefilter)or(lastsell)))
{SellShort(1,open);
lastsell=false;
lastbuy=True;
MyEntryPrice=open;}
}
if(marketposition==1)
{ if(high>=myentryprice+TakeProfitSet*minpoint)
{ myexitprice=myentryprice+TakeProfitSet*minpoint;
If(Open > MyExitPrice)
{MyExitPrice = Open;
Sell(0,MyExitPrice);
lastbuy=False;
lastsell=true;}
}else
{
if(CrossUnder(ma1[1],ma2[1]))
{Sell(0,open);
lastbuy=False;
lastsell=true;}
}
}
else if(marketposition==-1 )
{ If(Low <= MyEntryPrice - TakeProfitSet*MinPoint)
{ MyExitPrice = MyEntryPrice - TakeProfitSet*MinPoint;
If(Open < MyExitPrice)
{MyExitPrice = Open;
BuyToCover(0,MyExitPrice);
lastsell=false;
lastbuy=True;}
}else
{
if(CrossOver(ma1[1],ma2[1]))
{BuyToCover(0,open);
lastsell=false;
lastbuy=True;}
}
}
End
希望達(dá)到的效果是,5分鐘K線情況下,
5均線上穿10均線,開多,10跳止盈,(開倉后若下穿止損)。不管是止盈還是止損,不再開多,坐等開空
5均線下穿10均線,開空,10跳止盈,(開倉后若上穿止損)。不管是止盈還是止損,不再開空,坐等開多
請(qǐng)老師幫忙看看這模型編寫上有沒有什么問題,個(gè)人發(fā)現(xiàn)的問題如下,請(qǐng)老師幫忙修改
存在幾個(gè)問題:
1,編譯的時(shí)候跳出來4個(gè)邏輯錯(cuò)誤,
2,回溯:舉了能看得見的例子IF1312,12月3號(hào)15.00開空,為什么在9.15分滿足了10跳的利潤(rùn),為什么它沒止盈,反而到了9.35去止損了?
3, 回溯:舉了能看得見的例子IF1312, 12月4號(hào)9.35 明顯5均線上穿10均線,為什么沒開多?
本人新人再次希望得到老師的幫助與提點(diǎn)
- TB技術(shù)人員:
本帖最后由 jerrywind 于 2013-12-5 16:39 編輯
1,編譯的時(shí)候跳出來4個(gè)邏輯錯(cuò)誤
>>>>>這個(gè)只是警告信息,不是錯(cuò)誤信息,可以忽略;
if(high>=myentryprice+TakeProfitSet*minpoint)
>>>>>myentryprice<-該變量在沒有被賦值的情況下就被使用了,即該值為0,所以似乎止盈的情況從未被觸發(fā);做空時(shí)也是一樣的;
lastbuy和lastsell
>>>>>這兩個(gè)變量聲明成了數(shù)組,就是說在開倉后想保存是否可以再開多或者空的標(biāo)志(想用在 不管是止盈還是止損,不再開多/空,坐等開空/多),但是并沒有被用到過,例如lastbuy[1];所以這兩個(gè)變量根本沒有起到數(shù)組的作用;
是想表達(dá)如下的意思嗎?
/*lastbuy=True;
lastsell=true;
*/
if (not (lastbuy || lastsell)) {//說明之前還從沒有產(chǎn)生過開倉信號(hào)
lastbuy=True;
lastsell=true;
} else {
lastbuy=lastbuy[1];
lastsell=lastsell[1];
}
NumericSeries takeprofitset(10);
>>>>> 聲明這個(gè)數(shù)組變量的意思是?是否是想聲明一個(gè)代表10個(gè)跳的變量?-----> Numeric takeprofitset(10);?
問題挺多的,沒法改,修改的量和重新編碼差不多,再仔細(xì)琢磨琢磨吧。
- TB客服:
if(high>=myentryprice+TakeProfitSet*minpoint)
>>>>>myentryprice<-該變量在沒有被賦值的情況下就被使用了,即該值為0,所以似乎止盈的情況從未被觸發(fā);做空時(shí)也是一樣的;-------------原文中的表達(dá)已經(jīng)做了修正,確實(shí)漏了
lastbuy和lastsell 抄襲了海龜中的 :
boolseries prebreakoutlaiure(false) 以及長(zhǎng)周期的開倉 if(marketposion==0 && ((lastprofitabletradefilter)or (prebreakoutfailure)))
希望在lastbuy在等于true的時(shí)候才去開多。
NumericSeries takeprofitset(10);
>>>>> 聲明這個(gè)數(shù)組變量的意思是?是否是想聲明一個(gè)代表10個(gè)跳的變量?-----> Numeric takeprofitset(10);?-------------這是從“交易策略進(jìn)階”中直接抄襲下來的
不過好像抄襲的出問題了,依舊不是很明白,問題出在了哪
- 網(wǎng)友回復(fù):
文華的麥語言我也試過了,不過總覺得沒有TB的適合個(gè)人,不過文華有人會(huì)出來幫大家解決問題,管理員們,我想你們上班一定也很辛苦,但好歹出來幫助一下像我這樣不是非常精通TB的人,畢竟TB要做的更大更好,需要更多的人,金字塔沒有了基層漲不高。我希望用TB做交易,為此做好了所有的準(zhǔn)備,只差策略代碼化,再次希望得到大家和管理員的幫助,謝謝
- 網(wǎng)友回復(fù):
望老師指點(diǎn) |