andrewhlleung 發表於 16-2-19 16:00

AFL 如何知在同一股已有BUY

AFL 如何知在同一股已有BUY過

keymaker 發表於 16-2-21 20:05

這位大德..您應該舉個例子.. 讓別人更了解您的問題..

lwhuang 發表於 16-2-22 09:37

你是要用做實際交易用的吧
我的做法是寫一個設定檔

andrewhlleung 發表於 16-2-22 17:11

e.g.
Buy = Close>MA(20) AND {未持有BUY過這股}

lwhuang 發表於 16-2-24 07:59

本帖最後由 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的特有格式中,不好亂改,要寫程式改


andrewhlleung 發表於 16-2-24 20:45

        position = StaticVarGet(Name()+"_position");
        Buy = Cross(Close,MA(20)) AND !position
        StaticVarSet(name()+"_position", Buy, true);

請問係咪咁?

lwhuang 發表於 16-2-25 08:23

andrewhlleung 發表於 16-2-24 20:45
position = StaticVarGet(Name()+"_position");
        Buy = Cross(Close,MA(20)) AND !position
        StaticVarSet ...

那是粵式中文嗎?看不懂耶
簡體還看得懂,粵式中文完全看不懂

andrewhlleung 發表於 16-2-25 09:00

請問係咪咁? <————請問是否這樣寫?

lwhuang 發表於 16-2-25 11:00

andrewhlleung 發表於 16-2-25 09:00
請問係咪咁?

差不多就是這樣
第一次StaticVarGet可能需要initial value

andrewhlleung 發表於 16-2-25 15:11

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);
               
我這樣做. 但發現仍是不停同一隻股票買入.

lwhuang 發表於 16-2-26 10:09

我前提是這是實際交易上用的,不是回測用的,你是在實際交易上這樣還是不行?

andrewhlleung 發表於 16-2-26 10:24

明白, 我是用在SCAN.

andrewhlleung 發表於 16-2-26 10:24

請問有無方法可以在SCAN時用?

magier 發表於 16-2-27 00:15

感覺你想做到的是移除多餘的買入/賣出訊號

如果是可以用

Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);

來清理excessive signals

amibroker 發表於 16-3-31 19:53

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]
查看完整版本: AFL 如何知在同一股已有BUY