这个资金管理自定义函数必须搭配一个全部平仓函数使用,我不打算把这两个函数柔和到一起用,这样自由度高一些,你们用的时候就直接全部复制就行。关于函数的具体参数设置是这样的,我举个例子 : 资金管理(100,100,true); 这个里面第一个参数是触发亏损斩仓的金额。只要亏的大于这个数值就会斩仓。第二个盈利平仓金额。只要盈利大于这个数值,就会触发“全部平仓”函数工作。而第三个参数是一个开关。当你填写 true的时候是亏损斩仓状态开启。如果你填写false的时候就是开启了盈利保护机制。如果还有任何建议都可以跟帖,我会尽可能的改的完善。 最后我想说的是520FX应该算是我见过的做的最专一的程序化交易论坛。
- int start()
- {
- //+------------------------------------------------------------------+
- //| 使用例子 |
- //+------------------------------------------------------------------+ *
- string 是否开启全部平仓函数开关;
- 是否开启全部平仓函数开关=盈亏判断(10,10,true);
- if (是否开启全部平仓函数开关=="是")
- {
- 全部平仓();
- }
- //-------------------------------------------------------------------+
- return(0);
- }
- //+------------------------------------------------------------------+
- //| 盈亏判断 |
- //+------------------------------------------------------------------+
- string 盈亏判断(int 亏损数额,int 盈利数额,bool 盈亏开关)
- {
- double 当前净值=AccountEquity();
- double 当前余额=AccountBalance();
- double 当前盈利=当前净值-当前余额;
- double 当前亏损=当前余额-当前净值;
- if( OrdersTotal()==0)return("否");
- if (盈亏开关==true)//亏盈开关为 亏损激活状态
- {
- if(当前亏损>亏损数额)
- {
- {
- return("是");
- Print("亏损平仓系统开始启动");
- }
- }
- }
- if (盈亏开关==false)//亏盈开关为 盈利激活状态
- {
- if(当前盈利>盈利数额)
- {
- {
- return("是");
- Print("盈利平仓系统开始启动");
- }
- }
- }
- }
- //-------------------------------------------------------------------+
- //+------------------------------------------------------------------+
- //| 全部平仓 |
- //+------------------------------------------------------------------+
- void 全部平仓()
- {
- bool 多单监控,空单监控,买入限价监控,卖出限价监控,买入止损监控,卖出止损监控;
- while(OrdersTotal()!=0)
- {
- for(int i=0;i<OrdersTotal();i++)
- {
- if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
- {
- //-------------------市价单处理模块----------------
- if(OrderType()==OP_BUY)//如果选定的订单是买单的话
- {
- 多单监控=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),30);
- }
- if(OrderType()==OP_SELL)//如果选定的订单是卖单的话
- {
- 空单监控=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),30);
- }
- //--------------------挂单处理模块------------------
- if(OrderType()==OP_BUYLIMIT )//如果选定的是挂单的话
- {
- 买入限价监控=OrderDelete(OrderTicket());
- Print("尝试撤销 买入限价单");
- }
- if(OrderType()==OP_BUYSTOP )//如果选定的是挂单的话
- {
- 卖出限价监控=OrderDelete(OrderTicket());
- Print("尝试撤销 买入止损单");
- }
- if(OrderType()==OP_SELLLIMIT )//如果选定的是挂单的话
- {
- 买入止损监控=OrderDelete(OrderTicket());
- Print("尝试撤销 卖出限价单");
- }
- if(OrderType()==OP_SELLSTOP )//如果选定的是挂单的话
- {
- 卖出止损监控=OrderDelete(OrderTicket());
- Print("尝试撤销 卖出止损单");
- }
- //------------------报告状态模块---------------------
- if(多单监控==true){Print("平多单成功^0^");}else{Print("平多单失败 囧");}
- if(空单监控==true){Print("平空单成功^0^");}else{Print("平空单失败 囧");}
- if(买入限价监控==true){Print("撤销买入限价成功^0^");}else{Print("撤销买入限价失败 囧");}
- if(卖出限价监控==true){Print("撤销卖出限价成功^0^");}else{Print("撤销卖出限价失败 囧");}
- if(买入止损监控==true){Print("撤销买入止损成功^0^");}else{Print("撤销买入止损失败 囧");}
- if(卖出止损监控==true){Print("撤销卖出止损成功^0^");}else{Print("撤销卖出止损失败 囧");}
- }
- }
- }
- }
|