請版主老師幫忙看看問題何在 [開拓者 TB]
- 咨詢內(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
希望達到的效果是,5分鐘K線情況下,
5均線上穿10均線,開多,10跳止盈,(開倉后若下穿止損)。不管是止盈還是止損,不再開多,坐等開空
5均線下穿10均線,開空,10跳止盈,(開倉后若上穿止損)。不管是止盈還是止損,不再開空,坐等開多
請老師幫忙看看這模型編寫上有沒有什么問題,個人發(fā)現(xiàn)的問題如下,請老師幫忙修改
存在幾個問題:
1,編譯的時候跳出來4個邏輯錯誤,
2,回溯:舉了能看得見的例子IF1312,12月3號15.00開空,為什么在9.15分滿足了10跳的利潤,為什么它沒止盈,反而到了9.35去止損了?
3, 回溯:舉了能看得見的例子IF1312, 12月4號9.35 明顯5均線上穿10均線,為什么沒開多?
本人新人再次希望得到老師的幫助與提點
- TB技術(shù)人員:
本帖最后由 jerrywind 于 2013-12-5 16:39 編輯
1,編譯的時候跳出來4個邏輯錯誤
>>>>>這個只是警告信息,不是錯誤信息,可以忽略;
if(high>=myentryprice+TakeProfitSet*minpoint)
>>>>>myentryprice<-該變量在沒有被賦值的情況下就被使用了,即該值為0,所以似乎止盈的情況從未被觸發(fā);做空時也是一樣的;
lastbuy和lastsell
>>>>>這兩個變量聲明成了數(shù)組,就是說在開倉后想保存是否可以再開多或者空的標志(想用在 不管是止盈還是止損,不再開多/空,坐等開空/多),但是并沒有被用到過,例如lastbuy[1];所以這兩個變量根本沒有起到數(shù)組的作用;
是想表達如下的意思嗎?
/*lastbuy=True;
lastsell=true;
*/
if (not (lastbuy || lastsell)) {//說明之前還從沒有產(chǎn)生過開倉信號
lastbuy=True;
lastsell=true;
} else {
lastbuy=lastbuy[1];
lastsell=lastsell[1];
}
NumericSeries takeprofitset(10);
>>>>> 聲明這個數(shù)組變量的意思是?是否是想聲明一個代表10個跳的變量?-----> Numeric takeprofitset(10);?
問題挺多的,沒法改,修改的量和重新編碼差不多,再仔細琢磨琢磨吧。 - TB客服:
if(high>=myentryprice+TakeProfitSet*minpoint)
>>>>>myentryprice<-該變量在沒有被賦值的情況下就被使用了,即該值為0,所以似乎止盈的情況從未被觸發(fā);做空時也是一樣的;-------------原文中的表達已經(jīng)做了修正,確實漏了
lastbuy和lastsell 抄襲了海龜中的 :
boolseries prebreakoutlaiure(false) 以及長周期的開倉 if(marketposion==0 && ((lastprofitabletradefilter)or (prebreakoutfailure)))
希望在lastbuy在等于true的時候才去開多。
NumericSeries takeprofitset(10);
>>>>> 聲明這個數(shù)組變量的意思是?是否是想聲明一個代表10個跳的變量?-----> Numeric takeprofitset(10);?-------------這是從“交易策略進階”中直接抄襲下來的
不過好像抄襲的出問題了,依舊不是很明白,問題出在了哪
- 網(wǎng)友回復:
文華的麥語言我也試過了,不過總覺得沒有TB的適合個人,不過文華有人會出來幫大家解決問題,管理員們,我想你們上班一定也很辛苦,但好歹出來幫助一下像我這樣不是非常精通TB的人,畢竟TB要做的更大更好,需要更多的人,金字塔沒有了基層漲不高。我希望用TB做交易,為此做好了所有的準備,只差策略代碼化,再次希望得到大家和管理員的幫助,謝謝
- 網(wǎng)友回復:
望老師指點
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容