系统交易

AK-47 Scalper EA:MetaTrader 4 的最佳交易助手
MetaTrader4
AK-47 Scalper EA:MetaTrader 4 的最佳交易助手

1. 输入参数 #define ExtBotName "AK-47 Scalper EA" // 机器人名称 #define  Version "1.00" //--- 输入参数设置 extern string  EASettings        = "---------------------------------------------"; //-------- <EA 设置> -------- input int      InpMagicNumber    = 124656;   //魔术编号 extern string  TradingSettings   = "---------------------------------------------"; //-------- <交易设置> -------- input double   Inpuser_lot       = 0.01;     //手数 input double   InpSL_Pips        = 3.5      //止损(点数) input double   InpMax_spread     = 0.5      //最大允许点差(点数)(0 = 浮动) extern string  MoneySettings     = "---------------------------------------------"; //-------- <资金设置> -------- input bool     isVolume_Percent  = true;     //允许按百分比计算手数 input double   InpRisk           = 3        //账户风险百分比 (%) input string   TimeSettings      = "---------------------------------------------"; //-------- <交易时间设置> -------- input bool     InpTimeFilter     = true      //交易时间过滤 input int      InpStartHour      = 2         //开始小时 input int      InpStartMinute    = 30        //开始分钟 input int      InpEndHour        = 21        //结束小时 input int      InpEndMinute      = 0         //结束分钟 2. 本地变量初始化 //--- 变量 int      Pips2Points;               // 滑点 3 点  3=点    30=点 double   Pips2Double;               // 止损 15 点    0.015      0.0150 int      InpMax_slippage   = 3;     // 最大滑点 bool     isOrder           = false; // 只开1个订单 int      slippage; string   strComment        = ""; 3. 主代码 a/ 机器人初始化函数 int OnInit()   { //---      //3或5位数检测    //点数和点位    if (Digits % 2 == 1)    {       Pips2Double  = _Point*10;       Pips2Points  = 10;       slippage = 10* InpMax_slippage;    }    else    {           Pips2Double  = _Point;       Pips2Points  =  1;       slippage = InpMax_slippage;    }    //---    return(INIT_SUCCEEDED);   } b/ 机器人每个价格更新时的处理函数 void OnTick()   { //---      if(IsTradeAllowed() == false)      {       Comment("AK-47 EA\n交易不允许。");       return;      }             MqlDateTime structTime;        TimeCurrent(structTime);        structTime.sec = 0;               //设置开始时间        structTime.hour = InpStartHour;        structTime.min = InpStartMinute;              datetime timeStart = StructToTime(structTime);               //设置结束时间        structTime.hour = InpEndHour;        structTime.min = InpEndMinute;        datetime timeEnd = StructToTime(structTime);               double acSpread = MarketInfo(Symbol(), MODE_SPREAD);        StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);              strComment = "\n" + ExtBotName + " - v." + (string)Version;       strComment += "\nGMT 时间 = " + TimeToString(TimeGMT(),TIME_DATE|TIME_SECONDS);       strComment += "\n交易时间 = [" + (string)InpStartHour + "h" + (string)InpStartMinute + " --> " +  (string)InpEndHour + "h" + (string)InpEndMinute + "]";              strComment += "\n当前点差 = " + (string)acSpread + " 点数";       strComment += "\n当前止损水平 = " + (string)StopLevel + " 点数";              Comment(strComment);          //更新值       UpdateOrders();              TrailingStop();              //检查交易时间       if(InpTimeFilter)       {          if(TimeCurrent() >= timeStart && TimeCurrent() < timeEnd)          {             if(!isOrder) OpenOrder();          }       }       else       {          if(!isOrder) OpenOrder();       }   } 3.1 计算信号以发出订单 void OpenOrder(){       //int OrdType = OP_SELL;//-1;    double TP = 0;    double SL = 0;    string comment = ExtBotName;    //计算手数    double lot1 = CalculateVolume();       //if(OrdType == OP_SELL){       double OpenPrice = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);       SL = NormalizeDouble(Ask + StopLevel * _Point + InpSL_Pips/2 * Pips2Double, Digits);            if(CheckSpreadAllow())                                    //检查点差       {          if(!OrderSend(_Symbol, OP_SELLSTOP, lot1, OpenPrice, slippage, SL, TP, comment, InpMagicNumber, 0, clrRed))          Print(__FUNCTION__,"--> 订单发送错误 ",GetLastError());       }    //} } 3.2 计算手数 double CalculateVolume()   {    double LotSize = 0;    if(isVolume_Percent == false)      {       LotSize = Inpuser_lot;      }    else      {       LotSize = (InpRisk) * AccountFreeMargin();       LotSize = LotSize /100000;       double n = MathFloor(LotSize/Inpuser_lot);       //Comment((string)n);       LotSize = n * Inpuser_lot;       if(LotSize < Inpuser_lot)          LotSize = Inpuser_lot;       if(LotSize > MarketInfo(Symbol(),MODE_MAXLOT))          LotSize = MarketInfo(Symbol(),MODE_MAXLOT);       if(LotSize < MarketInfo(Symbol(),MODE_MINLOT))          LotSize = MarketInfo(Symbol(),MODE_MINLOT);      }    return(LotSize);   } 3.3 这个EA有“跟随止损”功能, 止损会随着价格变化而变化(下跌) void TrailingStop()   {    for(int i = OrdersTotal() - 1; i >= 0; i--)      {       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))         {          if((OrderMagicNumber() == InpMagicNumber) && (OrderSymbol() == Symbol()))   //_Symbol))            {             //对于卖出订单             if(OrderType() == OP_SELL)               {                   //--计算止损当价格变化时                   double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;                   if(SL_in_Pip > InpSL_Pips){                         double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + InpSL_Pips * Pips2Double, Digits);                     if(!OrderModify(OrderTicket(), OrderOpenPrice(), newSL, OrderTakeProfit(), 0, clrRed))                         {                            Print(__FUNCTION__,"--> 修改订单错误 ",GetLastError());                     continue;                         }               }                          //对于卖出止损订单             else if(OrderType() == OP_SELLSTOP)               {                   double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;                                      if(SL_in_Pip < InpSL_Pips/2){                      double newOP = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);                      double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + (InpSL_Pips/2) * Pips2Double, Digits);                                           if(!OrderModify(OrderTicket(), newOP, newSL, OrderTakeProfit(), 0, clrRed))                          {                                  Print(__FUNCTION__,"--> 修改挂单错误!", GetLastError());                                 }                          }               }            }      }   }

2023.01.14
XP Forex 交易管家MT5:MetaTrader 5的最佳交易助手
MetaTrader5
XP Forex 交易管家MT5:MetaTrader 5的最佳交易助手

在外汇交易中,Forex 交易管家MT5为MetaTrader 5的订单管理带来了极大的便利。如果你新开了一个订单,这个管家会自动为你设置止损和止盈。当价格波动时,它还能将止损调整至保本状态(即止损=开盘价),或者通过移动止损(跟踪止损)来保护你的利润。 Forex 交易管家能够控制当前交易品种的订单(也就是EA工作的品种),或者所有已经开立的订单(无论品种如何),并且可以将止损和止盈隐藏起来,避免被经纪商看到。这是一个管理手动交易策略的工具(可以针对所有品种或仅当前图表的品种),主要功能包括: 为交易设置止损和/或止盈(以点数为单位) 跟踪止损功能,可以根据价格动态调整止损 保本功能,可以在特定距离内将止损移动到保本位置 止损和止盈可以通过经纪商进行管理(标准方式)或隐蔽模式进行管理——即对经纪商隐藏。 参数设置: “SLTP 参数” 止损 – 以点数为单位的止损 止盈 – 以点数为单位的止盈 “保本设置” 使用保本(true/false)– 允许对已开交易仅使用保本功能 保本激活(BEActivation)– 激活保本功能时的利润(以点数为单位) 保本水平(BELevel)– 保本功能设置止损时的额外距离(以点数为单位) “跟踪止损” 使用跟踪止损(true/false)– 允许对已开交易仅使用跟踪止损功能 启用跟踪止损时的利润(TSStart)– 启用跟踪止损功能时的利润(以点数为单位) 跟踪止损的最小差距(TSStep)– 新的止损和当前止损之间的最小点数差距,用于允许移动止损 跟踪止损时的距离(TSDistance)– 跟踪止损功能设置止损时的距离(以点数为单位) “行为设置” 隐蔽模式(StealthMode)– 隐藏止损/止盈水平,EA会在这些水平上程序化地平仓 仅当前品种(OnlyCurrentPair)– 仅允许管理当前图表符号的交易(true)或所有品种(false) 信息: 所有交易和功能的参数都可以在EA的参数设置中进行调整。Forex 交易管家还会在图表上显示当前的每日盈亏(以点数和账户货币为单位)。

2023.01.10
掌握XP Forex交易管理器网格MT5:MetaTrader 5的完美助手
MetaTrader5
掌握XP Forex交易管理器网格MT5:MetaTrader 5的完美助手

XP Forex交易管理器网格MT5是帮助你管理订单、实现交易目标的利器。只需在首次交易中设置好止盈,启动EA,并设定你希望获得的利润(以点数计算),EA将会自动管理你的持仓,收集设定好的点数。这是一种针对当前货币对的手动交易管理策略,能够在网格管理中为当前已开仓的交易添加新仓位(每个交易之间的距离可以自定义),最多可开15个交易(或更少)。前3个交易将独立设置止盈,而第4个交易则会在整体水平(盈亏平衡点)上关闭整个网格。若止盈交易关闭后,可以重新开启。整个周期如出现的亏损超过允许的风险余额百分比,则会关闭所有交易。 参数设置: “附加交易参数”: AddNewTradeAfter – 在最近一次交易后,添加到网格的交易间距(以点数计算) “止盈设置” TakeProfit1Total(数字)– 首个仓位需要的总止盈(以点数计算) TakeProfit1Partitive – 第一个周期初始仓位的止盈(以点数计算) TakeProfit1Offset – 需要的最小距离(以点数计算),与上一个关闭的首次仓位止盈之间的间距,以便重新开启该交易 TakeProfit 2/3 – 第二/第三个周期仓位的独立止盈(以点数计算) TakeProfit 4/5/6/…15Total – 在周期内所有仓位的总止盈(以点数计算,适用于4个或更多的已开仓交易) “交易参数” MaxOrders – 网格中允许的最大交易数量 风险余额% – 账户余额允许的最大亏损百分比(关闭所有已开仓位) 手数 – EA开仓的手数 滑点 – 允许的滑点(以点数计算) 信息: 所有交易和功能的参数都可以在EA的设定中进行调整。Forex交易管理器网格还会在图表上显示当前周期的盈亏信息(以点数和账户货币表示)。

2023.01.10
XP外汇交易管理器MT4:提升您的交易策略
MetaTrader4
XP外汇交易管理器MT4:提升您的交易策略

大家好!今天我想和大家分享一个非常实用的工具——XP外汇交易管理器MT4。这个工具可以大大简化在MetaTrader 4上的订单管理。 当你开启一个新的交易订单时,交易管理器会自动为你设置止损和获利点位。而当市场价格波动时,这个程序能够将止损点位移动到盈亏平衡(即止损=开盘价),或者持续移动止损(追踪止损)来保护你的利润。 XP外汇交易管理器可以管理当前符号的订单(即EA有效的地方),也可以管理所有打开的订单(不论符号如何),并且能够将止损和获利点位隐藏起来,避免被经纪商看到。这是一种管理手动交易的策略,可以对所有符号或者仅针对当前图表的符号进行操作,具体功能包括: 为交易设置止损和/或获利点位(以点数为单位) 追踪止损功能,根据价格调整止损 盈亏平衡功能,可在设定的距离内将止损移动到盈亏平衡 止损/获利点位可以由经纪商进行管理(标准方式),也可以在隐秘模式下进行管理——对经纪商隐藏。 参数设置: “止损/获利参数” 止损 – 交易的止损点数 获利 – 交易的获利点数 “盈亏平衡” 使用盈亏平衡 (true/false) – 允许仅对打开的交易使用盈亏平衡功能 盈亏平衡激活点 – 激活盈亏平衡功能时的利润点数 盈亏平衡点位 – 根据盈亏平衡功能设定的额外距离(点数) “追踪止损” 使用追踪止损 (true/false) – 允许仅对打开的交易使用追踪止损功能 追踪止损激活点 – 激活追踪止损功能时的利润点数 追踪止损步距 – 新的止损和当前止损之间的最小差值(点数) 追踪止损距离 – 根据追踪止损功能设定的距离(点数) “行为设置” 隐秘模式 (true/false) – 隐藏止损和获利点位,EA会自动根据这些点位平仓 仅当前交易对 (true/false) – 允许仅管理当前图表符号的交易 (true) 或所有交易对 (false) 信息: 所有交易和功能的参数均可在EA的参数设置中进行调整。XP外汇交易管理器还会在图表上显示当前的每日盈亏(以点数和账户货币表示)。

2023.01.10
XP外汇交易管理器Grid MT4:提升您的交易效率
MetaTrader4
XP外汇交易管理器Grid MT4:提升您的交易效率

XP外汇交易管理器Grid MT4是帮助您高效管理订单、实现交易目标的好帮手。您只需下达第一笔订单,并设置好止盈点,运行EA(专家顾问),然后在参数中设置您希望获得的利润(点数)。EA会自动管理您的持仓,直到达到设定的点数。 该策略旨在管理当前货币对上已开仓的手动交易。它会根据设定的距离(以点数为单位)在现有交易中增加新仓位,最多可增加15个交易(或更少)。前3笔交易会分别设定个别的止盈点,而从第4笔交易开始,EA将在整体水平(保本)上关闭整个网格。 一旦第一个止盈被触发,交易可以重新开启。如果亏损超过允许的风险余额百分比,整个交易周期将会关闭。 参数设置: “附加交易参数”: AddNewTradeAfter – 在上一个交易之后,以点数为单位的距离,达到此距离后将增加新交易到网格中 “止盈点”: TakeProfit1Total (数字) – 从第一笔持仓开始所需的总止盈点数 TakeProfit1Partitive – 本周期内第一笔持仓的初始止盈点数 TakeProfit1Offset – 从最后一笔已关闭的第一笔持仓的止盈点到重新开启此交易所需的最小距离(以点数为单位) TakeProfit 2/3 – 本周期内第二/第三笔持仓的个别止盈点数 TakeProfit 4/5/6/...15Total – 从所有持仓中(开启4笔或更多交易)计算的总止盈点数 “交易参数”: MaxOrders – 网格中允许的最大交易数量 风险余额 % – 账户余额最大允许的亏损百分比(关闭所有已开仓位) Lots – EA开仓时的手数 Slippage – 允许的滑点(以点数为单位) 信息: 所有的交易参数和功能都可以在EA的参数设置中进行调整。XP外汇交易管理器Grid还可以在图表上显示当前周期的盈亏信息,以点数和账户货币为单位。

2023.01.10
懒人交易机器人MT5:日内突破EA的使用与设置
MetaTrader5
懒人交易机器人MT5:日内突破EA的使用与设置

1. 输入参数 输入参数设置 // 导入外部类 #include <Trade\PositionInfo.mqh> #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> #include <Trade\AccountInfo.mqh> #include <Trade\OrderInfo.mqh> //--- 定义代码可读性的预定义变量 #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) //--- 输入参数 input string EASettings = "---------------------------------------------"; //-------- <EA 设置> -------- input int InpMagicNumber = 123456; // 魔法数字 input string InpBotName = "LazyBot_V1"; // 机器人名称 input string TradingSettings = "---------------------------------------------"; //-------- <交易设置> -------- input double Inpuser_lot = 0.01; // 手数 input double Inpuser_SL = 5.0; // 止损(点数) input double InpAddPrice_pip = 0; // 从[最高]、[最低]到开盘价的距离(点数) input int Inpuser_SLippage = 3; // 最大允许滑点(点数) input double InpMax_spread = 0; // 最大允许点差(点数)(0 = 浮动) input string TimeSettings = "---------------------------------------------"; //-------- <交易时间设置> -------- input bool isTradingTime = true; // 允许交易时间 input int InpStartHour = 7; // 开始小时 input int InpEndHour = 22; // 结束小时 input string MoneyManagementSettings = "---------------------------------------------"; //-------- <资金设置> -------- input bool isVolume_Percent = false; // 允许按百分比计算交易量 input double InpRisk = 1; // 风险百分比 2. 本地变量初始化 // 本地参数 datetime last; int totalBars; int Pips2Points; // 滑点 3点 3=点数 30=点数 double Pips2Double; // 止损 15点 0.015 0.0150 double slippage; double acSpread; string strComment = ""; CPositionInfo m_position; // 交易头寸对象 CTrade m_trade; // 交易对象 CSymbolInfo m_symbol; // 交易品种信息对象 CAccountInfo m_account; // 账户信息包装 COrderInfo m_order; // 待处理订单对象 3. 主代码 本策略每天会删除所有旧订单,并找到前一个日内K线的最高和最低值,发送两个挂单“BUY_STOP”、“SELL_STOP”。(无止盈) 3.1 专家初始化函数 int OnInit() { //--- // 检测3位或5位小数 // 点和滑点 if(_Digits % 2 == 1) { Pips2Double = _Point * 10; Pips2Points = 10; slippage = 10 * Inpuser_SLippage; } else { Pips2Double = _Point; Pips2Points = 1; slippage = Inpuser_SLippage; } if(!m_symbol.Name(Symbol())) // 设置品种名称 return(INIT_FAILED); RefreshRates(); //--- m_trade.SetExpertMagicNumber(InpMagicNumber); m_trade.SetMarginMode(); m_trade.SetTypeFillingBySymbol(m_symbol.Name()); m_trade.SetDeviationInPoints(slippage); //--- return(INIT_SUCCEEDED); } 3.2 专家按钮信息 void OnTick() { if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) == false) { Comment("LazyBot\n交易不被允许。"); return; } // 获取交易时间 // 开盘时间段 // 伦敦 14h - 23h GMT 越南 // 纽约 19h - 04h GMT 越南 MqlDateTime timeLocal; MqlDateTime timeServer; TimeLocal(timeLocal); TimeCurrent(timeServer); // 节假日不进行交易 if(timeServer.day_of_week == 0 || timeServer.day_of_week == 6) return; int hourLocal = timeLocal.hour; int hourCurrent = timeServer.hour; acSpread = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); strComment = "\n本地时间 = " + hourLocal; strComment += "\n当前时间 = " + hourCurrent; strComment += "\n点差 = " + (string)acSpread; strComment += "\n总K线数 = " + (string)totalBars; Comment(strComment); // 检查跟踪止损 TrailingSL(); if(last != iTime(m_symbol.Name(), PERIOD_D1, 0)) { // 检查交易时间 if(isTradingTime) { if(hourCurrent >= InpStartHour) { DeleteOldOrds(); // 发送订单BUY_STOP和SELL_STOP OpenOrder(); last = iTime(m_symbol.Name(), PERIOD_D1, 0); } } else { DeleteOldOrds(); // 发送订单BUY_STOP和SELL_STOP OpenOrder(); last = iTime(m_symbol.Name(), PERIOD_D1, 0); } } } 4. 计算信号并发送订单 void OpenOrder() { // 初始化买卖止损价格 double TP_Buy = 0, TP_Sell = 0; double SL_Buy = 0, SL_Sell = 0; // 检查最大点差 if(InpMax_spread != 0){ if(acSpread > InpMax_spread){ Print(__FUNCTION__, " > 当前点差大于用户设置的点差!..."); return; } } // 获取前一个日内的最高和最低 double Bar1High = m_symbol.NormalizePrice(iHigh(m_symbol.Name(), PERIOD_D1, 1)); double Bar1Low = m_symbol.NormalizePrice(iLow(m_symbol.Name(), PERIOD_D1, 1)); // 计算手数 double lot1 = CalculateVolume(); // 设置开盘价 double OpenPrice = m_symbol.NormalizePrice(Bar1High + InpAddPrice_pip * Pips2Double); // 处理BUY_STOP TP_Buy = 0; SL_Buy = m_symbol.NormalizePrice(OpenPrice - Inpuser_SL * Pips2Double); // 获取总K线数量 总K线数 = iBars(m_symbol.Name(), PERIOD_D1); string comment = InpBotName + ";" + m_symbol.Name() + ";" + totalBars; // 检查交易条件并执行BUY_STOP if(CheckVolumeValue(lot1) && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_BUY_STOP, OpenPrice) && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_BUY) && CheckStopLoss(OpenPrice, SL_Buy)) { if(!m_trade.BuyStop(lot1, OpenPrice, m_symbol.Name(), SL_Buy, TP_Buy, ORDER_TIME_GTC, 0, comment)) Print(__FUNCTION__, "--> 买入错误"); } // 处理SELL_STOP OpenPrice = m_symbol.NormalizePrice(Bar1Low - InpAddPrice_pip * Pips2Double); TP_Sell = 0; SL_Sell = m_symbol.NormalizePrice(OpenPrice + Inpuser_SL * Pips2Double); // 检查交易条件并执行SELL_STOP if(CheckVolumeValue(lot1) && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_SELL_STOP, OpenPrice) && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_SELL) && CheckStopLoss(OpenPrice, SL_Sell)) { if(!m_trade.SellStop(lot1, OpenPrice, m_symbol.Name(), SL_Sell, TP_Sell, ORDER_TIME_GTC, 0, comment)) Print(__FUNCTION__, "--> 卖出错误"); } } 5. 删除旧订单 void DeleteOldOrds() { string sep=";"; // 分隔符 ushort u_sep; // 分隔符字符代码 string result[]; // 数组用于获取字符串 for(int i = OrdersTotal() - 1; i >= 0; i--) { if(m_order.SelectByIndex(i)) { // 获取分隔符代码 u_sep = StringGetCharacter(sep, 0); string Ordcomment = m_order.Comment(); // 分割OrderComment(EAName;Symbol;totalBar)获取订单符号 int k = StringSplit(Ordcomment, u_sep, result); if(k > 2) { string sym = m_symbol.Name(); if((m_order.Magic() == InpMagicNumber) && (sym == result[1])) { m_trade.OrderDelete(m_order.Ticket()); } } } } 6. 跟踪止损 void TrailingSL() { double SL_in_Pip = 0; for(int i = PositionsTotal() - 1; i >= 0; i--) { if(m_position.SelectByIndex(i)) { if((m_position.Magic() == InpMagicNumber) && (m_position.Symbol() == m_symbol.Name())) { // 处理买入订单 if(m_position.PositionType() == POSITION_TYPE_BUY) { // 计算SL SL_in_Pip = NormalizeDouble((Bid - m_position.StopLoss()), _Digits) / Pips2Double; if(SL_in_Pip > Inpuser_SL) { m_position.StopLoss() = NormalizeDouble(Bid - (Inpuser_SL * Pips2Double), _Digits); m_trade.PositionModify(m_position.Ticket(), m_position.StopLoss(), m_position.TakeProfit()); } } // 处理卖出订单 if(m_position.PositionType() == POSITION_TYPE_SELL) { SL_in_Pip = NormalizeDouble((m_position.StopLoss() - Ask), _Digits) / Pips2Double; if(SL_in_Pip > Inpuser_SL) { m_position.StopLoss() = NormalizeDouble(Ask + (Inpuser_SL * Pips2Double), _Digits); m_trade.PositionModify(m_position.Ticket(), m_position.StopLoss(), m_position.TakeProfit()); } } } } } 想了解更多关于MQL4和MQL5的内容,可以查看下面的视频: 视频 MQL4: 视频 MQL5:

2022.12.14
均值回归策略:MetaTrader 4的优选专家顾问
MetaTrader4
均值回归策略:MetaTrader 4的优选专家顾问

均值回归策略在主要外汇货币对的日线图上表现最佳。 使用建议 建议先在模拟账户上测试。 此专家顾问仅在开盘时的价格进行交易! 如果你不希望在亏损时增加手数,可以将“增加因子”设置为:0 输入参数 使用固定收益止盈:是否使用固定金额止盈(值:true/false)。 止盈金额:止盈金额(值:10-100)。 使用百分比止盈:是否使用百分比止盈(值:true/false)。 止盈百分比:止盈百分比(值:10-100)。 ------------[多单的资金跟踪止损]---------------------- 启用跟踪止损:是否启用资金跟踪止损(值:true/false)。 止盈金额:当前货币的止盈金额(值:25-200)。 止损金额:当前货币的止损金额(值:1-20)。 -------------------------------------------------------------------------------------- 退出条件:如果趋势对你不利,是否平仓以控制回撤(值:true/false)。 统计K线:统计K线数量(值:1-20)。 手数:手数大小(值:0.01-1)。 手数指数:手数大小指数(值:1.01-2)。 增加因子:如果亏损时增加手数的幅度(值:0.001-0.1)。 止损:止损(值:30-500)。/对于多单设置值600 魔术编号:魔术编号(值:1-100000)。 止盈:止盈(值:50-200)。/对于多单设置值600 快线均线:快速移动平均线(值:1-20)。 慢线均线:慢速移动平均线(值:50-200)。 卖出动量:卖出动量触发(值:0.1-0.9)。 买入动量:买入动量触发(值:0.1-0.9)。 ---------------------控制回撤----------------------------- 使用资金止损:是否使用资金止损(值:true/false)。 总资金风险:(值:0.01-20)。 ------------------------------------------------------------------------------- 最大交易数:(值:1-12)。 高低点数:高低点数量(值:1-10)。 ----------------如果只使用一个交易:----------------------- ///////////////////////////////////////////////////////////////////// 使用跟踪止损:是否使用跟踪止损(值:true/false)。 何时跟踪:何时开始跟踪(值:40-100)。 跟踪金额:跟踪金额(值:40-100)。 距离K线:距离K线的距离(值:1-100)。 使用K线跟踪:是否使用K线跟踪(值:true/false)。 X:K线数量(值:1-100)。 启用保本:是否启用“保本”(值:true/false)。 何时保本:何时移动到保本(值:1-30)。 移动止损的点数:移动止损的点数(值:1-30)。 你应该每几个月对这个专家顾问进行优化,并使用上述相同的输入参数。 你可以将其用作对冲网格专家顾问或单一交易专家顾问。 如何进行回测:点击这里查看回测方法

2022.10.26
首页 上一页 6 7 8 9 10 11 12 13 14 15 16 下一页 末页