Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Experts

Nevalyashka_BreakdownLevel - expert para MetaTrader 5

Publicado por:
Vladimir Karputov
Visualizações:
1261
Avaliação:
(29)
Publicado:
2017.08.24 14:17
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Autor da ideia — Vladimir Khlystovautor do código mq5 — barabashkakvn.

Estratégia de negociação: quebra de máximo/mínimo no intervalo de tempo selecionado. Para compensar as posições desfavoráveis, usadass a estratégia ​​"Nevalyashka" e a técnica martingale para aumentar o lote.

O expert calcula o máximo e o mínimo do preço, no intervalo de temo entre "Time start" (início do período de controle) e "Time end" (final do período de controle):

Nevalyashka BreakdownLevel

Se o preço cruzar o máximo deste período, será aberta a posição "BUY", se o preço cruzar para baixo o mínimo, será aberta a posição "SELL". StopLoss colocado para a borda oposta do período, ou seja, para a posição "BUY", colocado no nível do mínimo do preço, para a posição "SELL", colocado no nível do máximo do preço. TakeProfit colocado segundo o nível da altura do período de controle.

Se o parâmetro "Use time close" é true, é desencadeado o parâmetro "Time close" (hora em que todas as posições são fechadas).

Para os parâmetros de entrada "Time start""Time end" e "Time close" são levadas em conta apenas as horas e minutos.

O fechamento segundo o StopLoss é monitorado na função OnTradeTransaction.

Encontrada uma posição do tipo "DEAL_ENTRY_OUT" (pt: "Sair do mercado", en: "Entry out"), examinamos o campo de comentários nessa transação. Se nos comentários encontramos "sl", é muito provável que tenha sido encontrada uma transação fechada segundo StopLoss:

      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            MqlDateTime str1;
            TimeToStruct(TimeCurrent(),str1);
            //--- there is a chance that this was a closure on the TakeProfit
            if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit>=0.0)
              {
               TradeDey=str1.day;
               return;
              }
            //--- there is a chance that this was a closure on the StopLoss
            if(StringFind(deal_comment,"sl",0)!=-1)
              {
               if(TradeDey!=str1.day)
                 {
                  Print("A StopLoss closure has been detected!");

                  double loss=MathAbs(deal_profit/m_symbol.TickValue()/deal_volume);

                  if(deal_type==DEAL_TYPE_SELL) // the buy position is closed
                    {
                     double SL=m_symbol.Bid()+loss*m_symbol.Point();
                     double TP=m_symbol.Bid()-loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenSell(SL,TP,Lot,"Nevalyashka");

                    }
                  if(deal_type==DEAL_TYPE_BUY) // the sell position is closed
                    {
                     double SL=m_symbol.Ask()-loss*m_symbol.Point();
                     double TP=m_symbol.Ask()+loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenBuy(SL,TP,Lot,"Nevalyashka");
                    }
                  return;
                 }
              }
           }

e fechamos a posição oposta à fechada (se o tipo de transação for "DEAL_TYPE_SELL", a posição fechada terá sido "BUY"; se o tipo de transação for "DEAL_TYPE_BUY", terá sido fechada uma posição "SELL"), mas, ao acontecer isto, aumentamos o volume da transação "K. martin" vezes. Se a posição for fechada com resultados positivos, o EA esperará o início do seguinte período "Time end", e tudo será repetido.

Parâmetro "No loss", ou seja, posições movidas para Break-Even, isto é, quando metade do lucro é alcançado pela posição, StopLoss é movido para o nível do preço de abertura.

Exemplo de teste em EURUSD, M30:

Nevalyashka BreakdownLevel test EURUSD M30

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/18645

Boa_ZigZag_Arrows_HTF Boa_ZigZag_Arrows_HTF

Indicador Boa_ZigZag_Arrows com capacidade de alterar o timeframe do indicador nos parâmetros de entrada.

AutoTradeLevels AutoTradeLevels

O indicador marca com linhas horizontais curtas todas as transações concluídas.

Boa_ZigZag_channel Boa_ZigZag_channel

Canal construído nos picos e fundos do indicador ЗигЗага Boa_ZigZag

ZigZag_channel ZigZag_channel

Canal construído nos picos e fundos do indicador ЗигЗага.