COCO研究院

 找回密碼
 註冊
搜索
查看: 3461|回復: 9

[範例程式碼] 求解,二階條件的程式碼問題

[複製鏈接]
發表於 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;

但編譯出來的執行結果,訊號一直無法出現,請問是我有哪邊疏忽了嗎~~~~~
自己摸了好久都摸不出來,只好請大家幫我解答啦,感謝。
發表於 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;
 樓主| 發表於 15-7-30 08:50 | 顯示全部樓層
pcking2008 發表於 15-7-30 01:43
每一根K棒後把時間跟每個變數都 print 出來
人工檢閱哪裡有問題
這樣以後就能靠自己解決邏輯上的問題

請問把時間跟每個變數都print出來的意思是甚麼呢
是指畫出邏輯的樹狀圖嗎
感謝大大回復
發表於 15-7-30 08:53 | 顯示全部樓層
本帖最後由 pcking2008 於 15-7-30 08:57 編輯
smallwhite0958 發表於 15-7-30 08:50
請問把時間跟每個變數都print出來的意思是甚麼呢
是指畫出邏輯的樹狀圖嗎
感謝大大回復 ...

有個指令叫 print

擷取.PNG

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

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

或許有大師有更好的方法可以教你
我是土法煉鋼


 樓主| 發表於 15-7-30 08:56 | 顯示全部樓層
沒房子的阿捨 發表於 15-7-30 02:12
上面那段會變成, 只要空手時, 就強制將buyflag與sellflag設為false......
即使buyflag=true條件成立了, 下 ...

我想我知道問題出在哪裡了。
原本是想部位平倉時把flag關回false,不過這樣好像就有邏輯上的問題了
感謝大大的指導~~~
 樓主| 發表於 15-7-30 08:59 | 顯示全部樓層
pcking2008 發表於 15-7-30 08:53
有個指令叫 print

了解~我等等就來試試看
謝囉
發表於 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
    if  mp=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  //////////////////////////////////////
 樓主| 發表於 15-7-30 22:45 | 顯示全部樓層
merickelson 發表於 15-7-30 21:34
感謝沒房子的大大:提供了一個近似解決方案;
但setexitonclose;是下一天開盤才處理;不符版主期望;
且, ...

感謝大神用心回復,獲益良多,期望日後有機會再向您請益。
發表於 15-7-30 23:59 | 顯示全部樓層
有好的ideas,要學會自己寫出程序,別到處問;因為,
一旦公開,這一程序就不再有效了;
因為主力大戶就會收錄寫入他/她的:「吃散戶彙編(市場收銀机程序中)」
您早晚會明白!!
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-12-23 00:50

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |