我想設定當達到當日最高虧損上限 當日即不再建倉,
使用的方法是
而在建倉指令外面多加一個if
eg:
...
if today_pro>(-1000) then begin
建倉訊號和建倉指令
end;
但是我回測後發現,還是有當日已經達虧損上限卻又繼續建倉的情況,
請問我程式的邏輯哪裡出問題了?
謝謝。
呵呵
我自己找到問題出在哪了
不能直接接在 平倉後面
要接在if 迴圈外
我好像搞錯了,跑出來結果還是跟我想得不太一樣,
請問我直接在平倉指令後面接
today_pro=today_pro+positionprofit(1);
這個positionprofit(1) 會馬上更新嗎?
謝謝
以下提示,你想看看
換日時存下目前績效
出場或進場時,比較跟今日起始績效的差為多少
不好意思我不知道為什麼儲存的變數都會被洗掉(在run下一輪tick時),
我的測試code如下:
// value1 為當日累積損益
// value2 為上一個tick是否有平倉的真假值
print(value2); // 這一行是用來測試 value2有沒有存下來。
if value2=1 then begin
value1=value1+positionprofit(1);
value2=0;
if 出場條件 and 未平倉數不為零
出場;
value2=1; //表示有平倉出場
if 進場條件 and 未平倉數=0 and value1>可忍受最大虧損
進場;
這樣的情況下value2都是0,也就是就算有平倉,value2的值在跑下一次code時還是會歸零,
(我的認知是每一個tick 都會跑一次code)
但是如果把 print(value2); 移到最後一行,
則在 有平倉的tick那一run 就會是1,
所以我發現這樣沒有辦法去儲存變數(在run 不同的tick時),如 累積虧損 或是 今天以前的損益;
請問我的code問題出在哪裡?
因為每一個TICK內的變數都會重新繼承自前一根K棒
要用使用IBP 特殊變數,它才會繼承自前一個TICK
你可以去查 intrabarpersist 的應用看看網路上有沒有介紹,我想應該不多
我們是在高階課程才會教 IOG
因為IOG 模式的程式特性跟一般策略不同,要對系統架構有些許的了解,才比較能理解它的運作行為
謝謝您耐心的回答。