- 咨詢內容: 我使用
if(open > con1 and MarketPosition ==0)
{
buy(n,open);
}
這樣的模式來開倉,開倉成功后,還是會一直進到函數體中,也就是MarketPosition ==0還一直成立,怎么回事???MarketPosition 的值必須走完當前bar才更新嗎?我買入成功后,信號也出現了,信號也沒有消失,為什么MarketPosition 的值未更新?【id:穿堂風】
回復:MarketPosition 好像是下一個BAR才會更新值,簡單說,marketposition實盤不能用,只能用來測試【ID:文靜的獅子 】
- TB技術人員: Marketposition是下一根Bar才改變
- TB客服: 試寫如下代碼
- Begin
- If(close[1] >open[1])
- {
- FileAppend("d:\\marketpostion.log"," currentbar: "+text(currentbar)+ "|| 執行buy命令前的marketposition值: " +Text(marketposition));
- Buy(1,open);
- FileAppend("d:\\marketpostion.log"," currentbar: "+text(currentbar)+ "|| 執行buy命令后的marketposition值: " +Text(marketposition));
- }
- end
復制代碼得出信號如下圖:
123.png (4.52 KB, 下載次數: 3) 2012-7-30 22:49:10 上傳下載次數: 3
公式所寫日志記錄如下:
444.png (57.28 KB, 下載次數: 2) 2012-7-30 22:54:44 上傳下載次數: 2
綜上可得知:在本K線上,marketposition的初始值為0,在執行buy語句前為0,buy之后就會變為1。當前信號所在K線,每執行一次,marketposition都是從初始值0開始運行,buy之后變成1 。
周而復始,直到本K線的最后一個tick走完之后,將1的做為下一個K線的markeposition的初始參與計算 。
- 網友回復: Mark 這個需要學習
- 網友回復: 本帖最后由 shenpei715 于 2012-8-7 10:26 編輯
小米 發表于 2012-7-30 22:58
試寫如下代碼得出信號如下圖:
非常感謝,林老師!
不只提供了一個問題的答案,重要的是給出了一種排查出錯的思路方法。
|