yanhai257 發表於 16-2-2 09:52

代码我已经想出来了,如下:
SetCustomBacktestProc("");
if(Status("action") == actionPortfolio)
{
   bo = GetBacktesterObject();
   bo.PreProcess();         
   for (i= 0; i < BarCount; i++)
   {
      MinPctProfit = 100; //open position中某个position的最小浮盈,初始值
      HaveOpenPos = 0; //是否持有position,初始值
      for (trade = bo.GetFirstOpenPos(); trade; trade = bo.GetNextOpenPos())
      {
         MinPctProfit = Min(trade.GetPercentProfit, MinPctProfit);//求最小浮盈
         HaveOpenPos = Max(trade.GetEntryValue, HaveOpenPos);//求某个position的最大成本值,以此判断是否持有position。本来打算用bo.GetOpenPosQty()来判断持仓情况的,但发现好像不行
      }
                  
      MaxPosScore = 0;//取所有buy signal的positionScore中的最大值,初始值                     
      for (sig = bo.GetFirstSignal(i); sig; sig = bo.GetNextSignal(i))
      {                                                      
         MaxPosScore = Max(sig.PosScore, MaxPosScore);//求positionScore的最大值                                                      
      }
         
      for (sig = bo.GetFirstSignal(i); sig; sig = bo.GetNextSignal(i))
      {                                       
         if (sig.PosScore == MaxPosScore)//只买入positionScore最大的那一只股票
         {         
            if (HaveOpenPos > 0 AND MinPctProfit >= 10)         
               sig.PosSize = -10;//如果持仓,且所有仓位中浮盈最少的股票>=10%,则买入                                             
            if (HaveOpenPos == 0)
               sig.PosSize = -10;//如果没有持仓,买入      
         }                  
      }   
      bo.ProcessTradeSignals(i);      
   }
   bo.PostProcess();
}

PositionSize = 0; //对所有的position的数量大小设置为0,只有满足以上条件的,才有买入动作
PositionScore = ... //你自己设定的排序方式

//以下是你的主代码部分...

以上已经测试过了,符合我的要求。

yanhai257 發表於 16-2-2 09:56

keymaker 發表於 16-1-31 15:29
回信內容是希望您先付費..然後才會給準確的線索..

您要的功能用 custom backtester 做也可以..但是進入障 ...

AmiBroker的技術支援,怎么购买?谢谢!

keymaker 發表於 16-2-2 14:47

http://www.amibroker.com/order.php

最近買很划算..

keymaker 發表於 16-2-2 14:48

yanhai257 發表於 16-2-2 09:56
AmiBroker的技術支援,怎么购买?谢谢!

只要買軟體..就有技術支援..

keymaker 發表於 16-2-2 14:51

yanhai257 發表於 16-2-2 09:52
代码我已经想出来了,如下:
SetCustomBacktestProc("");
if(Status("action") == actionPortfolio)


請問您是怎麼測試的 (什麼版本) (什麼環境 charting or Analysis window )

yanhai257 發表於 16-2-2 18:53

本帖最後由 yanhai257 於 16-2-2 19:04 編輯

professional edition 64bit version6.00.2

软件我是上个月买的,技术支持其实很有限,只有安装、图表的各种用法、数据的导入、设置数据的插件和基础的programming问题(如怎么写loop程序和用户自定义function)。但如果你有什么想法想做backtest测试,他们是不会提供这样的支持的,这方面的支持他们只提供了一些第三方的网站,通常这样的网站要么是一些论坛供大家相互讨论,更多的是一些你出钱,他帮你写代码的网站。

keymaker 發表於 16-2-2 19:09

本帖最後由 keymaker 於 16-2-2 19:12 編輯

yanhai257 發表於 16-2-2 18:53
professional edition 64bit version6.00.2
了解..小提醒..加入 AmiBroker 要有心理準備.. 比較起來 ..

AmiBroker 服務是工程師性格..有話直說 (不會 "很客氣") .. 不過真的非常專業 ..( I like it)

Multicharts 服務是銷售員性格..會轉彎 (基本上 "比較客氣") .. 但是 .. (oh my god)

還有..看您的學習與英文能力..多數人..會有一段時間可能雞同鴨講 ..
但學會之後 .. 會覺得 AmiBroker 真的太神奇了




yanhai257 發表於 16-2-2 19:53

keymaker 發表於 16-2-2 19:09
了解..小提醒..加入 AmiBroker 要有心理準備.. 比較起來 ..

AmiBroker 服務是工程師性格..有話直說 (不會 ...

谢谢!
个人英文能力一般,看他们的英文资料需要不停的查阅字典和写代码进行测试。真希望论坛里能有多一些高手出来帮忙解答疑问,让我们这些新手们能少走一些弯路。
amibroker的中文资料实在是太稀缺了,中文论坛也少,我现在所知道的,比较专业的两个论坛就是“海洋部落”和这里,海洋部落那里还不能注册,更多的是要自己啃英文资料,自己摸索,真的很蛋疼。不知道大家有没有更好的建议?

keymaker 發表於 16-2-3 09:08

yanhai257 發表於 16-2-2 19:53
谢谢!
个人英文能力一般,看他们的英文资料需要不停的查阅字典和写代码进行测试。真希望论坛里能有多一 ...

如果 AmiBroker 可以被券商使用..那大家就福氣了..(查資料會發現非洲有家 ShareNet 的券商就是用 AmiBroker..非洲人都那麼進步了..)
雖然 Multicharts 圖示非常漂亮..但是「易學難精」.. Basic 語法好寫但是很長很長
(常常 AmiBroker 兩句話..Multichart 要說十幾句才能完成)
長期下來..你會覺得其實 AmiBroker 還比較能滿足「碼農」的成就感..
不然..如果只要下單方便..那華人世界只有用 Multicharts 了

lwhuang 發表於 16-2-9 07:49

本帖最後由 lwhuang 於 16-2-9 07:53 編輯

keymaker 發表於 16-2-3 09:08
如果 AmiBroker 可以被券商使用..那大家就福氣了..(查資料會發現非洲有家 ShareNet 的券商就是用 AmiBrok ...
要下單方便要自己寫下單機plug-in
目前只有提供C的sdk
我希望官方能提供多一些版本,例如C#, java
因為很多券商現在只有C#版的API
報價 data C# plug-in因為有高人在github有分享,我也有成功
下單 AFL C# plug-in 目前還找不到範例

keymaker 發表於 16-6-22 18:38

如果能知道如何令 C 與 C# 接軌..那就可以目前提供的 C API

Dr. Tomaz 提供的 C API 裡面引用多層指標 .. (C# 及 VB 沒有類似的 data structure)

之前花了一些時間試轉為 C# 及 VB (但遇到多層指標..目前無解)
頁: 1 [2]
查看完整版本: 每次根据buy规则只买一只股票,请问code怎么写?