AFL-Excel.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:3k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    AFL-Excel
  4. //  Author/Uploader: Witold Dabrowski 
  5. //  E-mail:          
  6. //  Date/Time Added: 2002-08-31 06:29:37
  7. //  Origin:          
  8. //  Keywords:        
  9. //  Level:           semi-advanced
  10. //  Flags:           exploration
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=218
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=218
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  This example show how to control Excel directly from the AFL script via
  17. //  OLE-Automation interface. In this script I count %DD and plot Equity and
  18. //  %DD charts in Excel.
  19. //
  20. //  In script there is commentary in polish - sorry ;-)
  21. //
  22. //------------------------------------------------------------------------------
  23. Buy = Cover =
  24.  Cross(C,MA(C,5));
  25. Sell = Short =
  26.  Cross(MA(C,5),C);
  27. PositionSize = IIf(Buy,BuyPrice,ShortPrice);
  28. E = Equity(1);
  29. Papier = Name();
  30. EnableScript("vbscript");
  31. <%
  32.  'Wymiana zmiennych mi阣zy skryptem AFL i VB
  33.  E = AFL("E")
  34.  Papier = AFL("Papier")
  35.  'Uruchamianie Excela
  36.  Set Excel = CreateObject("Excel.Application")
  37.  'Ustawianie Excela w stan gotowo渃i
  38.  Excel.WorkBooks.Add
  39.  Set Sheet = Excel.WorkBooks(1).WorkSheets(1)
  40.  'Pisanie do kom髍ek Excela
  41.  Sheet.Cells(1,1) = Papier
  42.  Sheet.Cells(1,2) = "Equity"
  43.  Sheet.Cells(1,3) = "DrawDown"
  44.  'Inicjacja maksimum Euqity - b阣zie potrzebne
  45.  ' do obliczania DrawDownu
  46.  MaxE = E(0)
  47.  'Wpisywanie stanu Equity i DrawDownu do Excela
  48.  For i = 0 to UBound(E)
  49.      Y = i+2
  50.      Sheet.Cells(Y,2).Value = E(i)
  51.      If E(i) > MaxE then
  52.         MaxE = E(i)
  53.      End If
  54.      Drawdown = 0 - ((MaxE - E(i))/MaxE * 100)
  55.      Sheet.Cells(Y,3).Value = Drawdown
  56.  Next
  57.  'A teraz wykresy
  58.  Sheet.Activate
  59.  Sheet.Columns(2).Select
  60.  '...Equity...
  61.  Excel.Charts.Add
  62.  Set EquityCharts = Excel.Charts(1)
  63.  EquityCharts.Name = Papier + " Equity"
  64.  EquityCharts.Type = 1
  65.  EquityCharts.HasLegend = 0
  66.  EquityCharts.HasTitle = 0
  67.  Sheet.Activate
  68.  Sheet.Columns(3).Select
  69.  '... i DrawDown (w procentach)
  70.  Excel.Charts.Add
  71.  Set EquityCharts = Excel.Charts(2)
  72.  EquityCharts.Name = Papier + " DrawDown"
  73.  EquityCharts.Type = 1
  74.  EquityCharts.HasLegend = 0
  75.  EquityCharts.HasTitle = 0
  76.  'La Grande Finale - pokazujemy Excel 渨iatu.
  77.  'Mo縩a to wrzuci