FORTS busca un operador de MT5

 

¡Buenas tardes!

Busco a alguien que opere en FORTS con robot MT5 NO en el Open.

Busco a alguien que opere en FORTS usando un robot MT5, no un Opener.

Por favor, hágame saber si tiene un problema serio que resolver.

https://www.mql5.com/ru/forum/38456

ФОРТС. Вопросы по исполнению
ФОРТС. Вопросы по исполнению
  • www.mql5.com
С большими проблемами удалось это сделать (начальник отдела по работе с профессиональными клиентами ДЦ Открытие Евгений Сергеевич,. - - Категория: автоматические торговые системы
 
¿Todo el mundo comercia en la jornada de puertas abiertas?
 
Михаил:
¿Están todos negociando en el Open?
También puede ser que no comercien en absoluto.
 
Tengo una cuenta en BCS, pero aún no he operado con robots allí. Puedo correr un spreader para spamear los límites para medir el tiempo de ejecución (si entiendo bien lo que necesitas).
 
Adept:
Tengo una cuenta en BCS, pero aún no he operado con robots allí. Puedo correr un spreader para spamear los límites para medir el tiempo de ejecución (si entiendo bien lo que necesitas).

¡Buenas tardes!

Por supuesto que has acertado.

Sólo tiene que colocar y eliminar las órdenes pendientes, pero sólo para un tiempo largo (preferiblemente todo el día) y muy preferiblemente para más de un símbolo.

Y luego adjuntar el archivo de registro aquí.

Muchas gracias de antemano.

No olvides que, de forma gratuita, puedes realizar 2000 transacciones.

P/S Si no recuerdo mal, el spreader pone órdenes muy cerca del mercado.

Hay que poner órdenes al precio MAX y MIN para que no se disparen.

Si no tienes un EA de este tipo, escribiré uno rápido.

 

Cosido esta mañana temprano, no lo he probado (mejor probarlo en una demo primero)

//+------------------------------------------------------------------+
//|                                                     BKS_Test.mq5 |
//|                                          Copyright 2015, Mikalas |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Mikalas"
#property link      "https://www.mql5.com"
#property version   "1.00"
//
double sell_price;
double buy_price;
ulong buy_ticket;
ulong sell_ticket;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  sell_price = 0;
  buy_price = 0;
  buy_ticket = 0;
  sell_ticket = 0;
//---
  if ( !GlobalVariableCheck( "trans_count" ) )
  {
    datetime a_time = GlobalVariableSet( "trans_count", 0 );
    
    if ( ulong( a_time ) == 0 )
    {
      MessageBox( "Глобальная переменная терминала 'Счётчик транзакций' не создана!", "Ошибка", MB_OK | MB_ICONHAND );
      return( INIT_FAILED );
    }
  }
//---  
  if ( !MarketBookAdd( _Symbol ) )
  {
    MessageBox( "Не добавлен стакан по символу " + _Symbol,   "Ошибка", MB_OK | MB_ICONHAND );
    return( INIT_FAILED );
  }
  return( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  MarketBookRelease( _Symbol );   
}
//+------------------------------------------------------------------+
//| Expert Set transaction count function                            |
//+------------------------------------------------------------------+
void SetTransCount( const bool up_down )
{
  double tr_count;
  uint i = 0;
  do
  {
    i++;
    if ( GlobalVariableGet( "trans_count", tr_count ) )
    {
      if ( up_down )
      {
        if ( GlobalVariableSetOnCondition( "trans_count", tr_count + 1, tr_count ) )
        {
          i = 100;
        }
      }
      else
      {
        if ( GlobalVariableSetOnCondition( "trans_count", tr_count - 1, tr_count ) )
        {
          i = 100;
        }
      }
    }
  }  
  while( i < 100 );
}
//+------------------------------------------------------------------+
//| Remove order function                                            |
//+------------------------------------------------------------------+
void RemoveOrder( ulong &ticket )
{
   MqlTradeRequest request = {0};
   MqlTradeResult  result  = {0};
            
  request.action = TRADE_ACTION_REMOVE;
  request.order = ticket;
          
  if ( OrderSend( request, result ) )
  {
    if ( result.retcode == TRADE_RETCODE_PLACED )
    { 
      ticket = 0;
      SetTransCount( true );
    }
  }
  else
  {
    Print( "Ордер не удалён. Билет = ", ticket );
  }  
}
//+------------------------------------------------------------------+
//| Set order function                                               |
//+------------------------------------------------------------------+
void SetOrder( ulong &ticket, const double price, const bool buy_sell )
{
  ticket = 0;
  MqlTradeRequest request = {0};
  MqlTradeResult  result  = {0};
    
//--- Fill structure
  request.action = TRADE_ACTION_PENDING;
  request.magic  = 987654321;
  request.symbol = _Symbol;
  request.volume = 1;
  request.price  = price;
    
  if ( buy_sell )
  {
    request.type = ORDER_TYPE_BUY_LIMIT;
  }
  else
  {
    request.type = ORDER_TYPE_SELL_LIMIT;
  } 
  request.comment = "Отложенный ордер...";      
  request.type_filling = ORDER_FILLING_RETURN;
  request.type_time = ORDER_TIME_DAY;
  
//--- Send order
  if ( OrderSend( request, result ) )
  {
    if ( result.retcode == TRADE_RETCODE_PLACED ) 
    {
      ticket = result.order;
      SetTransCount( true );
    }
  }
  else
  {
    Print( "Ордер не установлен! ", _Symbol, ", Цена = ", price, "; Код возврата = ", result.retcode );
  }  
}
//+------------------------------------------------------------------+
// Expert Check orders timer function                                |
//+------------------------------------------------------------------+
bool CheckOrdersTimer( const uint start_value, const uint per_value )
{
  uint end_value = GetTickCount();
  
  if ( end_value < start_value )
  {
    if ( ( start_value - end_value ) >= per_value ) return( true );
  } 
  else
  {
    if ( ( end_value - start_value ) >= per_value ) return( true );
  }
  return( false );
}
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{
  if ( symbol == _Symbol )
  {
    double trc_value = GlobalVariableGet( "trans_count" );
//---
    if ( long( trc_value ) < 2000 )
    {
      uint st_val = GetTickCount();
      int tick_cnt = 1;
      sell_price = SymbolInfoDouble( _Symbol, SYMBOL_SESSION_PRICE_LIMIT_MAX );
      buy_price = SymbolInfoDouble( _Symbol, SYMBOL_SESSION_PRICE_LIMIT_MIN );
//---
      while ( !CheckOrdersTimer( st_val, 2000 ) )  //Используем вместо sleep 2 сек
      {
        tick_cnt--;
        tick_cnt++;
      }
//---           
      if ( ( sell_ticket > 0 ) && ( OrderSelect( sell_ticket ) ) )
      {
        RemoveOrder( sell_ticket );
      }
      else
      {
        SetOrder( sell_ticket, sell_price, false);
      }
//---      
      if ( ( buy_ticket > 0 ) && ( OrderSelect( buy_ticket ) ) )
      {
        RemoveOrder( buy_ticket );
      }
      else
      {
        SetOrder( buy_ticket, buy_price, true );
      }        
    }
    else
    {
      if ( ( sell_ticket > 0 ) && ( OrderSelect( sell_ticket ) ) )
      {
        RemoveOrder( sell_ticket );
      }
      if ( ( buy_ticket > 0 ) && ( OrderSelect( buy_ticket ) ) )
      {
        RemoveOrder( buy_ticket );
      }  
      ExpertRemove();
    }  
  } 
}
 
Михаил:

Cosido esta mañana temprano, no lo he probado (mejor probarlo en una demo primero)

Ok, mañana estaré en la terminal a partir del mediodía y adjuntaré el archivo por la noche.
 
Adept:
Ok, mañana estaré en la terminal a medio día y adjuntaré el archivo por la noche.

Lo he comprobado en la demo: ¡funciona correctamente!

Ajustado el Asesor Experto un poco (ver archivo adjunto)

Archivos adjuntos:
BKS_Test.mq5  7 kb
 
Михаил:

Lo he comprobado en la demo: ¡funciona correctamente!

Ajustado el Asesor Experto un poco (ver archivo adjunto)

¿En qué instrumento de BCS debo probar la demo?

Tengo un demo en el real - no rellenado. Estoy pensando donde rellenarlo...

Fuertes - el acceso desde BCS está abierto en el real.

Hay una demo de MT 5 en forex-bcs.ru.

Hay instrumentos:


 
Roman Shiredchenko:

¿En qué instrumento de BCS debe probarse la demo?

Tengo en un real - no llenado DEP. Estoy pensando donde llenar...

Fuertes - el acceso desde BCS está abierto en el real.

Hay una demo de MT 5 en forex-bcs.ru.

Hay instrumentos:

¡Buenos días!

En cualquier instrumento FORTS (por ejemplo) Si-9.15

 
Михаил:

¡Buenas tardes!

En cualquier instrumento FORTS (por ejemplo) Si-9.15

¿Ri U5 encajará este septiembre?

Estaba mirando la hora. Le gana al reloj de Otkritie o de BCS... Me refiero a la hora de negociar...

Kamp trabaja todo el tiempo...

Vierte la imagen en el pre-post.