Bom dia pessoal,
sou iniciante em programação de mql5, gostaria de pedir uma ajuda minha ideia /estratégia seria de uma EA que na abertura do preço por ex: H1 se o preço for maior que abertura da vela ele abre uma compra e só irá fecha se o preço vier abaixo da abertura ou seja se preço não voltar para abertura e irá até o fechamento da vela e só irá fechar na próxima vela que ao abrir e o preço vier abaixo da abertura assim ele fecha a ordem, isso vale na venda também.
Bom dia pessoal,
sou iniciante em programação de mql5, gostaria de pedir uma ajuda minha ideia /estratégia seria de uma EA que na abertura do preço por ex: H1 se o preço for maior que abertura da vela ele abre uma compra e só irá fecha se o preço vier abaixo da abertura ou seja se preço não voltar para abertura e irá até o fechamento da vela e só irá fechar na próxima vela que ao abrir e o preço vier abaixo da abertura assim ele fecha a ordem, isso vale na venda também.
Bom dia pessoal,
sou iniciante em programação de mql5, gostaria de pedir uma ajuda minha ideia /estratégia seria de uma EA que na abertura do preço por ex: H1 se o preço for maior que abertura da vela ele abre uma compra e só irá fecha se o preço vier abaixo da abertura ou seja se preço não voltar para abertura e irá até o fechamento da vela e só irá fechar na próxima vela que ao abrir e o preço vier abaixo da abertura assim ele fecha a ordem, isso vale na venda também.
Procura essa pagina aqui https://www.mql5.com/pt/docs/constants/structures/mqlrates para começar a estruturar sua EA.
grande abraço!
- www.mql5.com
Ah, sem querer ser chato.... Você não pediu uma ajuda, certo? Pela postagem parece que você quer o EA pronto... Por isso a minha sugestão de contratar alguém ou usar um EA já pronto.
/* ████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████ ██████████████████████████████ ██████ ████████ ██████████████████████ █████████████████████████████ ██████ ███████████ ███████████ ███████████████████████████████ ████████████████████████████ ██████ ███████████ ███████████ ████████████████████████████████ ███████████████████████████ ██████ ███████████ ███████████ █████████████████████████████████ ██████████████████████████ ███████████ ███████████ ██████████████████████████ █████████████████████████ ██████ ███████████ ███████████████████ ███████████████████████████ ████████████████████████ ██████ ███████████ ███████████████████ ████████████████████████████ ███████████████████████ ██████ ███████████ ███████████████████ █████████████████████████████ ██████████████████████ ██████ ███████████ ███████████ ██████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████ ██ █ ███ █ █ █ ███ █ █ █ █ ████ █ ██ █ ██ █ ███ █ ██ ██ ███ █ ███ ███ ███ ███ █ █ █ ███ ███ ███ █████ ██ █████ ███ ███ █ ███ █ ███ █ █ ██ █ ██████ ██ █ ███ ███ ███ ███ █ █ █ █ ███ ███ ██ ██ █████ ███ ███ █ ███ █ █ █ █ █ ██ ██ ██ ███ █ ███ ███ ███ ███ █ ███ █ ███ ███ ███ █████ ██ █████ ███ ██ ██ ███ █ ███ █ █ ██ █ ███ ██ ██ ███ █ ███ ███ █ ███ █ ███ ███ ███ █ ██████ ███ ███ █ ███ █ ██ █ ███ █ ██ ████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████ +----------------------------------------------------------------------------------------------+ | Exemplo.mq5 | | Copyright 2022, MetaQuotes Ltd. | | https://www.mql5.com | +----------------------------------------------------------------------------------------------+ */ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include <IncExemplo.mqh> #include <ClassExemplo.mqh> /**/ ClassExemplo Ex; /* +----------------------------------------------------------------------------------------------+ | Inputs | +----------------------------------------------------------------------------------------------+ */ input group "SCHEDULES" input H_EA h_un_inic = h550; //Time start input H_EA h_un_fim = h1065; //Time end input group "INDICATORS/STRATEGY" input Y_N Panel_look = yes_; //Show panel? input z_100 Maximum_lots = z5; //Maximum lots input R_10000 Warranty = r3000; //Lot guarantee input z_100 ping_ = z15; //Update OnTimer (ping) input group "BREAKEVEN/TRAILINGSTOP" input n_2020 Gatilho_Bk_Sl = n65; //Change/Walk SL points? input z_100 Pts_no_Positivo = z5; //How many profit points SL? input z_100 Andar_SL = z5; //SL adjustment steps input n_2020 max_rollback = n300; //Maximum rollback /* +----------------------------------------------------------------------------------------------+ | Expert initialization function | +----------------------------------------------------------------------------------------------+ */ int OnInit() { //input validity check if(!Sets()) return(INIT_FAILED); //--- create timer EventSetTimer(ping_); if(Ex.p_AtsOnInit()!=0) return(INIT_FAILED); if(Panel_look==1) Ex.p_Panel(); return(INIT_SUCCEEDED); } /* +----------------------------------------------------------------------------------------------+ | Expert deinitialization function | +----------------------------------------------------------------------------------------------+ */ void OnDeinit(const int reason) { Ex.p_AtsDeinitReason(reason); } /* +----------------------------------------------------------------------------------------------+ | Expert tick function | +----------------------------------------------------------------------------------------------+ */ void OnTick() { //Calc_(); TimeLocal(dtime); h_loc_Atual=(dtime.hour*60)+dtime.min;//Current time in minutes acquired from PC. Ex.p_H_loc_Atual(h_loc_Atual); //CopyRates(simbol_atual,periodo_atual,0,1,rt); //if(!NewBar(rt[0].time)) // return; if(positions_atual>0) Ex.p_MoverStopLoss(); ontime_free=true; if(positions_atual==0) Ex.p_Strategy(); } /* +----------------------------------------------------------------------------------------------+ | Timer function | +----------------------------------------------------------------------------------------------+ */ void OnTimer() { if(ontime_free) {if(Panel_look==1) {Ex.p_Panel(); Ex.p_TimeControl();}} if(positions_atual>0) {Ex.p_Verific_reverse();} ontime_free=false; } /* +----------------------------------------------------------------------------------------------+ | OnTrade() | +----------------------------------------------------------------------------------------------+ */ void OnTrade(void) { positions_atual=PositionsTotal(); Print("An OnTrade event has occurred <<<=======",IntegerToString(dtime.hour,0), ":",IntegerToString(dtime.min,0)); Ex.p_EquityManagement();//Financial loss verification } /* +----------------------------------------------------------------------------------------------+ | Sets | +----------------------------------------------------------------------------------------------+ */ bool Sets() { bool resp=false; Ex.p_Setx(h_un_inic, h_un_fim, Maximum_lots, Warranty, max_rollback, Gatilho_Bk_Sl, Andar_SL); //input validity check if(h_un_inic>=h_un_fim) {Alert("Verifique horários inseridos!"); resp=false;} else resp=true; return(resp); } //End EA. //+--------------------------------------------------------------------------------------------+
Dentro da classe vc precisa modificar essa parte;
//+------------------------------------------------------------------+ //| Strategy | //+------------------------------------------------------------------+ void ClassExemplo::p_Strategy() { if(!CopyRates(_Symbol,_Period,0,2,rt)) {Print("Copia Rates falhou!"); return;} m_newbar1=rt[0].time; m_vendeu=false; m_comprou=false; //return; if(p_IsNewDay()) {m_Candle=0; m_first_cand=false; m_secon_cand=false; m_tot_ordens_dia=0; m_ats_volume=0;} if(m_newbar1>m_newbar0) {m_newbar0=m_newbar1; m_Candle+=1;} if(m_Candle==1) { if(!SymbolInfoTick(_Symbol,m_tk)) {Print("Copia Tick falhou!"); return;} double amp_c=(rt[1].close>rt[1].open)?rt[1].close-rt[1].open:rt[1].open-rt[1].close;//corpo double amp_t=rt[1].high-rt[1].low;//amplitude total //compra if((rt[1].open<rt[1].close)&&((amp_c>=50)&&(amp_t<=300))&&(m_first_cand==false)) if(m_tk.last>rt[1].high) { p_CalcLote(); //double sloss=sloss1-MathMod(sloss1,5.00); double sl1=m_tk.ask-(amp_t+20); m_sl=sl1-MathMod(sl1,5.00); double tp1=m_tk.ask+100; m_tp=tp1-MathMod(tp1,5.00); m_atsN.Buy(m_ats_volume,_Symbol,m_tk.ask,m_sl,m_tp,NULL); m_tot_ordens_dia+=1; m_comprou=true; m_vendeu=false; m_first_cand=true; m_semposicao=false; m_Moveu_comprado=false; } //venda if((rt[1].open>rt[1].close)&&((amp_c>=50)&&(amp_t<=300))&&(m_first_cand==false)) if(m_tk.last<rt[1].low) { p_CalcLote(); double sl1=m_tk.bid+(amp_t+20); m_sl=sl1-MathMod(sl1,5.00); double tp1=m_tk.bid-100; m_tp=tp1-MathMod(tp1,5.00); m_atsN.Sell(m_ats_volume,_Symbol,m_tk.bid,m_sl,m_tp,NULL); m_tot_ordens_dia+=1; m_vendeu=true; m_comprou=false; m_first_cand=true; m_semposicao=false; m_Moveu_vendido=false; } } if(m_Candle==3) {m_first_cand=true;} }
- www.mql5.com
Tem esse EA de domínio público... Faça uma revisão na função (objeto) Strategy dentro da classe... ele está escrito para pegar o segundo candle do dia e só funciona no mini índice; mas com pouca modificação vc consegue implementar sua ideia nele, eu acho. Talvez seja interessante especificar que ativo vc gostaria de operar, pois na B3 tem diferença a programação para cada ativo. Boa sorte. Entro pouco aqui, mas se puder ajudar de alguma forma mais pode contar comingo. A classe ClassExemplo.mqh e o arquivo de inclusão IncExemplo.mqh devem ser salvos na pasta include do seu Metatreder5, e o EA Exemplo.mq5 deve ser salvo na pasta Experts/Advisors. Procure entender tudo que foi feito e o pq de cada coisa nesse EA para fazer a modificação que atenda seu setup. Não esqueça de compilar todos antes de rodar e só coloque em conta real depois de, no mínimo, um mês de testes em conta demo. Tire suas dúvidas aqui >>>: https://www.mql5.com/pt/docs.
Dentro da classe vc precisa modificar essa parte;
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Bom dia pessoal,
sou iniciante em programação de mql5, gostaria de pedir uma ajuda minha ideia /estratégia seria de uma EA que na abertura do preço por ex: H1 se o preço for maior que abertura da vela ele abre uma compra e só irá fecha se o preço vier abaixo da abertura ou seja se preço não voltar para abertura e irá até o fechamento da vela e só irá fechar na próxima vela que ao abrir e o preço vier abaixo da abertura assim ele fecha a ordem, isso vale na venda também.