如何利用MQL5创建简单的多币种智能交易系统三角移动平均线(二)

赫兹量化该多币种智能交易系统的交易管理有若干个选项:

1. 止损单

  • 选项:使用订单止损(是)或(否)

如果选中“使用订单止损(否)”选项,则所有订单在开单时都不带止损。

如果选项使用订单止损(是):

再次给出选项:使用自动计算止损(是)或(否)

如果选项“自动计算止损(是)”,则将由智能系统自动执行止损计算。

如果选项“自动计算止损(否)”,则交易者必须以点数为单位输入止损值。

如果选项“使用订单止损(否)”:

则智能系统会检查每笔开立订单,信号条件是否仍然良好,以及订单

或许维持盈利,或许信号条件疲软,需要平单以确保

盈利、或许信号条件已逆转方向,订单必须以亏损条件平仓。

注意: 特别是对于由于信号疲软而平单并确保盈利,会再给出一个选项,是否激活它。 如果它没有被激活(否),即使信号已经疲软,订单仍将维持、或不会平单以确保盈利。

2. 止盈订单

  • 选项:“使用订单止盈(是)或(否)”

如果选中“使用订单止盈(否)”选项,则在开单时,所有订单都不带止盈。

如果选项“使用订单止盈(是)”:

再次给出选项:“使用自动计算订单止盈(是)或(否)”

如果选项“自动计算订单止盈(是)”,则由智能系统自动执行止盈计算。

如果选项“自动计算订单止盈(否)“,则交易者必须以点数输入订单止盈值。

3. 尾随止损和尾随止盈

  • 选项:“使用尾随止损/止盈(是)或(否)”

如果”使用尾随止损/止盈(否)“选项,则智能系统不会执行尾随止损和尾随止盈。

如果选项“使用尾随 SL/TP(是)”:

再次给出选项:“使用自动尾随(是)或(否)”

如果选项“使用自动尾随(是)”,则尾随止损将由智能系统使用

自动选择的时间帧计算三角形移动平均缓冲区 0(指标数据),同时

基于变量值 TPmin(最小尾随盈利值)执行尾随止盈。

如果选项”使用自动尾随(否)“,则智能系统将采用输入属性中的值执行尾随止损。

注意:智能系统将同时执行尾随止盈和尾随止损。

尾随止损价格函数:

 
 

double MCEA::TSPrice(const string xsymb,ENUM_POSITION_TYPE ptype,int TS_type) { //--- int br=2; double pval=0.0; int x=PairsIdxArray(xsymb); Pips(xsymb); //-- switch(TS_type) { case 0: { RefreshTick(xsymb); if(ptype==POSITION_TYPE_BUY) pval=mc_symbol.NormalizePrice(mc_symbol.Bid()-TSval*pip); if(ptype==POSITION_TYPE_SELL) pval=mc_symbol.NormalizePrice(mc_symbol.Ask()+TSval*pip); break; } case 1: { double TriMAID[]; //-- ArrayResize(TriMAID,br,br); ArraySetAsSeries(TriMAID,true); CopyBuffer(hTriMAt[x],0,0,br,TriMAID); // Copy buffer 0 from the hTriMAt indicator handle //-- RefreshTick(xsymb); if(ptype==POSITION_TYPE_BUY && (mc_symbol.Bid()>mc_symbol.NormalizePrice(TriMAID[0]+TSval*pip))) pval=TriMAID[0]; if(ptype==POSITION_TYPE_SELL && (mc_symbol.Ask()<mc_symbol.NormalizePrice(TriMAID[0]-TSval*pip))) pval=TriMAID[0]; break; } } //-- return(pval); //--- } //-end TSPrice() //---------//

修改 SL/TP 函数:

 
 

bool MCEA::ModifySLTP(const string symbx,int TS_type) { //--- ResetLastError(); MqlTradeRequest req={}; MqlTradeResult res={}; MqlTradeCheckResult check={}; //-- int TRSP=TS_type; bool modist=false; int x=PairsIdxArray(symbx); Pips(symbx); //-- int total=PositionsTotal(); //-- for(int i=total-1; i>=0; i--) { string symbol=PositionGetSymbol(i); if(symbol==symbx && mc_position.Magic()==magicEA) { ENUM_POSITION_TYPE opstype = mc_position.PositionType(); if(opstype==POSITION_TYPE_BUY) { RefreshTick(symbol); double price = mc_position.PriceCurrent(); double vtrsb = mc_symbol.NormalizePrice(TSPrice(symbx,opstype,TRSP)); double pos_open = mc_position.PriceOpen(); double pos_stop = mc_position.StopLoss(); double pos_profit = mc_position.Profit(); double pos_swap = mc_position.Swap(); double pos_comm = mc_position.Commission(); double netp=pos_profit+pos_swap+pos_comm; double modstart=mc_symbol.NormalizePrice(pos_open+TSmin*pip); double modminsl=mc_symbol.NormalizePrice(vtrsb+TSmin*pip); double modbuysl=vtrsb; double modbuytp=mc_symbol.NormalizePrice(price+TPmin*pip); bool modbuy = (price>modminsl && modbuysl>modstart && (pos_stop==0.0||modbuysl>pos_stop)); //-- if(modbuy && netp>0.05) { modist=mc_trade.PositionModify(symbol,modbuysl,modbuytp); } } if(opstype==POSITION_TYPE_SELL) { RefreshTick(symbol); double price = mc_position.PriceCurrent(); double vtrss = mc_symbol.NormalizePrice(TSPrice(symbx,opstype,TRSP)); double pos_open = mc_position.PriceOpen(); double pos_stop = mc_position.StopLoss(); double pos_profit = mc_position.Profit(); double pos_swap = mc_position.Swap(); double pos_comm = mc_position.Commission(); double netp=pos_profit+pos_swap+pos_comm; double modstart=mc_symbol.NormalizePrice(pos_open-TSmin*pip); double modminsl=mc_symbol.NormalizePrice(vtrss-TSmin*pip); double modselsl=vtrss; double modseltp=mc_symbol.NormalizePrice(price-TPmin*pip); bool modsel = (price<modminsl && modselsl<modstart && (pos_stop==0.0||modselsl<pos_stop)); //-- if(modsel && netp>0.05) { modist=mc_trade.PositionModify(symbol,modselsl,modseltp); } } } } //-- return(modist); //--- } //-end ModifySLTP() //---------//

添加图片注释,不超过 140 字(可选)

4. 手工订单管理。

为了提高该多币种智能交易系统的效率,将添加若干个手工单击按钮

1. Set SL / TP All Orders — 为所有订单设置止损/止盈

当交易者在输入参数设置”使用订单止损(否)“和/或”使用订单止盈(否)“时 但交易者打算对所有订单使用止损或止盈时,只需单击按钮 “为所有订单设置止损/止盈”,所有订单将被修改,并会应用止损和/或止盈。

2. Close All Orders — 所有订单平仓 如果交易者想把所有订单平仓,那么只需单击 “所有订单平仓” 按钮,所有持仓将被平仓。 3. Close All Orders Profit — 所有盈利单平仓 如果交易者想把所有已盈利的订单平仓,那么只需单击按钮 “所有盈利单平仓”,所有已经盈利的持仓将被平仓。

5. 管理订单和图表品种。

对于仅自单一品种图表交易 30 对的多币种智能系统,如果为所有品种提供按钮面板,这将非常有效和高效,如此交易者只需单击一次即可更改图表或品种。

利用 MQL5 程序中实现计划

1. 程序头和输入属性

包含 MQL5 头文件

 
 

//+------------------------------------------------------------------+ //| Include | //+------------------------------------------------------------------+ #include <Trade\Trade.mqh> #include <Trade\PositionInfo.mqh> #include <Trade\SymbolInfo.mqh> #include <Trade\AccountInfo.mqh> //-- CTrade mc_trade; CSymbolInfo mc_symbol; CPositionInfo mc_position; CAccountInfo mc_account; //---

所用时区的枚举

 
 

//-- enum tm_zone { Cus_Session, // Trading on Custom Session New_Zealand, // Trading on New Zealand Session Australia, // Trading on Autralia Sydney Session Asia_Tokyo, // Trading on Asia Tokyo Session Europe_London, // Trading on Europe London Session US_New_York // Trading on US New York Session }; //--

选择时间钟点的枚举

 
 

//-- enum swhour { hr_00=0, // 00:00 hr_01=1, // 01:00 hr_02=2, // 02:00 hr_03=3, // 03:00 hr_04=4, // 04:00 hr_05=5, // 05:00 hr_06=6, // 06:00 hr_07=7, // 07:00 hr_08=8, // 08:00 hr_09=9, // 09:00 hr_10=10, // 10:00 hr_11=11, // 11:00 hr_12=12, // 12:00 hr_13=13, // 13:00 hr_14=14, // 14:00 hr_15=15, // 15:00 hr_16=16, // 16:00 hr_17=17, // 17:00 hr_18=18, // 18:00 hr_19=19, // 19:00 hr_20=20, // 20:00 hr_21=21, // 21:00 hr_22=22, // 22:00 hr_23=23 // 23:00 }; //--

选择时间分钟的枚举

 
 

//-- enum inmnt { mn_00=0, // Minute 0 mn_05=5, // Minute 5 mn_10=10, // Minute 10 mn_15=15, // Minute 15 mn_20=20, // Minute 20 mn_25=25, // Minute 25 mn_30=30, // Minute 30 mn_35=35, // Minute 35 mn_40=40, // Minute 40 mn_45=45, // Minute 45 mn_50=50, // Minute 50 mn_55=55 // Minute 55 }; //--

选择可交易选项对的枚举

 
 

//-- enum PairsTrade { All30, // All Forex 30 Pairs TrdWi, // Trader Wishes Pairs Usds, // Forex USD Pairs Eurs, // Forex EUR Pairs Gbps, // Forex GBP Pairs Auds, // Forex AUD Pairs Nzds, // Forex NZD Pairs Cads, // Forex CDD Pairs Chfs, // Forex CHF Pairs Jpys // Forex JPY Pairs }; //--

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值