Asesores Expertos: Patterns_EA - página 2

 
Morexod:



Véanse las cláusulas de modo.

punto 5 = 3 oficios

item 3 = 18 tr.

p.5 + p.3 = 21 tr. p.5 + p.3 <= p.2

pero p.2 = 200 tr y no <= 21 tr.

El Asesor Experto es para cuentas de cobertura. Es imposible invertir una posición en él. Tienes que cerrar una posición y abrir otra.
 
Artyom Trishkin:
El Asesor Experto es para cuentas de cobertura. Es imposible invertir una posición. Hay que cerrar una posición y abrir otra.

Está optimizado.

Siempre una posición (swing) - siempre una sola posición en el mercado = 200 órdenes

Cualquier posición - cualquier posición = 185 órdenes

En la condición "cualquier posición" debería haber más órdenes que en la condición "siempre una sola posición en el mercado

 
Morexod:

Optimización en curso.

Siempre una posición (swing) - siempre una única posición en el mercado = 200 órdenes

Cualquier posición - cualquier posición = 185 órdenes

Debe haber más órdenes en la condición "Cualquier posición" que en la condición "Siempre una sola posición en el mercado".

En el caso de Cualquier posición - cualquier posición, se activa la restricción del volumen total máximo permitido en la cuenta - porque abre todas las posiciones indiscriminadamente. Y en algún momento llega un momento de desbordamiento del volumen total permitido en la cuenta, y se dejan de abrir posiciones.

Y en el caso de Siempre una posición (swing) - "sólo una posición" - la restricción puede funcionar sólo si el volumen establecido inicialmente de la posición abierta es mayor que el máximo permitido. Y el EA, como promete el autor, simplemente ajustará este lote al posible.

Tal vez sea más fácil para usted mirar en modo visual, en lugar de tratar de hacer conclusiones prematuras basadas en el número de órdenes en los informes? ;)

 
fxsaber:

De ahí viene el código:

int OnInit()
  {
//--- Configuración de los parámetros de negociación
   if(!SetTradeParameters())
      return INIT_FAILED;

La propia función. El modo que podría causar lo que insinúas está desactivado.

//+------------------------------------------------------------------+
//| Configuración de los parámetros de negociación|
//+------------------------------------------------------------------+
bool SetTradeParameters()
  {
//--- Establecer el símbolo
   ResetLastError();
   if(!symbol_info.Name(Symbol()))
     {
      Print(__FUNCTION__,": Error setting ",Symbol()," symbol: ",GetLastError());
      return false;
     }
//--- Obtener precios
   ResetLastError();
   if(!symbol_info.RefreshRates())
     {
      Print(__FUNCTION__,": Error obtaining ",symbol_info.Name()," data: ",GetLastError());
      return false;
     }
   if(account_info.MarginMode()==ACCOUNT_MARGIN_MODE_RETAIL_NETTING)
     {
      Print(__FUNCTION__,": ",account_info.MarginModeDescription(),"-account. EA should work on a hedge account.");
      return false;
     }
//--- Ajuste automático del tipo de llenado
   trade.SetTypeFilling(GetTypeFilling());
//--- Instalando Magik
   trade.SetExpertMagicNumber(InpMagic);
//--- Ajuste de deslizamiento
   trade.SetDeviationInPoints(InpDeviation);
//--- Ajuste del lote con corrección del valor introducido
   lot=CorrectLots(InpVolume);
//--- El modo de envío asíncrono de órdenes está desactivado
   trade.SetAsyncMode(false);
//---
   return true;
  }
//+------------------------------------------------------------------+

¿O he entendido mal tu insinuación?

 
Artyom Trishkin:

De ahí viene el código:

La propia función. El modo que puede causar lo que sugieres está desactivado.

¿O he entendido mal tu sugerencia?

Esta situación se refiere al modo síncrono.

 
Este modo no funciona en este EA: InpModeOpened==OPENED_MODE_SWING
 
kwlin_089:
Este modo no funciona en este EA: InpModeOpened==OPENED_MODE_SWING

¿Por qué?

Miro el código y veo

//+------------------------------------------------------------------+
//| La función de negociación|
//+------------------------------------------------------------------+
int Trade(const ENUM_PATTERN_TYPE &pattern_type,const int index)
  {
   ENUM_POSITION_TYPE type=patt.PositionPattern(pattern_type);
   int number=0,last_total=list_trade_patt.Total();
//--- Siempre una posición en el mercado Comprar o Vender
   if(InpModeOpened==OPENED_MODE_SWING)
     {
      if(type==POSITION_TYPE_BUY && NumberSell()>0) CloseSell();
      if(type==POSITION_TYPE_SELL && NumberBuy()>0) CloseBuy();
     }
//--- Sólo una posición de compra
   if(InpModeOpened==OPENED_MODE_BUY_ONE)
     {
      if(NumberBuy()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_SELL) return last_total;
     }
//--- Cualquier cantidad Comprar
   if(InpModeOpened==OPENED_MODE_BUY_MANY)
      if(type==POSITION_TYPE_SELL) return last_total;
//--- Sólo una posición de Venta
   if(InpModeOpened==OPENED_MODE_SELL_ONE)
     {
      if(NumberSell()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_BUY) return last_total;
     }
//--- Cualquier número de Venta
   if(InpModeOpened==OPENED_MODE_SELL_MANY)
      if(type==POSITION_TYPE_BUY) return last_total;
//--- Se superan todas las comprobaciones o se selecciona cualquier coli чество любых позиций - открываем позицию
   if(to_logs)
      Print(__FUNCTION__,": To open ",(type==POSITION_TYPE_BUY ? "Buy" : "Sell")," position by pattern ",patt.DescriptPattern(pattern_type));
   if(OpenPosition(pattern_type))   
      list_trade_patt.Delete(index);
//--- Devuelve el número de posiciones abiertas
   return last_total-list_trade_patt.Total();
  }
//+------------------------------------------------------------------+
  1. Si es modo swing.
    1. si es necesario abrir una compra y hay ventas, entonces cerrar ventas
    2. si es necesario abrir una venta y hay compras, entonces cerrar compras.
  2. Si se superan todas las comprobaciones, abra la posición necesaria.
¿O estoy malinterpretando algo? Explíquese.
 
Artyom Trishkin:

¿Por qué?

Estoy mirando el código y lo veo:

  1. Si es modo swing.
    1. si es necesario abrir una compra y hay ventas, entonces cerrar ventas.
    2. si es necesario abrir una venta y hay compras, entonces cerrar compras.
  2. Si se pasan todas las comprobaciones, abrir la posición deseada.
¿O estoy malinterpretando algo? Explíquese.

Artem, según tengo entendido, estamos hablando de posiciones que "desaparecen". En mt4 estos son SL y TP. No puedo juzgar sobre mt5...

 
Алексей Тарабанов:

Artem, como yo lo entiendo, estamos hablando de "desaparecer" posiciones. En mt4 estos son SL y TP. No puedo juzgar sobre mt5....

Así que en MT5 será el mismo. Si hay una compra de 0,1, la parada es una orden de stop para vender 0,1
No habrá ninguna posición cuando se activa. Y para invertir la posición, usted necesita vender 0.2
 
Artyom Trishkin:
Así que será lo mismo en MT5. Si hay una orden de compra de 0.1, el stop es una orden de venta de 0.1
No habrá posición cuando se active. Y para invertir la posición, necesitas vender 0.2.

Usted sabe mejor, pero a veces alguien prefiere comprobar.