盤中量化-當沖

  •   702 
  • 最後發表   Stanley hsu  2024 八月 09
Stanley hsu 發文於   2023/12/20

小幫手您好,可否請您協助寫以下當沖交易語法

 

1.13:10分出場

2.若盤中漲幅>8%就出場

3.若預估量>5倍就出場

4.盤中1分K量大於開盤量3倍就出場

 

以上,謝謝您

排序方式: 標準 | 最新
Stanley hsu 發文於   2023/12/20

以及 一檔投入金額固定10萬

XQ小幫手 發文於   2024/01/15

Hello, Stanley hsu.

 

由於您說明是要寫哪種XS腳本(策略雷達或者是自動交易)且沒有給進場條件,所以小幫手這邊簡單寫了自動交易的出場條件,

condition1 = CurrentTime >= 131000; // 1.13:10分出場
condition2 = (Close - GetField("參考價", "D")) * 100 / GetField("參考價", "D") > 8; // 2.若盤中漲幅>8%就出場
condition3 = GetField("估計量") / GetField("Volume", "D")[1] > 5; // 3.若預估量>5倍就出場 
//由於您沒有說明是大於什麼量五倍,所以小幫手這邊用昨量,且這邊可能有個問題開盤的時候估計量都會很大...
condition4 = Volume / getfield("成交量", "Tick")[getfield("當日序號", "Tick")-1] > 3;// 4.盤中1分K量大於開盤量3倍就出場

if 
    condition1
    or condition2
    or condition3
    or condition4
then
    setposition(0, market);

 

每檔限定十萬建議您參考XS系統內件腳本

小幫手建議您先閱覽網站上的教學區,裡面有XS語法的基礎和應用。

https://www.xq.com.tw/learn

 

謝謝。

 

散散惹人愛 發文於   2024/08/01

基於近日盤勢過於震盪

想請教在交易頻率 5 分K內 預先載入資料筆數700筆

 

if getfieldDate("Date") <> getfieldDate("Date")[1]   then begin

value53 = 100 * (getsymbolfield("OTC.TW", "close", "D") [1] - getsymbolfield("OTC.TW", "OPEN", "D")[1]) / getsymbolfield("OTC.TW", "OPEN", "D")[1]; 

    end;

condition16 = value53 < -1.5 and value53 >-3; //介於-1.5 - -3%

 

如果OTC 或TSE 櫃買、大漲或大跌 以上條件

如大盤 在盤中,大漲1.5%以上 或大跌1.5% 或介於之間時 

啟動全面停損,不清楚哪裡產生問題,以致回測與實際交易失效

var: exit_short_condition(false); { 空單全部回補 }  

if filled<= -5 then begin 

exit_short_condition = condition16 and currentTime>102510 ;

if exit_short_condition then begin  

SetPosition(0,label:="空錯回補"); { 空單全部出場: 把Position調成0, 使用預設買進價格 }  

虎科大許教授 發文於   2024/08/02

大漲1.5%以上 或大跌1.5% 或介於之間時 啟動全面停損

上述三個條件其實包含所有狀況,有設跟沒設都會全面停損。

 

你可能需要更詳細描述你的問題。

散散惹人愛 發文於   2024/08/04

感謝回復:

關於:這段是舉例而言  大漲1.5%以上 或大跌1.5% 或介於之間時 啟動全面停損

 

我主要是想表達 參考OTC 的漲跌幅 作為啟動下單條件的觸發,

不過嘗試 上述寫法,無結果

想請教在交易頻率 5 分K內 預先載入資料筆數700筆 

雖然 能正常買入,下單,但不能『OTC 的漲跌幅』 觸發停損

 

虎科大許教授 發文於   2024/08/04

value53的計算方式並非OTC漲跌幅,而是根據開盤計算的漲跌幅,而且是前一天,而非當天的漲跌幅。若要計算當天盤中(因為要停損,用當天的漲跌幅比較合理),下列程式碼要修改,將

value53 = 100 * (getsymbolfield("OTC.TW", "close", "D") [1] - getsymbolfield("OTC.TW", "OPEN", "D")[1]) / getsymbolfield("OTC.TW", "OPEN", "D")[1];

改成

value53 = 100 * (getsymbolfield("OTC.TW", "close", "D") - getsymbolfield("OTC.TW", "close", "D")[1]) / getsymbolfield("OTC.TW", "close", "D")[1];

或是更簡潔地改成

value53 = rateOfChange(getsymbolfield("OTC.TW", "close", "D"),1);

XS小編 發文於   2024/08/09

Hello 散散惹人愛,

 

小編補充,您可以參考 漲跌幅 欄位說明,裡面有提供計算方式。

另外也可以在腳本中使用 print 函數印出相關數值,比較容易找出原因。

 

感謝 虎科大許教授 的熱心回覆。

發表回覆
Close