Asesores Expertos: Multi Arbitration 1.1xx - página 2

 

Hola,

¡Gracias por la rápida respuesta, Vladimir!


He encontrado que la función ExtArrSymbols hace que el bot de error cuando se ejecuta en una cuenta real (cualquier cosa que no sea la cuenta Demo MetaQuotes). Traté de averiguar por qué estaba dando error a cabo (lo siento por la respuesta tardía!). Cuando la solución de problemas, me encontré con que cuando elimino ese parámetro, el bot se "ejecutar", pero no obtendrá ninguna información para el símbolo dos. Esto contradice el propósito, ya que no va a hacer ningún comercio. Pero, yo era capaz de reducirlo a tal vez le ahorrará algo de tiempo.


Gracias por poner en tanto trabajo y esfuerzo en estos robots. He probado un par de los suyos, y puedo decir que hay una gran cantidad de esfuerzo y experiencia en todos ellos. Para ser honesto, este robot es increíble y me encantaría probarlo en una cuenta real!

A continuación se muestra una imagen del registro diario.


Editar: El bot se apaga inmediatamente después de ejecutarlo.


¡Espero saber de usted pronto!

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...
Archivos adjuntos:
 
SaltySpade :

Hola,

Gracias por la rápida respuesta, Vladimir.


He encontrado que la función ExtArrSymbols hace que el bot de error cuando se ejecuta en una cuenta real (cualquier cosa que no sea la cuenta Demo MetaQuotes ). Traté de averiguar por qué estaba dando error a cabo (lo siento por la respuesta tardía!). Cuando la solución de problemas, me encontré con que cuando elimino ese parámetro, el bot se "ejecutar", pero no obtendrá ninguna información para el símbolo dos. Esto contradice el propósito, ya que no va a hacer ningún comercio. Pero, yo era capaz de reducirlo a tal vez le ahorrará algo de tiempo.


Gracias por poner en tanto trabajo y esfuerzo en estos robots. He probado un par de los suyos, y puedo decir que hay una gran cantidad de esfuerzo y experiencia en todos ellos. Para ser honesto, este robot es increíble y me encantaría probarlo en una cuenta real!

A continuación se muestra una imagen del registro de diario.


Editar: El bot se apaga inmediatamente después de ejecutarlo.


Espero tener noticias tuyas pronto.

1. El archivo de registro NO NECESITA ADJUNTARSE COMO IMAGEN. El archivo de registro debe tomarse de la pestaña "Registro" y de la pestaña "Expertos" y adjuntarse al mensaje. Es decir, debería poder abrir el archivo de registro en NotePad.

2. Lea su imagen - la razón del error está impresa en ella - usted ha especificado un símbolo comercial inexistente.

 

Pido disculpas.


He estado utilizando el EUR/GBP (11) como moneda secundaria. He probado con muchas otras pero todas fallan con el mismo error.


Aquí está el registro del diario:


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...
 

El Asesor Experto le informa de que ha cometido un error en los parámetros de entrada:

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
 
//+------------------------------------------------------------------+
//|Multi Arbitraje 1.1xx.mq5
//|Copyright © 2017, Vladimir Karputov ||
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#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;                   // objeto de posición comercial
CTrade         m_trade;                      // objeto comercial
CSymbolInfo    m_symbol_one;                 // objeto de información de símbolos
CSymbolInfo    m_symbol_two;                 // objeto de información de símbolos
CAccountInfo   m_account;                    // información de la cuenta
//--- parámetros de entrada
input ENUM_TIMEFRAMES InpTimeFrame=PERIOD_M15;// Marco temporal
input uchar    InpSymbolTwo      = 
0 ;        // de "0" a 19
input double   InpProfitFoClose  = 100;      // Beneficio Fo Cierre
input ulong    m_magic           = 130108500;// número mágico
ulong          m_slippage        = 30;       // deslizamiento
string         ExtArrSymbols[20]=
  {
   "EURUSD","GBPUSD","USDCHF","USDJPY","USDCAD",
   "AUDUSD","AUDNZD","AUDCAD","AUDCHF","AUDJPY",
   "CHFJPY","EURGBP","EURAUD","EURCHF","EURJPY",
   "EURNZD","EURCAD","GBPCHF","GBPJPY","CADCHF"
  };
//+------------------------------------------------------------------+
//| Función de inicialización experta|
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Period()!=PERIOD_M1)
     {
      return(INIT_PARAMETERS_INCORRECT);
     }
//---
   if(!m_symbol_one.Name(Symbol())) // establece el nombre del símbolo
      return(INIT_PARAMETERS_INCORRECT);
   if(!m_symbol_two.Name(ExtArrSymbols[InpSymbolTwo])) // establece el nombre del símbolo
      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);
  }
//+------------------------------------------------------------------+
//| Función de desinicialización experta|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Función tick experto|
//+------------------------------------------------------------------+
void OnTick()
  {
//--- trabajamos sólo en el momento del nacimiento de nuevo bar
   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;
     }

//--- Busca la "VENTA" más alta y la "COMPRA" más baja
   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)) // selecciona la posición por índice para acceder posteriormente a sus propiedades
         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) // tendencia a la baja
         m_trade.Buy(m_symbol_one.LotsMin(),m_symbol_one.Name());
      else if(m_symbol_one.Bid()>price_highest_sell_one) // tendencia al alza
      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) // tendencia a la baja
         m_trade.Buy(m_symbol_two.LotsMin(),m_symbol_two.Name());
      else if(m_symbol_two.Bid()>price_highest_sell_two) // tendencia al alza
      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();
  }
//+------------------------------------------------------------------+
//| Actualiza los datos de las cotizaciones de los símbolos|
//+------------------------------------------------------------------+
bool RefreshRates(CSymbolInfo &m_symbol)
  {
//--- frecuencias de actualización
   if(!m_symbol.RefreshRates())
      return(false);
//--- protección contra el valor de retorno de "cero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+
//| Comprueba si el modo de llenado especificado está permitido ||
//+------------------------------------------------------------------+
bool IsFillingTypeAllowed(string symbol,int fill_type)
  {
//--- Obtener el valor de la propiedad que describe los modos de llenado permitidos
   int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- Devuelve true, si el modo fill_type está permitido
   return((filling & fill_type)==fill_type);
  }
//+------------------------------------------------------------------+
//| Obtiene la información sobre el permiso para comerciar |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Calcular posiciones de beneficio Compra y Venta|
//+------------------------------------------------------------------+
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)) // selecciona la posición por índice para acceder posteriormente a sus propiedades
         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;
  }
//+------------------------------------------------------------------+
//| Cerrar todas las posiciones|
//+------------------------------------------------------------------+
void CloseAllPositions()
  {
//m_trade.SetAsyncMode(true);
   for(int i=PositionsTotal()-1;i>=0;i--) // devuelve el número de posiciones actuales
      if(m_position.SelectByIndex(i))     // selecciona la posición por índice para acceder posteriormente a sus propiedades
         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()); // cerrar una posición por el símbolo especificado
//m_trade.SetAsyncMode(false);
  }
//+------------------------------------------------------------------+
//| Calcular posiciones Compra y Venta|
//+------------------------------------------------------------------+
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)) // selecciona la posición por índice para acceder posteriormente a sus propiedades
         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;
  }
//+------------------------------------------------------------------+

Si te fijas en el segundo símbolo, lo he cambiado por el EURUSD básico pero da el mismo error.

Tiene alguna idea de por qué esto es?

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 :

Si te fijas en el segundo símbolo, lo he cambiado por el EURUSD básico pero da el mismo error.

Tiene alguna idea de por qué esto es?

Sólo hay una respuesta: no lees lo que te escriben: No tienes ni el símbolo 'EURGBP', ni el símbolo'EURUSD'. Trabaja en un servidor de comercio normal.

 
Automated-Trading :

Arbitraje múltiple 1.1xx:

Autor: Vladimir Karputov

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


como funciona tienes un video que muestre como instalarlo y como hace las operaciones

 

Hola,

¿Podría explicarme el significado de los números del 0 al 19?

Muchas gracias

 
Impresionante en backtesting. Vamos a ver cómo lo hace en vivo.