根据每笔存款风险计算手数大小的函数 - MetaTrader 5 专家
Price_open - 开仓价格;
Price_stoploss - 止损水平的价格;
risk_percent_equity - 每笔交易的风险(以存款百分比表示);
双倍的按风险获取交易量(双倍的开盘价,双倍的价格_止损,双倍的风险_百分比_权益) { 双倍的音量={}; 双倍的保证金风险 =帐户信息双(账户资产) *risk_percent_equity /100; 双倍的刻度大小=符号信息双(象征(),SYMBOL_TRADE_TICK_SIZE); 双倍的刻度值 =符号信息双(象征(),SYMBOL_TRADE_TICK_VALUE); 双倍的最小手数=符号信息双(象征(),SYMBOL_VOLUME_MIN); 双倍的最大手数 =符号信息双(象征(),SYMBOL_VOLUME_MAX); 双倍的手数步骤 =符号信息双(象征(),SYMBOL_VOLUME_STEP); 双倍的delta_stoploss =数学抗体(开盘价 - 止损价); 双倍的margin_risk_1lot = delta_stoploss / 刻度尺寸 * 刻度值; 交易量 = 保证金风险 / 保证金风险 1 手; 体积=数学地板(交易量/手数步长) * min_lot; 如果(体积==0) 交易量=最小手数; 如果(交易量 > 最大手数) 交易量=最大手数; 返回体积; }
通过此函数进行随机交易的 EA 交易示例
输入 整数止损点 =100;//止损点数 输入 双倍的风险百分比权益 =1;//风险占存款的百分比 //+------------------------------------------------------------------+ ENUM_ORDER_TYPE订单类型 =订单类型购买;双倍的股权开放 = {};双倍的预期利润 = {};布尔值开放位置 =错误的;//+------------------------------------------------------------------+ 空白 勾选() { 如果(!pos_open) { Mql交易请求要求; MqlTradeCheck结果结果检查; Mql交易结果结果_贸易; 零内存(要求); 零内存(结果检查); 零内存(结果_交易); 双倍的刻度大小=符号信息双(象征(),SYMBOL_TRADE_TICK_SIZE); 如果(订单类型==订单类型购买) 订单类型 =订单类型_卖出; 别的 订单类型 =订单类型购买; 如果(订单类型==订单类型购买) { 请求价格=符号信息双(象征(),SYMBOL_ASK); 请求类型=订单类型购买; request.sl = request.price - tick_size * stoploss_points; request.tp = request.price + tick_size * stoploss_points; } 别的 { 请求价格=符号信息双(象征(),SYMBOL_BID); 请求类型=订单类型_卖出; request.sl = request.price + tick_size * stoploss_points; request.tp = request.price - tick_size * stoploss_points; } 双倍的交易量 = GetVolByRisk(request.price, request.sl,risk_percent_equity); 请求.动作=TRADE_ACTION_DEAL; 请求.符号=象征(); 请求量=体积; 请求.偏差=5; 预期利润=帐户信息双(账户资产) *risk_percent_equity /100; 权益_开盘 =帐户信息双(账户资产); 如果(订单检查(请求,结果检查)) { 订单发送(请求,结果_交易); 开放位置 =真的; } } }//+------------------------------------------------------------------+ 空白 网上交易(常量 MqlTrade事务&反式, 常量 Mql交易请求& 要求, 常量 Mql交易结果& 结果) { 如果(trans.type ==TRADE_TRANSACTION_DEAL_ADD) { 历史交易选择(交易); ENUM_DEAL_ENTRY交易条目 = (ENUM_DEAL_ENTRY)历史交易获取整数(跨交易,DEAL_ENTRY); 如果(交易条目==DEAL_ENTRY_OUT) { 打印(“==========”); 打印(“音量=”,反式体积); 打印(“股权开放=”,股权开放); 打印(“权益关闭=”,帐户信息双(账户资产)); 打印(“预期利润=+/-”,预期利润); 打印(“实际利润=”,历史交易获得双倍(跨交易,交易利润)); 打印(“==========”); 开放位置 =错误的; } } }//+------------------------------------------------------------------+ 双倍的按风险获取交易量(双倍的开盘价,双倍的价格_止损,双倍的风险_百分比_权益) { 双倍的音量={}; 双倍的保证金风险 =帐户信息双(账户资产) *risk_percent_equity /100; 双倍的刻度大小=符号信息双(象征(),SYMBOL_TRADE_TICK_SIZE); 双倍的刻度值 =符号信息双(象征(),SYMBOL_TRADE_TICK_VALUE); 双倍的最小手数=符号信息双(象征(),SYMBOL_VOLUME_MIN); 双倍的最大手数 =符号信息双(象征(),SYMBOL_VOLUME_MAX); 双倍的手数步骤 =符号信息双(象征(),SYMBOL_VOLUME_STEP); 双倍的delta_stoploss =数学抗体(开盘价 - 止损价); 双倍的margin_risk_1lot = delta_stoploss / 刻度尺寸 * 刻度值; 交易量 = 保证金风险 / 保证金风险 1 手; 体积=数学地板(交易量/手数步长) * min_lot; 如果(体积==0) 交易量=最小手数; 如果(交易量 > 最大手数) 交易量=最大手数; 返回体积; }//+------------------------------------------------------------------+
该指标采用了“季度理论”——一种技术分析概念,将价格变动分为围绕中央基准水平的四个季度。它设计用于处理多种资产类型(外汇、股票、大宗商品等),并在图表上提供可视化的季度水平。
为顾问添加按钮的示例。在此示例中,已实现一个按钮来关闭所有工具的所有活动头寸。除了按钮事件处理功能之外,还实现了相对于交易品种名称的平仓方法以及计算相对于交易品种名称的持仓数量的方法。
带有 6 个智能过滤器的专业平仓面板。按类型、按代码或按损益全部平仓。实时盈亏显示。非常适合紧急出口和风险管理。包括安全确认。
以真实报价模式记录报价并以数学模式读取它们,并在每次报价时调用您的策略。
附件下载
📎 exp_get_vol.mq5 (8.38 KB)
Source: MQL5 #48222
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录
