如何取得進場價?

  •   94 
  • 最後發表   大師  5 週前
大師 發文於   2018/09/15

(策略概念如下圖)

若我寫了一個突破進場策略,觸發價下一根bar的開盤價為進場點,其值為X,為了同時間執行停利出場策略,請問X的值要如何取得?

排序方式: 標準 | 最新
GammaCEO 發文於   2018/09/16

value1=變數一(MA5)  value2=變數二

condition1=close[1] 條件或算式 變數一[1] 或and 或or 其他變數[1]成立;

 

if condition1 and value2=0 then

begin

value2=open;//開盤價取得

ret=1 ;

retmsg=value2;

end else
begin
value2=0;
end;

 

  • 按讚來自於
  • b24524658
大師 發文於   2018/09/18

不好意思..看得不是很懂....

舉個例子,如果我的進出場策略如下:
-------------------------------------------------------------------------------
進場:(紅K棒突破5日均線)
If open[1]<MA5 and close[1]>open[1] and close[1]>MA5  
then ret=1;

出場:獲利10%
If GetQuote("成交") > "X" * 1.1
then ret=1;
------------------------------------------------------------------------------

我主要想問的是,這個X要怎麼用程式的語法來求得,因為XS無法去取得證券庫存的成本價

整個策略在跑的時候,我可能在上班,當進場觸發後,的確就會自動下單
但我不可能在上班的時候隨時去注意已經進場,而再去手動輸入X值,再去跑出場策略
真正的程式交易,應該是達成條件後,自動進出場

 

 

 

大師 發文於   2018/09/18

不知XQ小幫手有看到這篇嗎?

XQ小幫手 發文於   2018/09/18

Hi 大師,

您好,或許以下這篇文章的概念您可以先參考看看,謝謝。

移動停利腳本的寫法

GammaCEO 發文於   2018/09/18

 首先,XS進場出場是不同腳本分開運作但同步執行的;

一般來說進場腳本都是出場腳本的上半部,除非進出場採的是異向指標(例如:進場用KD,出場用均線),
否則就把進場上半部觸發值SAVE在一個變數值內,再由此變數值做為依據加入條件or算式後成為出場腳本。

舉例來說,你要收紅+突破均線時買入,一般就是 condition1=close[1]>open[1] and close[1]>ma5;
當condition1條件成立時為觸發ret=1。

而出場腳本除了引用進場腳本外,還需加入要做為依據的變數值value或自定義變數;

例如 condition1=close[1]>open[1] and close[1]>ma5;

當條件成立時將觸發改為暫存於變數值

if value2=0 then ←假設要儲存的變數值為value2

begin

if condition1  then ←進場腳本觸發

begin

value2=open; ←進場價SAVE

end;
 
end else

   begin

if value2>0 and close>= value2*1.1 or close<=value2/1.1 then ←出場條件成立

begin

ret=1;

value2=0; ←觸發後變數歸零

ertmsg="自訂";

end;

有時間性如當沖單
就加上
if  value2>1 and CurrentTime >= XXXXXX ←強制出場時間

then begin

ret=1;


value2=0;←一樣要歸零

RetMsg = "TIME UP強制平倉";

end;
        end;

 

 

 

 

  • 按讚來自於
  • b24524658
大師 發文於   2018/09/21

謝謝 GammaCEO 跟 XQ 小幫手詳細熱心的解說..... 

本身因為非程式背景出身,關於 GammaCEO 解說的內容, 

個人對 value2 這個變數有些疑問...value2=open 比較好理解,但 value2=0,value2>0,value2>1

讓我挺困惑

煩請 GammaCEO 有空能夠釋疑

  • 按讚來自於
  • b24524658
GammaCEO 發文於   2018/09/22

value2是假設變數,用來記錄進場條件成立當下的價格;

value2=0 就是條件未成立,也就是未進場,大於0與大於1是同意思,表示條件已成立過,被使用了,多單或空單進場了。

value2不管等於收盤、開盤、最高或最低都會大於0,而出場判斷是建立在已進場狀況下才符合邏輯,所以須給XScript一個假設值判斷目前進場策略觸發過沒。

一但進場後又因到價而觸發出場,假設變數就需歸回預設值0,這樣才能成為一個迴圈,下次進場條件再成立時才能執行第二次出場判斷。

 

  • 按讚來自於
  • b24524658
發表回覆
Close