smallwhite0958 發表於 15-7-29 22:58

求解,二階條件的程式碼問題

各位版友大家好,有請大神們再幫我解一題。

期望邏輯:
將0845~0905的高低點定義為一區間。
當收盤價跌破區間低點-30點時,買進條件一成立。
條件一成立後,若收盤價再創區間高點+15點時,買進條件二成立。
當條件一與二均成立時,執行買進訊號:在下一根K棒以市價買進。
收盤時平倉。

目前我寫的程式碼如下:

vars:buyflag(false),sellflag(false);

if time >=0845 and time <=0905 then begin
value1 =HighD(0);
value2 =LowD(0);
end;

if marketposition =0 then begin
buyflag =false;
sellflag =false;       
end;

if close <value2 -30 then begin
buyflag =true;
end;

if time >=0910 and time <=1310 then begin
if buyflag =true and close >value1 +15 then buy next bar at market;
end;

setexitonclose;

但編譯出來的執行結果,訊號一直無法出現,請問是我有哪邊疏忽了嗎~~~~~
自己摸了好久都摸不出來,只好請大家幫我解答啦,感謝。

pcking2008 發表於 15-7-30 01:43

每一根K棒後把時間跟每個變數都 print 出來
人工檢閱哪裡有問題
這樣以後就能靠自己解決邏輯上的問題

沒房子的阿捨 發表於 15-7-30 02:12

if marketposition =0 then begin
buyflag =false;
sellflag =false;      
end; 上面那段會變成, 只要空手時, 就強制將buyflag與sellflag設為false......
即使buyflag=true條件成立了, 下次價位變動再次 run程式時, 又會因為mp=0而馬上把buyflag蓋成false....
當然就沒有訊號....

附上修改的code你參考看看.....
vars:buyflag(false),sellflag(false);

if time=0905 then begin
   value1 =HighD(0);
   value2 =LowD(0);
   buyflag =false;
   sellflag =false;
end;

if time>0905 and close <value2 -30 then buyflag =true;

if time >=0910 and time <=1310 then begin
   if buyflag =true and close >value1+15 then buy next bar at market;
end;

setexitonclose;

smallwhite0958 發表於 15-7-30 08:50

pcking2008 發表於 15-7-30 01:43 static/image/common/back.gif
每一根K棒後把時間跟每個變數都 print 出來
人工檢閱哪裡有問題
這樣以後就能靠自己解決邏輯上的問題


請問把時間跟每個變數都print出來的意思是甚麼呢
是指畫出邏輯的樹狀圖嗎
感謝大大回復

pcking2008 發表於 15-7-30 08:53

本帖最後由 pcking2008 於 15-7-30 08:57 編輯

smallwhite0958 發表於 15-7-30 08:50 static/image/common/back.gif
請問把時間跟每個變數都print出來的意思是甚麼呢
是指畫出邏輯的樹狀圖嗎
感謝大大回復 ...
有個指令叫 print



你在編輯器下面能看到說明
或是去買本power language 的書來看

你的例子, 程式最下面加上所有會用的的變數
print(date," ",time," C:",close," M:",marketposition," ",buyflag," ",sellflag);
再去看有哪裡跟你想像中不一樣

或許有大師有更好的方法可以教你
我是土法煉鋼 {:7_449:}


smallwhite0958 發表於 15-7-30 08:56

沒房子的阿捨 發表於 15-7-30 02:12 static/image/common/back.gif
上面那段會變成, 只要空手時, 就強制將buyflag與sellflag設為false......
即使buyflag=true條件成立了, 下 ...

我想我知道問題出在哪裡了。
原本是想部位平倉時把flag關回false,不過這樣好像就有邏輯上的問題了
感謝大大的指導~~~

smallwhite0958 發表於 15-7-30 08:59

pcking2008 發表於 15-7-30 08:53 static/image/common/back.gif
有個指令叫 print




了解~我等等就來試試看
謝囉

merickelson 發表於 15-7-30 21:34

感謝沒房子的大大:提供了一個近似解決方案;
但setexitonclose;是下一天開盤才處理;不符版主期望;
且,散戶各人使用週期不同,亦無法自我調控;我也來野人獻曝,提供一個修上版如下:
說明:我選用144-tick 的mXF1來試騐;coco高人很多,敬請指教:
// Two-condition all realized then Buy; Closed at time=13:44:50
inputs: LCL(21), UCL(2);
vars: buyflag(false), sellflag(false), mp(0), var1(0), var2(0);
mp=marketposition;
if time=0905 then begin
   value1 =HighD(0);
   value2 =LowD(0);
   buyflag =false;
   sellflag =false;
end;
var1 =value2- LCL ; //drop-down under 21 points
var2 =value1+ UCL ; //rise-up over 2 points
{LONG}
if time>0905 and close <var1 then buyflag =true;
   if buyflag =true then
   BEGIN
    if time >=0910 and time<=1310 then begin
    ifmp=0 and close>var2 then buy("B") next bar at market; //control only 1 trade per day.
   end;
   END;
//setexitonclose;
if mp=1 and time_s>=134450 then sell("kL") this bar on close ;// closed at time=13:44:50
//////////////END//////////////////////////////////////

smallwhite0958 發表於 15-7-30 22:45

merickelson 發表於 15-7-30 21:34 static/image/common/back.gif
感謝沒房子的大大:提供了一個近似解決方案;
但setexitonclose;是下一天開盤才處理;不符版主期望;
且, ...

感謝大神用心回復,獲益良多,期望日後有機會再向您請益。

merickelson 發表於 15-7-30 23:59

有好的ideas,要學會自己寫出程序,別到處問;因為,
一旦公開,這一程序就不再有效了;
因為主力大戶就會收錄寫入他/她的:「吃散戶彙編(市場收銀机程序中)」
您早晚會明白!!
頁: [1]
查看完整版本: 求解,二階條件的程式碼問題