移動停利語法

  •   3K 
  • 最後發表   Kelsier  2019 四月 25
Kelsier 發文於   2019/03/04

想請問XS有移動停利的語法嗎?

爬了一下文沒發現類似的語法,再麻煩指教,謝謝。

  

//進場

Value1 = average(close,5);

if close > Value1 the ret=1;

 

//出場

Value1 = average(close,5);

if close < Value1 the ret=1;

 

假設是這個樣子,收盤價>5ma買進(台指期,假設買在9500點);跌破5ma的時候出場。

但假設我希望進場後有移動停利的動作,例如賺30點後(即上漲至9530),將停損移至成本+2,不要等到真的跌破5ma才出場,這樣子該如何寫呢?

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2019/03/04

Hi Kelsier,

您好,在以下文章有介紹相關的語法,您可以參考後再嘗試改寫看看,

以上方向供您參考,謝謝:

使用策略雷達做到 KD金叉向上進場;KD死叉向下,且停損10點出場

Kelsier 發文於   2019/03/04

我參考了一下,試著將我上述的例子寫出來,寫法如下:

 

input : _BuyorSell(-1);

variable:forecast_dealprice(0);

value1=average(close,5);

 

if close > value1 then

   begin

       forecast_dealprice = close;

       if   _BuyorSell =1 then ret = 1;

   end;

 

if high > forecast_dealprice+30 then

   begin

     if close < value1 and _BuyorSell =0 or

     close <= forecast_dealprice +2 then ret =1;

   end;

 

再麻煩小幫手幫我檢查一下,這樣的寫法是對的嗎?

我想表達的策略是:

收盤價大於5MA時買進,收盤價小於5MA時賣出。

但如果買進後,有一度拉高到進場點+30,不幸遇到回檔,能在進場點+2就出場(保利),不要等到跌破5MA才出場。

(簡單說就是,進場後只要盤中一度有到成本+30,最差就是成本+2出場,不然就是等到跌破5MA才出場)

 

另外想問,因為寫法都是以收盤價為操作依據,但有時候可能收完已經離應該出場的點(上述例子為成本+2)很遠,導致最後還是虧損出場,所以想問如果要改寫成"盤中只要有點到成本+2就出場",又該如何改寫呢?

XQ小幫手 發文於   2019/03/05

Hi Kelsier,

您好,謝謝您提供相關資訊,

請您提雷達匯出檔案,匯出時記得勾選包含自訂腳本,

以利小幫手指引您撰寫方向,謝謝。

 

P.S. 雖然您有提供程式碼,但檢驗過程中需要查看雷達相關設定匯出才能查看問題的原因。

Kelsier 發文於   2019/03/05

我沒有設定雷達,只是想詢問這樣的想法,這個寫法是不是對的?

XQ小幫手 發文於   2019/03/06

Hi Kelsier,

我沒有設定雷達,只是想詢問這樣的想法,這個寫法是不是對的?

您好,假設您的雷達設定都正確,那小幫手覺得這段程式碼可能會有問題

if close > value1 then
   begin
       forecast_dealprice = close;
       if   _BuyorSell =1 then ret = 1;
   end;

因為只要收盤價大於5MA時,forecast_dealprice 這個變數就會改變,

所以極有可能不會是當時的進場收盤價,而導致後續的停損停利計算有誤差,

故可能需要使用 Once 來判斷會比較恰當,這樣 forecast_dealprice 就不會一直變動,

再來,為了避免 Once 觸發在歷史資料K棒中,需要使用 GetInfo 函數,判斷在盤中時間才能執行 Once,

以上是小幫手淺見,供您參考,謝謝。

Kelsier 發文於   2019/03/06

請問once語法是甚麼意思呢?

可以舉個例說明嗎?不好意思對於程式語法不太熟悉......

為了簡化說明,假設例子為:收盤價突破5MA進場;跌破5MA且停損10點,這樣該怎麼寫?

因為我例子也是照您提供的語法改,不曉得哪裡有錯?再麻煩小幫手協助提供範例,謝謝。

XQ小幫手 發文於   2019/03/07

Hi Kelsier,

請問once語法是甚麼意思呢?

如以下連結 Once 函數網頁說明,有相關介紹,


 

收盤價突破5MA進場;跌破5MA且停損10點,這樣該怎麼寫?

您好,小幫手改寫後的盤中洗價警示腳本範例如下,以上方向供您參考,謝謝。

input: _BuyOrSell(1, "進/出場", inputkind:=Dict(["進場",1],["出場",0])), Length(5,"MA期數");

variable: MA(0), Forecast_DealPrice(0);

MA = average(close,Length);

once close cross above MA begin
        Forecast_DealPrice = close;
        if _BuyOrSell = 1 then ret = 1;
    end;

if close cross below MA and close < Forecast_DealPrice - 10 and _BuyOrSell = 0 then ret = 1

Kelsier 發文於   2019/03/07

您好,我按照您的腳本試著編譯進行回測,編譯沒有問題,但回測卻跑不出資料,再麻煩協助查看是哪裡設定錯誤了,謝謝

回測設定如下:

XQ小幫手 發文於   2019/03/11

Hi Kelsier,

您好,小幫手近日有修改相關語法撰寫出來,

但回測報告走勢圖感覺有些問題,已請相關人員查看,

待相關人員查看後,小幫手再向您說明,謝謝。

Kelsier 發文於   2019/03/11

再麻煩您了,謝謝!

顯示更多回應 發表回覆
Close