分享

资金管理自定义函数

 che_dream 2012-11-06
这个资金管理自定义函数必须搭配一个全部平仓函数使用,我不打算把这两个函数柔和到一起用,这样自由度高一些,你们用的时候就直接全部复制就行。关于函数的具体参数设置是这样的,我举个例子 : 资金管理(100,100,true); 这个里面第一个参数是触发亏损斩仓的金额。只要亏的大于这个数值就会斩仓。第二个盈利平仓金额。只要盈利大于这个数值,就会触发“全部平仓”函数工作。而第三个参数是一个开关。当你填写 true的时候是亏损斩仓状态开启。如果你填写false的时候就是开启了盈利保护机制。如果还有任何建议都可以跟帖,我会尽可能的改的完善。 最后我想说的是520FX应该算是我见过的做的最专一的程序化交易论坛。
  1. int start()
  2. {

  3. //+------------------------------------------------------------------+
  4. //| 使用例子 |
  5. //+------------------------------------------------------------------+ *
  6. string 是否开启全部平仓函数开关;
  7. 是否开启全部平仓函数开关=盈亏判断(10,10,true);

  8. if (是否开启全部平仓函数开关=="是")
  9. {
  10. 全部平仓();
  11. }
  12. //-------------------------------------------------------------------+

  13. return(0);
  14. }





  15. //+------------------------------------------------------------------+
  16. //| 盈亏判断 |
  17. //+------------------------------------------------------------------+
  18. string 盈亏判断(int 亏损数额,int 盈利数额,bool 盈亏开关)
  19. {
  20. double 当前净值=AccountEquity();
  21. double 当前余额=AccountBalance();
  22. double 当前盈利=当前净值-当前余额;
  23. double 当前亏损=当前余额-当前净值;

  24. if( OrdersTotal()==0)return("否");




  25. if (盈亏开关==true)//亏盈开关为 亏损激活状态
  26. {
  27. if(当前亏损>亏损数额)
  28. {
  29. {
  30. return("是");
  31. Print("亏损平仓系统开始启动");
  32. }
  33. }
  34. }



  35. if (盈亏开关==false)//亏盈开关为 盈利激活状态
  36. {
  37. if(当前盈利>盈利数额)
  38. {
  39. {
  40. return("是");
  41. Print("盈利平仓系统开始启动");
  42. }
  43. }
  44. }
  45. }
  46. //-------------------------------------------------------------------+





  47. //+------------------------------------------------------------------+
  48. //| 全部平仓 |
  49. //+------------------------------------------------------------------+
  50. void 全部平仓()
  51. {
  52. bool 多单监控,空单监控,买入限价监控,卖出限价监控,买入止损监控,卖出止损监控;

  53. while(OrdersTotal()!=0)
  54. {
  55. for(int i=0;i<OrdersTotal();i++)
  56. {
  57. if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  58. {
  59. //-------------------市价单处理模块----------------
  60. if(OrderType()==OP_BUY)//如果选定的订单是买单的话
  61. {
  62. 多单监控=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),30);
  63. }
  64. if(OrderType()==OP_SELL)//如果选定的订单是卖单的话
  65. {
  66. 空单监控=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),30);
  67. }

  68. //--------------------挂单处理模块------------------
  69. if(OrderType()==OP_BUYLIMIT )//如果选定的是挂单的话
  70. {
  71. 买入限价监控=OrderDelete(OrderTicket());
  72. Print("尝试撤销 买入限价单");
  73. }

  74. if(OrderType()==OP_BUYSTOP )//如果选定的是挂单的话
  75. {
  76. 卖出限价监控=OrderDelete(OrderTicket());
  77. Print("尝试撤销 买入止损单");
  78. }
  79. if(OrderType()==OP_SELLLIMIT )//如果选定的是挂单的话
  80. {
  81. 买入止损监控=OrderDelete(OrderTicket());
  82. Print("尝试撤销 卖出限价单");
  83. }
  84. if(OrderType()==OP_SELLSTOP )//如果选定的是挂单的话
  85. {
  86. 卖出止损监控=OrderDelete(OrderTicket());
  87. Print("尝试撤销 卖出止损单");
  88. }
  89. //------------------报告状态模块---------------------
  90. if(多单监控==true){Print("平多单成功^0^");}else{Print("平多单失败 囧");}
  91. if(空单监控==true){Print("平空单成功^0^");}else{Print("平空单失败 囧");}

  92. if(买入限价监控==true){Print("撤销买入限价成功^0^");}else{Print("撤销买入限价失败 囧");}
  93. if(卖出限价监控==true){Print("撤销卖出限价成功^0^");}else{Print("撤销卖出限价失败 囧");}
  94. if(买入止损监控==true){Print("撤销买入止损成功^0^");}else{Print("撤销买入止损失败 囧");}
  95. if(卖出止损监控==true){Print("撤销卖出止损成功^0^");}else{Print("撤销卖出止损失败 囧");}



  96. }
  97. }
  98. }
  99. }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多