Especialistas: New Martin

 

New Martin:

New Martin - Expert Advisor que, no início, abre duas posições opostas. Processamento OnTradeTransaction. Assim que o Take Profit se executar, ele abrirá (UMA) posição na mesma direção. A interseção de dois indicadores MA é um sinal para abertura da posição com um lote maior.

New Martin crossing

Autor: Vladimir Karputov

 

Versão 1.105: Introduziu funções separadas OpenBuy e OpenSell

//+------------------------------------------------------------------+
//| Abertura da posição de compra por símbolo|
//+------------------------------------------------------------------+
bool OpenBuy(const double lot)
  {
   bool res=false;

   double price=m_symbol.Ask();
   double tp=m_symbol.NormalizePrice(m_symbol.Bid()+InpTP*m_adjusted_point);
   if(m_trade.Buy(lot,m_symbol.Name(),price,0.0,tp))
      if(m_trade.ResultDeal()>0)
         res=true;

   return(res);
  }
//+------------------------------------------------------------------+
//| Abertura de uma posição de VENDA por símbolo|
//+------------------------------------------------------------------+
bool OpenSell(const double lot)
  {
   bool res=false;

   double price=m_symbol.Bid();
   double tp=m_symbol.NormalizePrice(m_symbol.Ask()-InpTP*m_adjusted_point);
   if(m_trade.Sell(lot,m_symbol.Name(),price,0.0,tp))
      if(m_trade.ResultDeal()>0)
         res=true;

   return(res);
  }

Agora o código está mais legível.

 

Como sempre, o problema é o que fazer com as posições não lucrativas que estão penduradas? Aqui está um exemplo da versão 1.105:

1.105

A versão 1.105 e a versão 1.105 com uma pequena alteração: em OnTradeTransaction (quando um fechamento de posição TakeProfit é detectado), procuramos a posição mais não lucrativa e fechamos essa posição mais não lucrativa:

1.105 com uma pequena alteração: em OnTradeTransaction

Deixe-me lembrá-lo de que os testes individuais são realizados exclusivamente no modo"Every Tick Based on Real Tick".

Ambas as variantes começaram em 10000. Qual variante escolher - acho que isso depende de seus objetivos específicos.

 
há uma opção para fechar todas as posições quando pelo menos uma delas recebe uma viagem
 
trader781:
há uma opção para fechar todas as posições quando pelo menos uma delas recebe um tp

Nesse caso, pode ser assim:

o primeiro início - duas posições multidirecionais, uma delas recebe TakeProfit e fechamos todas elas (ou seja, fechamos a posição restante - a não lucrativa). Como resultado, obtemos lucro no TakeProfit e, ao mesmo tempo, uma perda na segunda posição.

Isso não parece muito bom.

 
Vladimir Karputov:

Nesse caso, pode ser assim:

primeiro início - duas posições multidirecionais, uma obtém TakeProfit e fechamos todas elas (ou seja, fechamos a posição restante - a não lucrativa). Como resultado, obtemos lucro no TakeProfit e, ao mesmo tempo, uma perda na segunda posição.

Isso não é muito bom.

Eu tenho um desses, mas deveria haver no mínimo 2 + entrada bem-sucedida.

O principal problema é encontrar uma entrada em que a soma das entradas bem-sucedidas seja mais da metade da soma das malsucedidas.

8 joelhos a partir de 0,01 é suficiente se não for um cruzamento.

teoria

1) 2 ordens de 0,01 cada são abertas em direções diferentes no sinal

2) se o preço ultrapassar a distância necessária para o lucro, então uma recarga com um take profit o número de recargas, o passo do joelho e o take profit - você pode brincar com isso por um longo tempo.

 

Decidi deixar a segunda opção (... com uma pequena alteração: em OnTradeTransaction (quando o fechamento de uma posição por TakeProfit é detectado), procuramos a posição mais não lucrativa e fechamos essa posição mais não lucrativa...):

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Expert Advisors: Novo Martin

Vladimir Karputov, 2017.01.22 19:00

Como sempre, o problema - o que fazer com as posições não lucrativas que estão penduradas? Aqui está um exemplo da versão 1.105:

1.105

e a versão 1.105 com uma pequena alteração: em OnTradeTransaction (quando o fechamento da posição TakeProfit é detectado), procuramos a posição mais não lucrativa e fechamos essa posição mais não lucrativa:

1.105 com uma pequena alteração: em OnTradeTransaction

Deixe-me lembrá-lo de que os testes individuais são realizados exclusivamente no modo"Every Tick Based on Real Tick".

Ambas as variantes começaram em 10000. Qual variante escolher - acho que isso depende de seus objetivos específicos.


agora versão 1.106

 
O código do consultor da New Martin é lançado como um sinal de demonstração gratuito da New Martin.
 

Versão 1.007 - proteção contra reinicialização do terminal:

//---
   if(!RefreshRates())
      return;

   if(m_first)
     {
      //--- proteção contra reinicialização do terminal:
      int total=0;
      for(int i=PositionsTotal()-1;i>=0;i--) // retorna o número de posições abertas
         if(m_position.SelectByIndex(i))     // seleciona a posição por índice para acesso posterior às suas propriedades
            if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
               total++;
      //--- se já houver posições abertas por esse Expert Advisor na conta de negociação
      //--- Então, inicializamos as variáveis de forma que pareça que já foi a primeira vez.
      if(total>0)
        {
         bln_buy=true;
         bln_sell=true;
         m_first=false;
         return;
        }


      if(OpenBuy(InpLot))
         bln_buy=true;
      if(OpenSell(InpLot))
         bln_sell=true;
      m_first=false;
     }
//---


Agora, se o terminal tiver sido reiniciado ou o EA tiver sido recompilado e o EA já tiver aberto posições na conta de negociação fornecida, não haverá situação de "primeira execução".

 

Versão 1.108 Agora, no crossover e no TakeProfit, se houver uma posição lucrativa, ela também será fechada.

Compare a versão 1.108 (gráficos superiores) com a versão anterior 1.107:

Novo Martin GBPUSD 107 vs 108

и

Novo Martin EURUSD 107 vs 108.png

A versão 1.108 tem um lucro total menor, mas também os rebaixamentos em períodos difíceis são duas vezes menores em comparação com a versão 1.107.

 
Mestre, você pode fazer isso funcionar no MQ4?