Xs請教

  •   331 
  • 最後發表   Peter888  2023 七月 21
Peter888 發文於   2023/07/05

小幫手你好!兩個問題請教你

第一個問題

if h[10]/l[30]>=漲幅 

and l/h[10]<=跌幅 

then 記錄這個L的價格 ;

請問如何記錄這個低點價格,因為我要取的這個價格以後,再去跑其他的條件。

第二個問題

假設我第一個條件是10-20根k棒內漲幅達到5%,接著5-10根k棒內跌幅要達到3%,請問10-20根區間的程式碼要怎麼寫?我目前是土法煉鋼用每一種組合各寫一個,一共寫了66組....

 

謝謝🙏

 

 

排序方式: 標準 | 最新
Peter888 發文於   2023/07/09

小幫手,第一個問題已經解決了

剩下第二個問題區間問題還找不到答案了

XQ小幫手 發文於   2023/07/12

 Hello Peter888,

 

小幫手不太確定您指的 10-20根k棒內漲幅達到5% 是什麼意思,是指要檢查近10根到20根Bar的漲幅,每個都要大於5%嗎?

或許您可以使用迴圈搭配 rateofchange 函數。

舉例來說:

var: count(0);

 

count = 0;    //用count計算小於5%的次數

for value1 = 10 to 20 begin    //檢查過去10到20根Bar與當下的變動幅度

    if rateofchange(close, value1) < 5 then count += 1;

    end;

 

condition1 = count = 0;    //count小於5%的次數為0 = 每根都大於5%

Peter888 發文於   2023/07/13

小幫手你好

我用股價來解釋應該會比較清楚

假設9:30股價100

9:45達到條件1目標漲幅5%股價105 (10-20根之間)

9:53達到條件2跌幅3%股價102 (5-10根之間)

換個解釋就是9:40-9:50之間 (10-20根之間)要滿足5%的漲幅

接著從滿足5%漲幅的時間點9:45開始算(5-10根之間)

9:50-9:55 要滿足3%的跌幅

 

謝謝

 

 

Peter888 發文於   2023/07/13

小幫手你好

再多請教一個問題

下面是我的警示程式,請問怎麼把ret=1警示出來的這個數值畫成一條線,謝謝

if ss=1

and h>=value8

and Trigger = 0

and Time < overtime

then

begin

ret=1;

Trigger = 1;

end;

 

XQ小幫手 發文於   2023/07/18

Hello Peter888,

 

您可以用highestbar 來判斷近N根Bar的漲幅是否有到5%,接著再搭配 lowest 確認反向是否有到 3%。

舉例來說:

value1 = highestbar(high, 20);   //取得近20根Bar的最高點

 

if value1 < 19 then begin    //取得近20根Bar最高點前的最低點

    value2 = low[19];

    for value3 = 19 downto value1 begin

        if low[value3] < value2 then value2 = low[value3];

        end;

    condition1 = 100 * (high[value1] - value2) / value2 > 5;

    end

else condition1 = False;

 

 

if condition1 then begin     //如果有上漲5%的話,接著計算最高點後到最低點是否有下跌3%

    value4 = simplelowest(low, value1);

    condition2 = 100 * (value4 - high[value1]) / high[value1] < -3;

    end

else condition2 = False;

 

這樣condition1 就會先判斷近20根Bar中的最高點和向前的最低點相比是否有上漲5%,接著再判斷高點到高點後的低點是否有下跌3%。

 

警示腳本不能繪圖,所以您需要改寫成腳本,並將條件符合當下要保存的數值用變數保存。

舉例來說,假設您要畫出條件達成的close的話:

if ss=1

and h>=value8

and Trigger = 0

and Time < overtime

then value1 = close;

 

plot1(value1);

 

網站上有教學區,裡面有XS語法的基礎和應用可以閱覽。

Peter888 發文於   2023/07/18

小幫手你好!

我又遇到新的問題了

我自動交易程式的平倉條件,除了一般的%數停利停損以外,我還想增加進場30分鐘後,股價大約等於成本以下的保本出場(value12),這個條件的用意是不想等停損出場,直接減掉交易成本出場。程式如下


if ss=1 {進場條件滿足}

then

begin

intime=time; {intime=建倉時間}

end;

 

Value12=FilledAvgPrice-0.1; {保本價格}

 

if intime>0 and time>intime and time > timeadd(intime,"M",30) {建倉30分鐘以後}

and h>=Value12 then begin xx=1; end; {高點大於等於保本價格}

//----------進出場分隔線----------------

var: 

 short_condition(false);   { 是否做空 }

 

if Position = 0 and short_condition then SetPosition(-1);

if Position <=- 1 and Filled <= -1 then begin  {已經建倉 }

 

if xx=1 then SetPosition(0); {保本平倉}

if H>=FilledAvgPrice*(1+(lose/100))then SetPosition(0); {停損平倉}

if L<=FilledAvgPrice*(1-(win/100))then SetPosition(0);  {停利平倉}

end;

 

另外還有一個問題請教,要用tick來做停損距離該怎麼寫,謝謝🙏

XQ小幫手 發文於   2023/07/21

Hello Peter888,

 

網站上有教學區,裡面有XS語法的基礎和應用。

您可以使用 print 函數將數值印出確認,看腳本是否有如同您所想的運作。

 

intime = time; 的部分小幫手建議改為 intime = currentime;,因為time是Bar開始的時間,currenttime則是該次洗價的時間。

且建議進場條件中要加上部位庫存來控制,不然每次達成條件 intime 就會被更新,且若您的腳本是逐筆洗價的話,會建議宣告 intime 時要指定 intrabarpersist

還有需注意的點是若您使用在日頻率下的話,time的回傳值會是0。

 

如果您希望在經過幾根 Tick 停損的話,可以使用 當日序號 來做判斷。

只要記錄觸發時的當日序號就可以判斷經過了幾根Tick。

發表回覆
Close