marcos4325:
//+------------------------------------------------------------------+ //| MM EA.mq4 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #define IdentificadorEA 101 //--- Input parameters - parâmetros do Expert Advisor que podem ser alterados quando se executa o dito. extern double Lotes = 0.1; extern int MMlenta = 40; extern int MMrapida = 5; extern int StopLoss = 300; extern int TakeProfit = 30; extern bool MMfechar = false; // Fechar no cruzamento das MMs (true / false) //--- datetime LastTradeBarTime; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- Necessário para controlar se estamos numa nova barra LastTradeBarTime = Time[1]; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- Se existem trades abertos, tem de os fechar if(OrdersTotal() > 0) {FecharTodosTrades();} } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- 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;} // 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) { //--- Verifica se existem posições abertas e se devem ser fechadas if(OrdersTotal() > 0 && MMfechar) {FecharTodosTrades();} //--- Abre um trade longo resposta = OrderSend(Symbol(), OP_BUY, Lotes, Ask, 3, Ask - StopLoss * Point, Ask + TakeProfit * Point, "mm exemplo buy", IdentificadorEA, 0, clrBlue); } //--- Verifica se existiu um cruzamento da MM rápida abaixo da MM lenta if(vMMrapida1 > vMMlenta1 && vMMrapida0 < vMMlenta0) { //--- Verifica se existem posições abertas e se devem ser fechadas if(OrdersTotal() > 0 && MMfechar) {FecharTodosTrades();} //--- Abre um trade curto resposta = OrderSend(Symbol(), OP_SELL, Lotes, Bid, 3, Bid + StopLoss * Point, Bid - TakeProfit * Point, "mm exemplo sell", IdentificadorEA, 0, clrRed); } } } //+------------------------------------------------------------------+ //| Função que fecha todos os trades existentes | //+------------------------------------------------------------------+ void FecharTodosTrades() { bool rec; 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) {rec = OrderClose(OrderTicket(), OrderLots(), Bid, 3, clrWhite);} else if(OrderType() == OP_SELL) {rec = OrderClose(OrderTicket(), OrderLots(), Ask, 3, clrWhite);} } } } //+------------------------------------------------------------------+ //| Expert End | //+------------------------------------------------------------------+
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Eu tenho umm código de um EA porém ele não o takeprofit implementado
Gostaria de coloca-lo da maneira mais fácil de forma que não altere as outras funcionalidades