Esdras C. Prado

MQL4 EA

작업 종료됨

실행 시간 5 일
고객의 피드백
Muito prestativo e atencioso, e o trabalho dele pra mim foi muito bem elaborado atendendo ao que foi proposto. Obrigado João!

명시

Olá! Gostaria de saber se alguém se habilita e quanto cobra para acrescentar um TrailingStop neste EA que posto logo abaixo e que já está pronto, só não possui o Trailing!

//+------------------------------------------------------------------+
//|                                        Exemplo médias móveis.mq4 |
//|                                                              XTB |
//|                                                                  |
//+------------------------------------------------------------------+

#define IdentificadorEA  101

#property copyright "XTB"
#property link      ""

//---- Input parameters - parâmetros do Expert Advisor que podem ser alterados quando se executa o dito.
extern double       Lotes=0.1;
extern int       MMlenta=50;
extern int       MMrapida=20;

//-------------------------------------------------------------------------------------------------

datetime LastTradeBarTime;

//-------------------------------------------------------------------------------------------------
// init, função executada quando o EA se inicia ou reinicia

int init()
  {
   // Necessário para controlar se estamos numa nova barra
   LastTradeBarTime = Time[1]; 
   return(0);
  }


//-------------------------------------------------------------------------------------------------
// start, função executada a cada tick recebido pelo EA 

int start()
  {

  // Variáveis temporárias, renovadas a cada chamada do EA

  double vMMrapida0;                 // MM rápida da última barra 
  double vMMrapida1;                 // MM rápida da penúltima barra 
  double vMMlenta0;                  // MM lenta da última barra
  double vMMlenta1;                  // MM lenta da penúltima barra
  int resposta;                      // Variável que obterá a resposta do terminal quando envia uma ordem

  // Verifica se estamos no início de uma barra e apenas processa as instruções se isso for verdade
  if (LastTradeBarTime == Time[0]) 
     return(0); // Não é o primeiro tick de uma nova barra, por isso sai
  else 
  {
     LastTradeBarTime = Time[0]; // continua

     // Valores das médias móveis na barra que acabou de terminar, e na imediatamente anterior
     vMMrapida0=iMA(Symbol(),0,MMrapida,0,MODE_SMA,PRICE_CLOSE,1); // Obtém o valor da MM rápida da barra que terminou
     vMMrapida1=iMA(Symbol(),0,MMrapida,0,MODE_SMA,PRICE_CLOSE,2); // Obtém o valor para a MM rápida da barra anterior
     vMMlenta0=iMA(Symbol(),0,MMlenta,0,MODE_SMA,PRICE_CLOSE,1);   // Obtém o valor da MM lenta da barra que terminou
     vMMlenta1=iMA(Symbol(),0,MMlenta,0,MODE_SMA,PRICE_CLOSE,2);   // Obtém o valor para a MM lenta da barra anterior

     // Verifica se existiu um cruzamento da MM rápida acima da MM lenta
     if (vMMrapida1<vMMlenta1 && vMMrapida0>vMMlenta0) 
     {
        // Se já existem trades abertos, tem de os fechar
        if (OrdersTotal() > 0) FecharTodosTrades();

        // Abre um trade longo
        resposta = OrderSend(Symbol(), OP_BUY, Lotes, NormalizeDouble(Ask,Digits), 3, 0, 0, "mm exemplo buy", IdentificadorEA, 0, Blue);
     }

     // Verifica se existiu um cruzamento da MM rápida abaixo da MM lenta
     if (vMMrapida1>vMMlenta1 && vMMrapida0<vMMlenta0) 
     {
        // Se já existem trades abertos, tem de os fechar
        if (OrdersTotal() > 0) FecharTodosTrades();

        // Abre um trade curto
        resposta = OrderSend(Symbol(), OP_SELL, Lotes, NormalizeDouble(Bid,Digits), 3, 0, 0, "mm exemplo sell", IdentificadorEA, 0, Red);
     }
  }
  return(0);
}


//-------------------------------------------------------------------------------------------------
// deinit, função executada quando o EA termina

int deinit()
  {
   // Se existem trades abertos, tem de os fechar
   if (OrdersTotal() > 0) FecharTodosTrades();
   return(0);
  }


//-------------------------------------------------------------------------------------------------
// Função que fecha todos os trades existentes

int FecharTodosTrades()
  {
   for(int i=0;i<OrdersTotal();i++)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false)        break;
      
      // A função vai fechar todas as ordens que sejam deste EA e sobre o símbolo corrente
      if(OrderMagicNumber() == IdentificadorEA && OrderSymbol() == Symbol()) 
      {
         if(OrderType()==OP_BUY)
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,White);
         if(OrderType()==OP_SELL)
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,White);
      }
   } 
   return(0);
  }


// FIM
//-------------------------------------------------------------------------------------------------


응답함

1
개발자 1
등급
(414)
프로젝트
478
40%
중재
7
43% / 29%
기한 초과
16
3%
무료
2
개발자 2
등급
(13)
프로젝트
35
71%
중재
2
0% / 0%
기한 초과
11
31%
작업중
게재됨: 1 코드
3
개발자 3
등급
(89)
프로젝트
139
24%
중재
34
32% / 44%
기한 초과
59
42%
작업중
4
개발자 4
등급
(4)
프로젝트
5
40%
중재
0
기한 초과
3
60%
무료
5
개발자 5
등급
(1125)
프로젝트
1813
61%
중재
14
64% / 7%
기한 초과
84
5%
무료

프로젝트 정보

예산
20 - 30 USD