From: 阿政 固定金額停利停損: 當整體部位的最大獲利金額到達*10時,產生平倉所有部位的委託 setstopposition; SetProfitTarget(entryprice*10); 當個別部位的最大獲利金額到達*10時,產生平倉該個別部位的委託 setstopcontract; SetProfitTarget(entryprice*10); 當整體部位的最大虧損金額到達*10時,產生平倉所有部位的委託 setstopposition; setstoploss(entryprice*10); 當個別部位的最大虧損金額到達*10時,產生平倉該個別部位的委託 setstopcontract; setstoploss(entryprice*10); 固定百分比(%)停利停損: Value1= EntryPrice(0)*0.01*pointvalue; //以停損設在進場價的1%為例 setstopcontracts; setstoploss(Value1); 百分比停損 無法如所預期的運作的原因其實就在 EntryPrice(0) 的取得時間是在進場K棒的結束,而沒取得的時候...它拿了 0 來當做 EntryPrice。如果你打算使用日線的策略又想做好停損的控制,就會知道這個東西的重要性了。 既然問題出在 EntryPrice 取得的時間無法及時的話,只有走向打開 IntrabarOrderGeneration 一途了,也就是啟動 This bar 模式,但是如果在原始的策略理就直接打開 IOG 的話,恐怕程式的運作又會出現不是我這笨笨小腦袋所想的意外狀況,請參考:我在凱衛討論區提出的 IOG 疑問 為了要在已經發生進場但K棒尚未結束時及時取得 EntryPrice,開啟 IOG 成了必須。但是我不要讓原本的策略開啟 IOG,因此我就只好把進場價百分比停損的這個部分,另外做一個訊號,在這個部分開啟 IOG,而原始的策略則不開,同時避免 MC 在還沒取得 EntryPrice 的時候就拿個零來塞,如下: [IntrabarOrderGeneration = True]; Input:StopPercent(0.01); if EntryPrice(0)<>0 then begin Value1= EntryPrice(0)*StopPercent*PointValue; setstopcontract; setstoploss(Value1); end; 終於,我們得到這樣的效果了!進場的當根可以得到停損的控制,又不會亂搞。 百分比停損1 只是,只要圖表上所放的訊號,其中一個有開啟 IOG 的話,回測的時候務必開啟"細部回測",而要細部回測到 Tick 的話,你所擁有的電腦,恐怕就要夠力才不會讓人想哭了 XD 。
創作者介紹
創作者 FUTURE ATM 的頭像
David

FUTURE ATM

David 發表在 痞客邦 留言(0) 人氣( 1637 )