Especialistas: Patterns_EA - página 2

 
Morexod:



Consulte cláusulas de modo.

item 5 = 3 negociações

item 3 = 18 tr.

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

mas p.2 = 200 tr e não <= 21 tr.

O Expert Advisor é para contas de hedge. É impossível reverter uma posição nele. Você precisa fechar uma posição e abrir outra.
 
Artyom Trishkin:
O Expert Advisor é para contas de hedge. É impossível reverter uma posição. Você precisa fechar uma posição e abrir outra.

Ele é otimizado.

Sempre uma posição (swing) - sempre apenas uma posição no mercado = 200 ordens

Qualquer posição - quaisquer posições = 185 ordens

Sob a condição "qualquer posição", deve haver mais ordens do que sob a condição "sempre apenas uma posição no mercado"

 
Morexod:

A otimização está em andamento.

Sempre uma posição (swing) - sempre apenas uma posição no mercado = 200 ordens

Qualquer posição - quaisquer posições = 185 ordens

Deve haver mais ordens na condição "Qualquer posição" do que na condição "Sempre apenas uma posição no mercado"

No caso de Qualquer posição - quaisquer posições, a restrição do volume total máximo permitido na conta é acionada, pois todas as posições são abertas indiscriminadamente. E, em algum momento, ocorre um estouro do volume total permitido na conta, e as posições param de ser abertas.

E no caso de Sempre uma posição (swing) - "apenas uma posição" - a restrição pode funcionar somente quando o volume inicialmente definido da posição aberta for maior do que o máximo permitido. E o EA, como o autor promete, simplesmente ajustará esse lote para o possível.

Talvez seja mais fácil para você olhar no modo visual, em vez de tentar tirar conclusões prematuras com base no número de ordens nos relatórios? ;)

 
fxsaber:

É daí que vem o código:

int OnInit()
  {
//--- Definição dos parâmetros de negociação
   if(!SetTradeParameters())
      return INIT_FAILED;

A própria função. O modo que poderia causar o que você está insinuando está desativado.

//+------------------------------------------------------------------+
//| Configuração dos parâmetros de negociação|
//+------------------------------------------------------------------+
bool SetTradeParameters()
  {
//--- Definindo o símbolo
   ResetLastError();
   if(!symbol_info.Name(Symbol()))
     {
      Print(__FUNCTION__,": Error setting ",Symbol()," symbol: ",GetLastError());
      return false;
     }
//--- Obtendo preços
   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;
     }
//--- Configuração automática do tipo de enchimento
   trade.SetTypeFilling(GetTypeFilling());
//--- Instalação do Magik
   trade.SetExpertMagicNumber(InpMagic);
//--- Configuração de deslizamento
   trade.SetDeviationInPoints(InpDeviation);
//--- Configuração de lote com correção do valor inserido
   lot=CorrectLots(InpVolume);
//--- O modo de envio de ordem assíncrona está desativado
   trade.SetAsyncMode(false);
//---
   return true;
  }
//+------------------------------------------------------------------+

Ou eu não entendi sua dica?

 
Artyom Trishkin:

É daí que vem o código:

A própria função. O modo que pode causar o que você está sugerindo está desativado.

Ou eu não entendi sua dica?

Essa situação diz respeito ao modo síncrono.

 
Esse modo não funciona neste EA: InpModeOpened==OPENED_MODE_SWING
 
kwlin_089:
Esse modo não funciona neste EA: InpModeOpened==OPENED_MODE_SWING

Por quê?

Dou uma olhada no código e vejo:

//+------------------------------------------------------------------+
//| A função de negociação|
//+------------------------------------------------------------------+
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();
//--- Sempre uma posição no mercado Comprar ou vender
   if(InpModeOpened==OPENED_MODE_SWING)
     {
      if(type==POSITION_TYPE_BUY && NumberSell()>0) CloseSell();
      if(type==POSITION_TYPE_SELL && NumberBuy()>0) CloseBuy();
     }
//--- Apenas uma posição de compra
   if(InpModeOpened==OPENED_MODE_BUY_ONE)
     {
      if(NumberBuy()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_SELL) return last_total;
     }
//--- Qualquer quantidade Comprar
   if(InpModeOpened==OPENED_MODE_BUY_MANY)
      if(type==POSITION_TYPE_SELL) return last_total;
//--- Apenas uma posição de venda
   if(InpModeOpened==OPENED_MODE_SELL_ONE)
     {
      if(NumberSell()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_BUY) return last_total;
     }
//--- Qualquer número de Sell
   if(InpModeOpened==OPENED_MODE_SELL_MANY)
      if(type==POSITION_TYPE_BUY) return last_total;
//--- Todas as verificações são aprovadas ou qualquer coli é selecionada чество любых позиций - открываем позицию
   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);
//--- Retorna o número de posições abertas
   return last_total-list_trade_patt.Total();
  }
//+------------------------------------------------------------------+
  1. Se for o modo swing.
    1. se for necessário abrir uma compra e houver vendas, então feche as vendas
    2. se for necessário abrir uma venda e houver compras, feche as compras.
  2. Se todas as verificações forem aprovadas, abra a posição necessária.
Ou estou entendendo algo errado aqui? Explique.
 
Artyom Trishkin:

Por quê?

Estou olhando o código e vejo isso:

  1. Se estiver no modo swing.
    1. se for necessário abrir uma compra e houver vendas, feche as vendas.
    2. Se for necessário abrir uma venda e houver compras, feche as compras.
  2. Se todas as verificações forem aprovadas, abra a posição desejada.
Ou estou entendendo algo errado aqui? Explique.

Artem, pelo que entendi, estamos falando de posições que "desaparecem". No MT4, essas posições são SL e TP. Não posso julgar o mt5...

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

Artem, pelo que entendi, estamos falando de posições que "desaparecem". No mt4, essas posições são SL e TP. Não posso julgar o MT5....

Portanto, no MT5 será a mesma coisa. Se houver uma compra de 0,1, o stop é uma ordem de stop para vender 0,1
Não haverá posição quando ela for acionada. E para reverter a posição, você precisa vender 0,2
 
Artyom Trishkin:
Portanto, será a mesma coisa no MT5. Se houver uma compra de 0,1, a parada será uma ordem de parada para vender 0,1
Não haverá posição quando ela for acionada. E para reverter a posição, você precisa vender 0,2.

Você sabe o que é melhor, mas às vezes alguém prefere verificar.