EA: Multi Arbitration 1.1xx - 页 2

 

你好、

感谢您的迅速回复,弗拉基米尔!


我发现在真实账户(MetaQuotes模拟账户 以外的任何账户)上运行 ExtArrSymbols 函数时,机器人会出错。我试着找出出错的原因(抱歉延迟回复!)。在排除故障时,我发现删除该参数后,机器人会 "运行",但不会获得符号 2 的任何信息。这就失去了作用,因为它不会进行任何交易。不过,我还是缩小了范围,也许能为您节省一些时间。


感谢您为这些机器人投入了大量的工作和精力。老实说,这个机器人非常棒,我很想在真实账户上测试一下!

下面是日志记录的图片。


编辑:机器人运行后立即关闭。


希望尽快收到您的回复!

Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Account Properties
Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Account Properties
  • www.mql5.com
, then each symbol positions will be closed in the same order, in which they are opened, starting with the oldest one. In case of an attempt to close positions in a different order, the trader will receive an appropriate error. There are several types of accounts that can be opened on a trade server. The type of account on which an MQL5 program...
附加的文件:
 
SaltySpade :

你好、

感谢您的迅速回复,弗拉基米尔!


我发现在真实账户(MetaQuotes模拟账户 以外的任何账户)上运行 ExtArrSymbols 函数时,机器人会出错。我试着找出出错的原因(很抱歉延迟回复!)。在排除故障时,我发现删除该参数后,机器人会 "运行",但不会获得符号 2 的任何信息。这就失去了作用,因为它不会进行任何交易。不过,我还是缩小了范围,也许能为您节省一些时间。


感谢您为这些机器人投入了大量的工作和精力。老实说,这个机器人非常棒,我很想在真实账户上测试一下!

下面是日志记录的图片。


编辑:运行后机器人立即关闭。


希望尽快收到您的回复!

1.日志文件无需作为图片附件!日志文件必须从 "日志 "选项卡和 "专家 "选项卡中提取并附加到邮件中。也就是说,我应该能用 NotePad 打开日志文件。

2.阅读您的图片 - 错误原因就在其中 - 您指定了一个不存在的交易符号。

 

抱歉!


我一直使用欧元/英镑 (11) 作为辅助货币。我还尝试了其他多种货币,但都出现了同样的错误。


以下是日志记录:


2020.08.06 04:15:47.210 MetaTester 5 started on 127.0.0.1:3000
2020.08.06 04:15:47.215 initialization finished
2020.08.06 04:15:47.304 login (build 2568)
2020.08.06 04:15:47.320 4372 bytes of account info loaded
2020.08.06 04:15:47.320 1482 bytes of tester parameters loaded
2020.08.06 04:15:47.320 2236 bytes of input parameters loaded
2020.08.06 04:15:47.321 1338 bytes of symbols list loaded (194 symbols)
2020.08.06 04:15:47.321 expert file added: Experts\EURGBP1.ex5. 92553 bytes loaded
2020.08.06 04:15:47.335 11262 Mb available, 140 blocks set for ticks generating
2020.08.06 04:15:47.335 calculate profit in pips, initial deposit 3000, leverage 1:100
2020.08.06 04:15:47.339 successfully initialized
2020.08.06 04:15:47.339 94 Kb of total initialization data received
2020.08.06 04:15:47.339 Intel Core i7-10510 U  @ 1.80 GHz, 16182 MB
2020.08.06 04:15:47.654 EURGBP.: symbol to be synchronized
2020.08.06 04:15:47.654 EURGBP.: symbol synchronized, 3800 bytes of symbol info received
2020.08.06 04:15:47.657 EURGBP.: history synchronization started
2020.08.06 04:15:47.659 EURGBP.: load 29 bytes of history data to synchronize in 0:00:00.001
2020.08.06 04:15:47.659 EURGBP.: history synchronized from 2015.07.14 to 2020.08.04
2020.08.06 04:15:47.662 EURGBP.: ticks synchronization started
2020.08.06 04:15:47.663 EURGBP.: load 36 bytes of tick data to synchronize in 0:00:00.000
2020.08.06 04:15:47.663 EURGBP.: history ticks synchronized from 2018.01.28 to 2020.08.03
2020.08.06 04:15:47.665 EURGBP.,M1: history cache allocated for 774969 bars and contains 455 bars from 2017.01.02 00:00 to 2018.07.13 00:00
2020.08.06 04:15:47.665 EURGBP.,M1: history begins from 2017.01.02 00:00
2020.08.06 04:15:47.679 EURGBP.,M1 (BitForex-MetaTrader5): generating based on real ticks
2020.08.06 04:15:47.679 testing with execution delay 127 milliseconds
2020.08.06 04:15:47.679 EURGBP.,M1: testing of Experts\EURGBP1.ex5 from 2018.07.14 00:00 to 2020.08.04 00:00 started with inputs:
2020.08.06 04:15:47.679   InpTimeFrame=15
2020.08.06 04:15:47.679   InpSymbolTwo=11
2020.08.06 04:15:47.679   InpProfitFoClose=100
2020.08.06 04:15:47.679   m_magic=130108500
2020.08.06 04:15:47.712 2018.07.14 00:00:00   CSymbolInfo::CheckMarketWatch: Unknown symbol 'EURGBP'
2020.08.06 04:15:47.712 tester stopped because OnInit reports incorrect input parameters
2020.08.06 04:15:47.712 log file "C:\Users\zackr\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\logs\20200806.log" written
2020.08.06 04:15:47.712 test Experts\EURGBP1.ex5 on EURGBP.,M1 thread finished
2020.08.06 04:15:47.732 prepare for shutdown
Documentation on MQL5: Trade Functions / OrderCalcProfit
Documentation on MQL5: Trade Functions / OrderCalcProfit
  • www.mql5.com
The function calculates the profit for the current account, in the current market conditions, based on the parameters passed. The function is used for pre-evaluation of the result of a trade operation. The value is returned in the account currency. [out]  The variable, to which the calculated value of the profit will be written in case the...
 

Expert Advisor 会通知您输入参数 有误

2020.08.06 04:15:47.679   m_magic=130108500
2020.08.06 04:15:47.712 2018.07.14 00:00:00   CSymbolInfo::CheckMarketWatch: Unknown symbol 'EURGBP'
2020.08.06 04:15:47.712 tester stopped because OnInit reports incorrect input parameters
2020.08.06 04:15:47.712 log file "C:\Users\zackr\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\logs\20200806.log" written
2020.08.06 04:15:47.712 test Experts\EURGBP1.ex5 on EURGBP.,M1 thread finished
2020.08.06 04:15:47.732 prepare for shutdown
 
//+------------------------------------------------------------------+
//|多重仲裁 1.1xx.mq5
//|版权 © 2017, 弗拉基米尔-卡尔普托夫 ||
//|http://wmua.ru/slesar/ ||
//+------------------------------------------------------------------+
#property copyright "版权归弗拉基米尔-卡尔普托夫 2017 所有
#property link      "http://wmua.ru/slesar/"
#property version "1.104"
#property description "Run ONLY ON PERIOD_M1"
#property description "New strategy (1.1xx):"
#property description "https://www.mql5.com/en/forum/189685/page24#comment_5420669"
#property description "For \"BUY\": the next position \"BUY\" can be opened below the lowest \"BUY\""
#property description "For \"SELL\": the next position \"SELL\" can be opened above the highest \"SELL\""
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
#include <Trade\AccountInfo.mqh>
CPositionInfo  m_position;                   // 交易位置对象
CTrade         m_trade;                      // 交易对象
CSymbolInfo    m_symbol_one;                 // 符号信息对象
CSymbolInfo    m_symbol_two;                 // 符号信息对象
CAccountInfo   m_account;                    // 账户信息包装器
//--- 输入参数
input ENUM_TIMEFRAMES InpTimeFrame=PERIOD_M15;// 时间范围
input uchar    InpSymbolTwo      = 
0 ;        // 从 "0 "到 19
input double   InpProfitFoClose  = 100;      // 利润关闭
input ulong    m_magic           = 130108500;// 神奇数字
ulong          m_slippage        = 30;       // 滑动
string         ExtArrSymbols[20]=
  {
   "EURUSD","GBPUSD","USDCHF","USDJPY","USDCAD",
   "AUDUSD","AUDNZD","AUDCAD","AUDCHF","AUDJPY",
   "CHFJPY","EURGBP","EURAUD","EURCHF","EURJPY",
   "EURNZD","EURCAD","GBPCHF","GBPJPY","CADCHF"
  };
//+------------------------------------------------------------------+
//| 专家初始化函数|
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Period()!=PERIOD_M1)
     {
      return(INIT_PARAMETERS_INCORRECT);
     }
//---
   if(!m_symbol_one.Name(Symbol())) // 设置符号名称
      return(INIT_PARAMETERS_INCORRECT);
   if(!m_symbol_two.Name(ExtArrSymbols[InpSymbolTwo])) // 设置符号名称
      return(INIT_PARAMETERS_INCORRECT);
   Print("Symbol two: ",m_symbol_two.Name());

   RefreshRates(m_symbol_one);
   RefreshRates(m_symbol_two);

   m_symbol_one.Refresh();
   m_symbol_two.Refresh();
//---
   m_trade.SetExpertMagicNumber(m_magic);
//---
   if(IsFillingTypeAllowed(m_symbol_one.Name(),SYMBOL_FILLING_FOK))
      m_trade.SetTypeFilling(ORDER_FILLING_FOK);
   else if(IsFillingTypeAllowed(m_symbol_one.Name(),SYMBOL_FILLING_IOC))
      m_trade.SetTypeFilling(ORDER_FILLING_IOC);
   else
      m_trade.SetTypeFilling(ORDER_FILLING_RETURN);
//---
   m_trade.SetDeviationInPoints(m_slippage);
//---
   m_trade.SetAsyncMode(true);
//---
   bool result_one=false,result_two=false;
   while(!result_one)
      result_one=m_trade.Buy(m_symbol_one.LotsMin(),m_symbol_one.Name());
   while(!result_two)
      result_two=m_trade.Buy(m_symbol_two.LotsMin(),m_symbol_two.Name());
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 专家去初始化函数|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| 专家勾选功能|
//+------------------------------------------------------------------+
void OnTick()
  {
//--- 我们只在新栏诞生时工作
   static datetime prevtime=0;
   datetime time_0=iTime(m_symbol_one.Name(),InpTimeFrame,0);
   if(time_0==prevtime)
      return;
   prevtime=time_0;

   if(!IsTradeAllowed())
     {
      prevtime=iTime(m_symbol_one.Name(),InpTimeFrame,0);
      return;
     }

//--- 搜索最高的 "卖出 "和最低的 "买入"。
   ulong    symbol_TICKET_buy_one=0;
   ulong    symbol_TICKET_sell_one=0;
   ulong    symbol_TICKET_buy_two=0;
   ulong    symbol_TICKET_sell_two=0;

   double   price_lowest_buy_one=DBL_MAX;
   double   price_lowest_buy_two=DBL_MAX;
   double   price_highest_sell_one=DBL_MIN;
   double   price_highest_sell_two=DBL_MIN;

   int count_buys_one=0,count_sells_one=0,count_buys_two=0,count_sells_two=0;

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // 通过索引选择位置,以便进一步访问其属性
         if(m_position.Magic()==m_magic)
            if(m_position.Symbol()==m_symbol_one.Name() || m_position.Symbol()==m_symbol_two.Name())
              {
               if(m_position.PositionType()==POSITION_TYPE_BUY)
                 {
                  if(m_position.Symbol()==m_symbol_one.Name())
                    {
                     symbol_TICKET_buy_one=m_position.Ticket();
                     if(m_position.PriceOpen()<price_lowest_buy_one)
                        price_lowest_buy_one=m_position.PriceOpen();
                     count_buys_one++;
                    }
                  else if(m_position.Symbol()==m_symbol_two.Name())
                    {
                     symbol_TICKET_buy_two=m_position.Ticket();
                     if(m_position.PriceOpen()<price_lowest_buy_two)
                        price_lowest_buy_two=m_position.PriceOpen();
                     count_buys_two++;
                    }
                 }
               if(m_position.PositionType()==POSITION_TYPE_SELL)
                 {
                  if(m_position.Symbol()==m_symbol_one.Name())
                    {
                     symbol_TICKET_sell_one=m_position.Ticket();
                     if(m_position.PriceOpen()>price_highest_sell_one)
                        price_highest_sell_one=m_position.PriceOpen();
                     count_sells_one++;
                    }
                  else if(m_position.Symbol()==m_symbol_two.Name())
                    {
                     symbol_TICKET_sell_two=m_position.Ticket();
                     if(m_position.PriceOpen()>price_highest_sell_two)
                        price_highest_sell_two=m_position.PriceOpen();
                     count_sells_two++;
                    }
                 }
              }
   if(symbol_TICKET_buy_one!=0 && symbol_TICKET_sell_one!=0)
      if(count_buys_one>1 && count_sells_one>1)
         m_trade.PositionCloseBy(symbol_TICKET_buy_one,symbol_TICKET_sell_one);
   if(symbol_TICKET_buy_two!=0 && symbol_TICKET_sell_two!=0)
      if(count_buys_two>1 && count_sells_two>1)
         m_trade.PositionCloseBy(symbol_TICKET_buy_two,symbol_TICKET_sell_two);

   if(!RefreshRates(m_symbol_one) || !RefreshRates(m_symbol_two))
      return;

   CalculatePositions(count_buys_one,count_sells_one,count_buys_two,count_sells_two);
   Comment("count buys ",m_symbol_one.Name(),": ",count_buys_one,"\n",
           "count sells ",m_symbol_one.Name(),": ",count_sells_one,"\n",
           "count buys ",m_symbol_two.Name(),": ",count_buys_two,"\n",
           "count sells ",m_symbol_two.Name(),": ",count_sells_two);
//---
   int limit=m_account.LimitOrders();
   if(!RefreshRates(m_symbol_one) || !RefreshRates(m_symbol_two))
      return;
   if(count_buys_one+count_sells_one+count_buys_two+count_sells_two<limit-15)
     {
      if(m_symbol_one.Ask()<price_lowest_buy_one) // 趋势向下
         m_trade.Buy(m_symbol_one.LotsMin(),m_symbol_one.Name());
      else if(m_symbol_one.Bid()>price_highest_sell_one) // 上升趋势
      m_trade.Sell(m_symbol_one.LotsMin(),m_symbol_one.Name());
      else if(count_buys_one==0 && count_sells_one==0)
         m_trade.Buy(m_symbol_one.LotsMin(),m_symbol_one.Name());

      if(m_symbol_two.Ask()<price_lowest_buy_two) // 趋势向下
         m_trade.Buy(m_symbol_two.LotsMin(),m_symbol_two.Name());
      else if(m_symbol_two.Bid()>price_highest_sell_two) // 上升趋势
      m_trade.Sell(m_symbol_two.LotsMin(),m_symbol_two.Name());
      else if(count_buys_two==0 && count_sells_two==0)
         m_trade.Buy(m_symbol_two.LotsMin(),m_symbol_two.Name());
     }
   else
     {
      if(m_account.Profit()>0.0)
         CloseAllPositions();
     }

//---
   CalculatePositions(count_buys_one,count_sells_one,count_buys_two,count_sells_two);
   Comment("count buys ",m_symbol_one.Name(),": ",count_buys_one,"\n",
           "count sells ",m_symbol_one.Name(),": ",count_sells_one,"\n",
           "count buys ",m_symbol_two.Name(),": ",count_buys_two,"\n",
           "count sells ",m_symbol_two.Name(),": ",count_sells_two);
   if(m_account.Equity()-m_account.Balance()>InpProfitFoClose)
      CloseAllPositions();
  }
//+------------------------------------------------------------------+
//| 刷新符号报价数据|
//+------------------------------------------------------------------+
bool RefreshRates(CSymbolInfo &m_symbol)
  {
//--- 刷新率
   if(!m_symbol.RefreshRates())
      return(false);
//--- 防止返回值为 "零"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+
//| 检查是否允许指定的填充模式
//+------------------------------------------------------------------+
bool IsFillingTypeAllowed(string symbol,int fill_type)
  {
//--- 获取描述允许填充模式的属性值
   int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- 如果允许使用 fill_type 模式,则返回 true
   return((filling & fill_type)==fill_type);
  }
//+------------------------------------------------------------------+
//| 获取交易权限信息
//+------------------------------------------------------------------+
bool IsTradeAllowed()
  {
   if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
     {
      Alert("Check if automated trading is allowed in the terminal settings!");
      return(false);
     }
   if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
     {
      Alert("Check if automated trading is allowed in the terminal settings!");
      return(false);
     }
   else
     {
      if(!MQLInfoInteger(MQL_TRADE_ALLOWED))
        {
         Alert("Automated trading is forbidden in the program settings for ",__FILE__);
         return(false);
        }
     }
   if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
     {
      Alert("Automated trading is forbidden for the account ",AccountInfoInteger(ACCOUNT_LOGIN),
            " at the trade server side");
      return(false);
     }
   if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
     {
      Comment("Trading is forbidden for the account ",AccountInfoInteger(ACCOUNT_LOGIN),
              ".\n Perhaps an investor password has been used to connect to the trading account.",
              "\n Check the terminal journal for the following entry:",
              "\n\'",AccountInfoInteger(ACCOUNT_LOGIN),"\': trading has been disabled - investor mode.");
      return(false);
     }
//---
   return(true);
  }
//+------------------------------------------------------------------+
//| 计算买入和卖出的利润位置|
//+------------------------------------------------------------------+
void CalculateProfitPositions(double &profit_buys_one,double &profit_sells_one,
                              double &profit_buys_two,double &profit_sells_two)
  {
   profit_buys_one   = 0.0;
   profit_sells_one  = 0.0;
   profit_buys_two   = 0.0;
   profit_sells_two  = 0.0;

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // 通过索引选择位置,以便进一步访问其属性
         if(m_position.Magic()==m_magic)
            if(m_position.Symbol()==m_symbol_one.Name() || m_position.Symbol()==m_symbol_two.Name())
              {
               if(m_position.PositionType()==POSITION_TYPE_BUY)
                 {
                  if(m_position.Symbol()==m_symbol_one.Name())
                     profit_buys_one+=m_position.Profit();
                  else if(m_position.Symbol()==m_symbol_two.Name())
                     profit_buys_two+=m_position.Profit();
                 }

               if(m_position.PositionType()==POSITION_TYPE_SELL)
                 {
                  if(m_position.Symbol()==m_symbol_one.Name())
                     profit_sells_one+=m_position.Profit();
                  else if(m_position.Symbol()==m_symbol_two.Name())
                     profit_sells_two+=m_position.Profit();
                 }
              }
//---
   return;
  }
//+------------------------------------------------------------------+
//| 关闭所有位置|
//+------------------------------------------------------------------+
void CloseAllPositions()
  {
//m_trade.SetAsyncMode(true);
   for(int i=PositionsTotal()-1;i>=0;i--) // 返回当前位置的数量
      if(m_position.SelectByIndex(i))     // 通过索引选择位置,以便进一步访问其属性
         if(m_position.Magic()==m_magic)
            if(m_position.Symbol()==m_symbol_one.Name() || m_position.Symbol()==m_symbol_two.Name())
               m_trade.PositionClose(m_position.Ticket()); // 用指定的符号关闭一个位置
//m_trade.SetAsyncMode(false);
  }
//+------------------------------------------------------------------+
//| 计算买入和卖出仓位|
//+------------------------------------------------------------------+
void CalculatePositions(int  &count_buys_one,int  &count_sells_one,int  &count_buys_two,int  &count_sells_two)
  {
   count_buys_one = 0;
   count_sells_one= 0;
   count_buys_two = 0;
   count_sells_two= 0;

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // 通过索引选择位置,以便进一步访问其属性
         if(m_position.Magic()==m_magic)
            if(m_position.Symbol()==m_symbol_one.Name() || m_position.Symbol()==m_symbol_two.Name())
              {
               if(m_position.PositionType()==POSITION_TYPE_BUY)
                 {
                  if(m_position.Symbol()==m_symbol_one.Name())
                     count_buys_one++;
                  else if(m_position.Symbol()==m_symbol_two.Name())
                     count_buys_two++;
                 }

               if(m_position.PositionType()==POSITION_TYPE_SELL)
                 {
                  if(m_position.Symbol()==m_symbol_one.Name())
                     count_sells_one++;
                  else if(m_position.Symbol()==m_symbol_two.Name())
                     count_sells_two++;
                 }
              }
//---
   return;
  }
//+------------------------------------------------------------------+

如果查看第二个符号,我将其更改为基本的EURUSD,但还是出现同样的错误。

您知道这是为什么吗?

2020.08.06 07:22:48.328 MetaTester 5 started on 127.0.0.1:3000
2020.08.06 07:22:48.332 initialization finished
2020.08.06 07:22:48.440 login (build 2568)
2020.08.06 07:22:48.452 4372 bytes of account info loaded
2020.08.06 07:22:48.452 1482 bytes of tester parameters loaded
2020.08.06 07:22:48.452 2236 bytes of input parameters loaded
2020.08.06 07:22:48.452 1338 bytes of symbols list loaded (194 symbols)
2020.08.06 07:22:48.453 expert file added: Experts\MultiArbi10.ex5. 91493 bytes loaded
2020.08.06 07:22:48.465 11760 Mb available, 146 blocks set for ticks generating
2020.08.06 07:22:48.465 calculate profit in pips, initial deposit 3000, leverage 1:100
2020.08.06 07:22:48.467 successfully initialized
2020.08.06 07:22:48.467 93 Kb of total initialization data received
2020.08.06 07:22:48.467 Intel Core i7-10510 U  @ 1.80 GHz, 16182 MB
2020.08.06 07:22:48.650 GBPUSD.: symbol to be synchronized
2020.08.06 07:22:48.653 GBPUSD.: symbol synchronized, 3800 bytes of symbol info received
2020.08.06 07:22:48.676 GBPUSD.: history synchronization started
2020.08.06 07:22:48.682 GBPUSD.: load 29 bytes of history data to synchronize in 0:00:00.001
2020.08.06 07:22:48.682 GBPUSD.: history synchronized from 2015.01.02 to 2020.08.04
2020.08.06 07:22:48.684 GBPUSD.: ticks synchronization started
2020.08.06 07:22:48.685 GBPUSD.: load 36 bytes of tick data to synchronize in 0:00:00.000
2020.08.06 07:22:48.685 GBPUSD.: history ticks synchronized from 2018.01.28 to 2020.08.03
2020.08.06 07:22:48.892 GBPUSD.,M1: history cache allocated for 1341147 bars and contains 567532 bars from 2017.01.01 22:01 to 2018.07.13 20:58
2020.08.06 07:22:48.892 GBPUSD.,M1: history begins from 2017.01.01 22:01
2020.08.06 07:22:48.917 GBPUSD.,M1 (BitForex-MetaTrader5): generating based on real ticks
2020.08.06 07:22:48.917 testing with execution delay 127 milliseconds
2020.08.06 07:22:48.917 GBPUSD.,M1: testing of Experts\MultiArbi10.ex5 from 2018.07.14 00:00 to 2020.08.04 00:00 started with inputs:
2020.08.06 07:22:48.917   InpTimeFrame=15
2020.08.06 07:22:48.917   InpSymbolTwo=0
2020.08.06 07:22:48.917   InpProfitFoClose=100
2020.08.06 07:22:48.917   m_magic=130108500
2020.08.06 07:22:48.947 2018.07.14 00:00:00   CSymbolInfo::CheckMarketWatch: Unknown symbol 'EURUSD'
2020.08.06 07:22:48.948 tester stopped because OnInit reports incorrect input parameters
2020.08.06 07:22:48.948 log file "C:\Users\zackr\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\logs\20200806.log" written
2020.08.06 07:22:48.948 test Experts\MultiArbi10.ex5 on GBPUSD.,M1 thread finished
2020.08.06 07:22:48.964 prepare for shutdown
 
SaltySpade :

如果查看第二个符号,我将其更改为基本的 EURUSD,但还是出现同样的错误。

您知道这是为什么吗?

答案只有一个--你没有读懂他们写给你的东西:您既没有 "EURGBP "符号,也没有"EURUSD"符号。在正常的交易服务器上工作。

 

как это работает, у вас есть видео, показывающее, как его установить и как он выполняет операции?


它是如何工作的,您是否有视频显示如何安装它以及它是如何进行操作的?

 

您好、

能否请您解释一下 0-19 数字的含义?

非常感谢

 
回溯测试 中表现出色。我们将拭目以待它在实战中的表现。