請問以下兩種情境的警示腳本如何寫,謝謝大家。
<情境1>
在當日5分鐘K線圖中,9點開盤後,若某一根K棒收盤價大於前一日的最高價請警示。
<情境2>
符合情境1後,5分鐘K線圖中,後續的某一根K棒收盤價若大於前一根K棒的最高價,請警示。
請問以下兩種情境的警示腳本如何寫,謝謝大家。
<情境1>
在當日5分鐘K線圖中,9點開盤後,若某一根K棒收盤價大於前一日的最高價請警示。
<情境2>
符合情境1後,5分鐘K線圖中,後續的某一根K棒收盤價若大於前一根K棒的最高價,請警示。
試試看有沒有問題
//<情境1>
//在當日5分鐘K線圖中,9點開盤後,若某一根K棒收盤價大於前一日的最高價請警示。
if barInterval<>5 then raiseRunTimeError("限5分頻率使用");
if issessionFirstBar then value1=0;
if time>=090000
and c>highD(1)
then begin
ret=1;
retmsg="情境1觸發";
value1=1;//符合情境2後續判斷
end;
//<情境2>
//符合情境1後,5分鐘K線圖中,後續的某一根K棒收盤價若大於前一根K棒的最高價,請警示。
if value1=1
and c>h[1]
then begin
ret=1;
retmsg="情境2觸發";
end;
musashi3560010大大,有成功了,太感謝您了!
請教您,若情境2,我想改成"後續的某一根K棒收盤價若大於前一根K棒的最高價,且創當日新高",以下的寫法正確嗎?
//<情境2>
//符合情境1後,5分鐘K線圖中,後續的某一根K棒收盤價若大於前一根K棒的最高價,且創當日新高,請警示。
value2=getfield("High", "D");
if value1=1
and c>h[1]
and c cross over value2[1] //5分K收盤價創當日新高
then begin
ret=1;
retmsg="情境2觸發";
end;
改這樣看看
//<情境1>
//在當日5分鐘K線圖中,9點開盤後,若某一根K棒收盤價大於前一日的最高價請警示。
if barInterval<>5 then raiseRunTimeError("限5分頻率使用");
if issessionFirstBar then begin value1=0;value2=0;end;
if time>=090000
and c>highD(1)
then begin
ret=1;
retmsg="情境1觸發";
value1=1;//符合情境2後續判斷
end;
//<情境2>
//符合情境1後,5分鐘K線圖中,後續的某一根K棒收盤價若大於前一根K棒的最高價,請警示。
if value1=1
and c>h[1]
and c>value2
then begin
ret=1;
retmsg="情境2觸發";
end;
value2=highD(0);//更新當日最高
musashi大大,謝謝您的幫忙,今日測試很完美,再次感謝!!您真是大好人!!
musashi大大,請教您一個問題。
請問第22行的程式碼(如下),放在最後一行的原因是?
value2=highD(0);//更新當日最高
我有試著把它移到第12行,但測試後跑不出結果,不知問題出在哪裡?
請問是因為它要抓當下正在發生的數據,所以才放最後一行嗎?
謝謝您的幫忙!!
請問以下三種情境的警示腳本如何寫,謝謝大家。
<情境1>
開盤跳空上漲3%,且成交量大於500張請警示
<情境2>
符合情境1後,在當日5分鐘K線圖中,9點開盤後,若某一根K棒收盤價大於前一日的最高價請警示。
<情境3>
符合情境2後,5分鐘K線圖中,後續的某一根K棒收盤價若大於前一根K棒的最高價,請警示。
Hello 小豪很仁慈,
小編建議您先觀看網站上的教學區和教學影片,裡面有XS語法的基礎和應用可以閱覽。
另外您的條件可能要更明確,成交量指的是當日的成交量,還是哪一根5分鐘Bar都可以?
舉例來說,使用在5分鐘頻率上:
if date <> date[1] then begin
condition1 = False;
condition2 = False;
end;
if getfield("Open", "D") > getfield("close", "D")[1] * 1.03 and getfield("Volume", "D") > 500 then begin //開盤跳空上漲3%且當日成交量大於500
ret = 1; //情境1警示
condition1 = True; //這種寫法可以確保情境1條件成立後 condition1 在當天都維持True
end;
if condition1 and close > getfield("High", "D")[1] then begin
ret = 1; //情境1&情境2警示
condition2 = True;
end;
if condition2 and close > high[1] then ret = 1; //情境2&情境3警示
8 評論