小幫手你好!兩個問題請教你
第一個問題
if h[10]/l[30]>=漲幅
and l/h[10]<=跌幅
then 記錄這個L的價格 ;
請問如何記錄這個低點價格,因為我要取的這個價格以後,再去跑其他的條件。
第二個問題
假設我第一個條件是10-20根k棒內漲幅達到5%,接著5-10根k棒內跌幅要達到3%,請問10-20根區間的程式碼要怎麼寫?我目前是土法煉鋼用每一種組合各寫一個,一共寫了66組....
謝謝🙏
小幫手你好!兩個問題請教你
第一個問題
if h[10]/l[30]>=漲幅
and l/h[10]<=跌幅
then 記錄這個L的價格 ;
請問如何記錄這個低點價格,因為我要取的這個價格以後,再去跑其他的條件。
第二個問題
假設我第一個條件是10-20根k棒內漲幅達到5%,接著5-10根k棒內跌幅要達到3%,請問10-20根區間的程式碼要怎麼寫?我目前是土法煉鋼用每一種組合各寫一個,一共寫了66組....
謝謝🙏
小幫手,第一個問題已經解決了
剩下第二個問題區間問題還找不到答案了
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%
小幫手你好
我用股價來解釋應該會比較清楚
假設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%的跌幅
謝謝
小幫手你好
再多請教一個問題
下面是我的警示程式,請問怎麼把ret=1警示出來的這個數值畫成一條線,謝謝
if ss=1
and h>=value8
and Trigger = 0
and Time < overtime
then
begin
ret=1;
Trigger = 1;
end;
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語法的基礎和應用可以閱覽。
小幫手你好!
我又遇到新的問題了
我自動交易程式的平倉條件,除了一般的%數停利停損以外,我還想增加進場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來做停損距離該怎麼寫,謝謝🙏
Hello Peter888,
網站上有教學區,裡面有XS語法的基礎和應用。
您可以使用 print 函數將數值印出確認,看腳本是否有如同您所想的運作。
intime = time; 的部分小幫手建議改為 intime = currentime;,因為time是Bar開始的時間,currenttime則是該次洗價的時間。
且建議進場條件中要加上部位庫存來控制,不然每次達成條件 intime 就會被更新,且若您的腳本是逐筆洗價的話,會建議宣告 intime 時要指定 intrabarpersist。
還有需注意的點是若您使用在日頻率下的話,time的回傳值會是0。
如果您希望在經過幾根 Tick 停損的話,可以使用 當日序號 來做判斷。
只要記錄觸發時的當日序號就可以判斷經過了幾根Tick。
7 評論