AFL 如何知在同一股已有BUY
AFL 如何知在同一股已有BUY過這位大德..您應該舉個例子.. 讓別人更了解您的問題.. 你是要用做實際交易用的吧
我的做法是寫一個設定檔 e.g.
Buy = Close>MA(20) AND {未持有BUY過這股} 本帖最後由 lwhuang 於 16-2-24 08:01 編輯
以下是用在實際交易中
如我前述,交易時你可以寫一個紀錄檔
fw = fopen(name()+"_position", "w");
if (fw)
{
fputs(NumToStr(TargetPosition, 1.0, False), fw);
fclose( fw );
}
判斷時
fr = fopen(name()+"_position", "r");
if (fr)
{
position=fgets(fr);
fclose(fr);
}
else
position=0;
另一招是用StaticVarSet persistent
交易時
StaticVarSet(name()+"_position", targetposition, true);
檢查時
position = StaticVarGet(Name()+"_position");
我比較喜歡寫檔的,因為可以自己開editor偷改,StativVarSet persistent也是寫檔,但是寫在ab的特有格式中,不好亂改,要寫程式改
position = StaticVarGet(Name()+"_position");
Buy = Cross(Close,MA(20)) AND !position
StaticVarSet(name()+"_position", Buy, true);
請問係咪咁? andrewhlleung 發表於 16-2-24 20:45
position = StaticVarGet(Name()+"_position");
Buy = Cross(Close,MA(20)) AND !position
StaticVarSet ...
那是粵式中文嗎?看不懂耶
簡體還看得懂,粵式中文完全看不懂
請問係咪咁? <————請問是否這樣寫? andrewhlleung 發表於 16-2-25 09:00
請問係咪咁?
差不多就是這樣
第一次StaticVarGet可能需要initial value
position = StaticVarGet(Name()+"_position");
Buy = Cross(Close,MA(Close,20)) AND !position;
Sell = Cross(MA(Close,20),Close) AND position;
StaticVarSet(name()+"_position", (Buy) AND (!Sell), true);
我這樣做. 但發現仍是不停同一隻股票買入. 我前提是這是實際交易上用的,不是回測用的,你是在實際交易上這樣還是不行? 明白, 我是用在SCAN. 請問有無方法可以在SCAN時用? 感覺你想做到的是移除多餘的買入/賣出訊號
如果是可以用
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
來清理excessive signals
StaticVarSet(name()+"_position", (Buy) AND (!Sell), true);
change as below:
StaticVarSet(name()+"_position", iif(buy,1,iif(sell,-1,0)));
// then you will know last order status, if position not == 1, then to place buy order.
頁:
[1]