語法

  •   674 
  • 最後發表   KEEPLEARNING  2024 十二月 16
KEEPLEARNING 發文於   2024/10/17

我是新手請多指教

我要寫一個自動交易策略:

期指要以1分K棒收盤價站上5MA時進場做多,然後持倉到收盤價跌破5MA時平倉,同時反向做空。反之就是1分K棒收盤價跌破5MA時進場做空,然後持倉到收盤價站上5MA時平倉,同時反向做多。

請問上面這個策略要使用到那些XS語法?  這些語法在哪裡可以看到? 有類似我想要寫的策略的現有程式案例供參考嗎?

謝謝

 

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/10/17

value1=average(c,5);

condition1=c cross over value1;

condition2=c cross under value1;

if position<=0 and condition1 then setposition(1);

if position>=0 and condition2 then setposition(-1);

KEEPLEARNING 發文於   2024/10/17

十分感謝教授的指導

試試看 ,進一步有甚麼疑問再請教

KEEPLEARNING 發文於   2024/10/18

教授您好

我試著模擬跑了一下您給我的程式

有些問題請教 :

1,好像1分K的價位(還沒到當根1分K棒收盤的時間)只要當時價位高過即時計算的5MA,就丟出指令觸價買進,而不是等這1K棒收盤時的價位確定已經高於5MA(這時也是收盤的價位)才立刻即時丟出指令觸價買進(這時應該是下1分K在開始動的時候的價位了),是不是這樣? 

所以我的程式要怎樣去修改呢? 

2,我猜想,可能是因為上述的情況,我發現有時候下指令買進或賣出後,價位已經到了該停利或停損的時候竟然沒有動作,過了一段時間才停損停利

3,所以,我猜想是不是要改成收盤站上或跌破的下一根K棒的開盤價去進場買賣

 

以上請教,謝謝

KEEPLEARNING 發文於   2024/10/18

教授您好

我試著模擬跑了一下您給我的程式

有些問題請教 :

1,好像1分K的價位(還沒到當根1分K棒收盤的時間)只要當時價位高過即時計算的5MA,就丟出指令觸價買進,而不是等這1K棒收盤時的價位確定已經高於5MA(這時也是收盤的價位)才立刻即時丟出指令觸價買進(這時應該是下1分K在開始動的時候的價位了),是不是這樣? 

所以我的程式要怎樣去修改呢? 

2,我猜想,可能是因為上述的情況,我發現有時候下指令買進或賣出後,價位已經到了該停利或停損的時候竟然沒有動作,過了一段時間才停損停利

3,所以,我猜想是不是要改成收盤站上或跌破的下一根K棒的開盤價去進場買賣

 

以上請教,謝謝

KEEPLEARNING 發文於   2024/10/18

這是今天早上跑的其中之一的圖檔,請參考

附加文件

KEEPLEARNING 發文於   2024/10/18

上面圖檔主要是

10:27:36 賣出 23687

應該下1分K就該停損了,結果到了10:42:27 才停損

 

 

 

 

 

虎科大許教授 發文於   2024/10/18

當啟動逐筆洗價,則每個Tick算出的指標會立即判斷是否有訊號。若希望每根K棒收盤才有訊號,則不要勾逐筆洗價。

KEEPLEARNING 發文於   2024/10/23

謝謝教授指點

 

我也試過不跑逐筆洗價,可是在盤中實測時還是同樣的問題

 

我用回測根盤中實測的結果,怎麼都是賠錢的次數多於賺錢的次數,好像不合邏輯。到底甚麼地方出問題?

 

 

 

我想可能需要再加上移動停利及固定停損去試試看。還有就是盤整盤時怎麼避開或如何設定暫停交易。

 

我有搜尋到教授的回應給人的文章中列出的移動停利的程式如下:

 

 

 

//移動停利的部份可撰寫如下:

 

input: profit_drawback_point(50,"停損點數");

 

var: profit(0), intraBarPersist max_profit_point(0);

 

if Position = 1 and Filled = 1 then 

 

    begin 

 

        { 判斷是否要啟動停利 } 

 

        profit = c - FilledAvgPrice;

 

        if profit > max_profit_point then max_profit_point=profit;

 

        if profit > 0 then 

 

            if c <= max_profit_point - profit_drawback_point then 

 

                begin 

 

                    { 停利 } 

 

                    SetPosition(0); 

 

                    max_profit_point = 0; 

 

                    profit = 0;

 

                end;

 

    end;

 

 

 

我可以直接整個套用進去嗎? 加在之前的程式後面嗎?

 

固定點位(可以調整的)停損又麼寫怎麼加入呢?

 

因為初學又事忙不夠時間學完整個教學又急著想有自動交易程式單幫忙去賺錢貼補家人治病及生活費用,非常感謝您的慷慨撥空指導

 

另外,教授可以建議我XQ現有的哪一個已經有設計好移動停利及停損的當沖及波段交易策略可以來跑跑看嗎? 

 

先謝謝您

 

虎科大許教授 發文於   2024/10/23

(1)我用回測根盤中實測的結果,怎麼都是賠錢的次數多於賺錢的次數,好像不合邏輯。到底甚麼地方出問題?

這很正常,你的策略欠缺很多東西,考慮不夠周延,像是沒有考慮到整個趨勢或大盤的方向,沒考慮到加碼或也沒考慮到盤整會被巴來巴去。

(2)可以直接整個套用進去嗎? 加在之前的程式後面嗎?

均線突破本身就是一種移動停利的策略,是否加入其他移動停利機制,見人見智。

(3)固定點位(可以調整的)停損又麼寫怎麼加入呢?

if position>0 and c-filledAvgPrice<10 then setposition(0); //做多時虧損10點認賠

if position<0 and c-filledAvgPrice>10 then setposition(0); //做空時虧損10點認賠

(4)以建議我XQ現有的哪一個已經有設計好移動停利及停損的當沖及波段交易策略可以來跑跑看嗎? 

爬爬文,多方搜集資料。要注意的是,別人寫的策略是否適合你。就算會賺錢的策略,可能並不適合你。還有,程式交易這條路很長,不要期待短期一蹴可幾。要下苦功,且要有耐心。特別是要願意投資自己,有機會的話,找有系統的課程學習。

KEEPLEARNING 發文於   2024/12/16

請問意下的程式為什麼是跑時停損10點沒動作?

 

value1=average(c,20);

 

condition1=c cross over value1;

 

condition2=c cross under value1;

 

if position<=0 and condition1 then setposition(1);

 

if position>=0 and condition2 then setposition(-1);

 

if position>0 and c-filledAvgPrice<10 then setposition(0); //做多時虧損10點認賠

 

if position<0 and c-filledAvgPrice>10 then setposition(0); //做空時虧損10點認賠

 

input: profit_drawback_point(20,"停損點數");

 

var: profit(0), intraBarPersist max_profit_point(0);

 

if Position = 1 and Filled = 1 then 

 

    begin 

 

        { 判斷是否要啟動停利 } 

 

        profit = c - FilledAvgPrice;

 

        if profit > max_profit_point then max_profit_point=profit;

 

        if profit > 0 then 

 

            if c <= max_profit_point - profit_drawback_point then 

 

                begin 

 

                    { 停利 } 

 

                    SetPosition(0); 

 

                    max_profit_point = 0; 

 

                    profit = 0;

 

                end;

 

    end;

 

 

顯示更多回應 發表回覆
Close