COCO研究院

 找回密碼
 註冊
搜索
查看: 2605|回復: 6

Amibroker intraday checking

[複製鏈接]
發表於 14-4-19 14:35 | 顯示全部樓層 |閱讀模式
大家好,我是一個trading新手請多多指教。

我現在學習用Amibroker寫策略及backtest。我的入市high level logic (HSI)是:
- 每日開市時如果見到三枝大陽燭當日就只做Buy,見到三枝陰燭就只做sell
- 再見到連續三枝陽燭就入市, 見到兩枝陰燭就平倉

請問在Amibroker coding 如果將策略分在每一日測試?


發表於 14-4-20 08:05 | 顯示全部樓層
本帖最後由 zaqimon 於 14-4-20 08:23 編輯
  1. tn = TimeNum();
  2. //tn = IIf(tn > 170000, tn-240000, tn); // shift T+1 TimeNum for 24hr trading
  3. begin_bar = 0;
  4. count_bar = 0;
  5. TodayBS = 0;
  6. for(i=1; i<BarCount; i++)
  7. {
  8.         if(tn[i] < tn[i-1])
  9.         {
  10.                 begin_bar = i;
  11.                 count_bar = 0;
  12.         }
  13.         if(i-begin_bar < 3)
  14.         {
  15.                 if(C[i] > O[i])
  16.                 {
  17.                         ++count_bar;
  18.                 }
  19.                 else if(C[i] < O[i])
  20.                 {
  21.                         --count_bar;
  22.                 }
  23.         }
  24.         if(count_bar == 3)
  25.         {
  26.                 TodayBS[i] = 1; // Today Buy only
  27.         }
  28.         else if(count_bar == -3)
  29.         {
  30.                 TodayBS[i] = -1; // Today Short only
  31.         }
  32. }
複製代碼
大概這樣寫吧
不過我沒測試過
你自己試試看
發表於 14-4-20 23:45 | 顯示全部樓層
zaqimon 發表於 14-4-20 08:05
大概這樣寫吧
不過我沒測試過
你自己試試看

zaqimon,

this code will do the same as your code but is shorter and faster and without loop. ;-)

bars = 3;
dn = Datenum();
newday= dn != Ref( dn, -1 );
brssince = BarsSince( newday ) == bars-1;
sumdn = Sum( dn == Ref( dn, -1 ), bars-1 ) == bars -1;  

Buy = ValueWhen( brssince, Sum( C > O, bars ) ) == bars AND sumdn;
Short = ValueWhen( brssince, Sum( C < O, bars ) ) == bars AND sumdn;

PlotShapes( Buy*shapeUpArrow, colorpalegreen, 0, L, -45 );
PlotShapes( Short*shapedownArrow, colorOrange, 0, H, -45 );

發表於 14-4-20 23:47 | 顯示全部樓層
本帖最後由 joshsmi 於 14-4-20 23:52 編輯
joshsmi 發表於 14-4-20 23:45
zaqimon,

this code will do the same as your code but is shorter and faster and without loop. ;-)

for comparison


  1. tn = TimeNum();
  2. //tn = IIf(tn > 170000, tn-240000, tn); // shift T+1 TimeNum for 24hr trading
  3. begin_bar = 0;
  4. count_bar = 0;
  5. TodayBS = 0;
  6. for ( i = 1; i < BarCount; i++ )
  7. {
  8.     if ( tn[i] < tn[i-1] )
  9.     {
  10.         begin_bar = i;
  11.         count_bar = 0;
  12.     }

  13.     if ( i - begin_bar < 3 )
  14.     {
  15.         if ( C[i] > O[i] )
  16.         {
  17.             count_bar++;
  18.         }
  19.         else
  20.             if ( C[i] < O[i] )
  21.             {
  22.                 count_bar--;
  23.             }
  24.     }

  25.     if ( count_bar == 3 )
  26.     {
  27.         TodayBS[i] = 1; // Today Buy only
  28.     }
  29.     else
  30.         if ( count_bar == -3 )
  31.         {
  32.             TodayBS[i] = -1; // Today Short only
  33.         }
  34. }

  35. Buy = todaybs == 1;
  36. Short = todaybs == -1;
  37. PlotShapes( buy*shapeUpArrow, colorGreen, 0, L, -30 );
  38. PlotShapes( short*shapedownArrow, colorRed, 0, h, -30 );

複製代碼

 樓主| 發表於 14-4-21 15:42 | 顯示全部樓層
本帖最後由 tszwun 於 14-4-21 15:49 編輯

真的謝謝,原來可以這樣.....請想再問一下,如果我想debug program..用其他language可以output/prompt message做breakpoint, 請問amibroker有沒有類似function?
發表於 14-4-21 20:40 | 顯示全部樓層
本帖最後由 zaqimon 於 14-4-21 20:44 編輯
  1. function dout(str)
  2. {
  3.         if(USE_DOUT)
  4.         {
  5.                 if(Status("action") == actionIndicator)
  6.                 {
  7.                         _TRACE("["+_DEFAULT_NAME()+"] "+str);
  8.                 }
  9.                 else
  10.                 {
  11.                         _TRACE(""+str);
  12.                 }
  13.         }        
  14. }
複製代碼
存檔為dout.afl放到Include資料夾內
使用方式

USE_DOUT = True; // True / False
#include_once <dout.afl>
...
dout("hello");
dout(Close);
...
我習慣用DebugView來查看output
打開下面設定即可
Tools > Preferences > AFL > _TRACE() output : 選擇External
發表於 14-4-22 23:15 | 顯示全部樓層
本帖最後由 joshsmi 於 14-4-22 23:18 編輯
tszwun 發表於 14-4-21 15:42
真的謝謝,原來可以這樣.....請想再問一下,如果我想debug program..用其他language可以output/prompt mess ...

The new editor will get new features including debugger and so on in the future.
Just follow development log http://www.amibroker.com/devlog/


As for now see http://www.amibroker.org/userkb/ ... ions/debugging-afl/
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-12-23 10:21

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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