Bom dia, por gentileza, estou iniciando na programação de EAs, estou com a ideia de construir um robo baseado num indicador específico que baixei, mas para isso preciso utilizar um valor gerado por esse indicador, como faço para utilizar o valor que está no círculo vermelho na imagem em anexo?
O código do indicador é seguinte:
Muito Obrigado!
Você terá de inserir o indicador no seu EA e a partir dai, tratar e manipular as informações geradas pelo indicador através do código de seu EA. Leia o artigo abaixo, deve ajuda-lo.
[ ]'s
- www.mql5.com
Você terá de inserir o indicador no seu EA e a partir dai, tratar e manipular as informações geradas pelo indicador através do código de seu EA. Leia o artigo abaixo, deve ajuda-lo.
[ ]'s
Obrigado pela atenção Joscelino, li o artigo e é muito interessante, mas por ser iniciante, embora tenha entendido a teoria, a prática pra mim é mais desafiadora, o exemplo deixa claro como buscar o indicador, mas o valor em si é um pouco mais obscuro para mim, no indicador cujo código enviei como exemplo, os atributos a serem passados ao comando iCustom são os "inputs"??? mas e o valor do indicador na prática como buscá-lo???
Obrigado...
Bom dia, por gentileza, estou iniciando na programação de EAs, estou com a ideia de construir um robo baseado num indicador específico que baixei, mas para isso preciso utilizar um valor gerado por esse indicador, como faço para utilizar o valor que está no círculo vermelho na imagem em anexo?
O código do indicador é seguinte:
Muito Obrigado!
Primeiro, use o iCustom pra obter o handle do indicador...
A partir daí use o CopyBuffer(), vc tem exemplos diss em qq indicador básico do CODEBASE...
No CopyBuffer é que a mágica acontece... Você precisa informar pra ele o Handle do indicador, o vetor pra onde esses valores serão copiados, etc... Mas, a informac'~ao primordial é o No. do Buffer que ele vai ler...
No seu caso, o número do Buffer estará nas definic'~oes de SetIndexBuffer do indicador...
//--- define buffers SetIndexBuffer(0,ExtBBBuffer,INDICATOR_DATA); SetIndexBuffer(1,ExtTempBuffer,INDICATOR_CALCULATIONS);
ou é Buffer 0, ou é buffer 1...
;)
Primeiro, use o iCustom pra obter o handle do indicador...
A partir daí use o CopyBuffer(), vc tem exemplos diss em qq indicador básico do CODEBASE...
No CopyBuffer é que a mágica acontece... Você precisa informar pra ele o Handle do indicador, o vetor pra onde esses valores serão copiados, etc... Mas, a informac'~ao primordial é o No. do Buffer que ele vai ler...
No seu caso, o número do Buffer estará nas definic'~oes de SetIndexBuffer do indicador...
ou é Buffer 0, ou é buffer 1...
;)
Olá amigos, agradeço a ajuda, mas não obtive sucesso em pegar o valor do indicador postado acima....mais alguma ideia por favor?
Bom dia,
se você postar o programa eu posso ajudar, use o anexador de código para colar o programa..
Bom dia,
se você postar o programa eu posso ajudar, use o anexador de código para colar o programa..
Olá amigo, antecipo meus agradecimentos, bem, eu apaguei o que fiz pra tentar partir de outro princípio, por enquanto não tenho nenhum programa, mas se lhe ajudar, enviei acima o código do indicador e uma imagem com um círculo vermelho indicando o valor que necessito pegar.
Mais uma vez, muito obrigado pela atenção...
.... mas se lhe ajudar, enviei acima o código do indicador e uma imagem com um círculo vermelho indicando o valor que necessito pegar.
Me ajudar??? Não entendi.
Enfim, quando você estiver fazendo o EA e quiser ajuda poste o programa.
Olá amigo, obrigado pela atenção, falei a respeito do código do indicador pq não tenho um programa já que apaguei aquele que tinha feito, queria começar do zero, com outra ideia, não consegui usar o icustom, como alguns colegas indicaram, a referência ao indicador foi na expectativa de que com seus conhecimentos vc conseguisse me direcionar sobre como pegar o valor que desejo (na foto com círculo vermelho acima).
Muito obrigado, grande abraço...
Boa noite,
tá aí um EA prontinho com seu indicador!
//+------------------------------------------------------------------+ //| Exp_jdmaster.mq5 | //+------------------------------------------------------------------+ #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> input double inpLote=800; // Volume input int inpPeriodo=21; // Período bulls input ENUM_MA_METHOD inpTypeMA=MODE_EMA; // Smoothing method input ENUM_APPLIED_PRICE inpTypePrice=PRICE_CLOSE;// Applied price input double inpSignalBP=0.15; // Signal para trade input double inpStopLoss=20; // Stop loss input double inpTakeProfit=20; // Take profit int bullsHandle; double bullsValue[]; double ask,bid,ssl,ttp; ulong magicNumber=1942; bool flagOnTrade=false; CTrade cTrade; CSymbolInfo cSymbol; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { cSymbol.Name(_Symbol); cTrade.SetExpertMagicNumber(magicNumber); bullsHandle=iCustom(_Symbol,_Period,"Downloads//BullsBears",inpPeriodo,inpTypeMA,inpTypePrice); if(bullsHandle==INVALID_HANDLE) { PrintFormat("Falha ao criar o manipulador do indicador BullsBears para o símbolo %s/%s, código de erro %d", _Symbol, EnumToString(_Period), GetLastError()); return(INIT_FAILED); } ChartIndicatorAdd(0,0,bullsHandle); ssl=cSymbol.NormalizePrice(inpStopLoss*cSymbol.Point()); ttp=cSymbol.NormalizePrice(inpTakeProfit*cSymbol.Point()); ArraySetAsSeries(bullsValue,true); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK); bid=SymbolInfoDouble(_Symbol,SYMBOL_BID); if(ask<=bid) return; if(CopyBuffer(bullsHandle,0,0,1,bullsValue)<0) { Print("Erro ao copiar bullsValue: "); return; } if(!flagOnTrade) { ResetLastError(); if(bullsValue[0]>inpSignalBP) { if(!cTrade.Buy(inpLote,_Symbol,ask,ask-ssl,ask+ttp,StringFormat("BullsPower: %+6.4f",bullsValue[0]))) { Alert(" Erro ao emitir Buy: ",_LastError," Result: ",cTrade.ResultRetcodeDescription()); return; } } if(bullsValue[0]<-inpSignalBP) { if(!cTrade.Sell(inpLote,_Symbol,bid,bid+ssl,bid-ttp,StringFormat("BullsPower: %+6.4f",bullsValue[0]))) { Alert(" Erro ao emitir Sell: ",_LastError," Result: ",cTrade.ResultRetcodeDescription()); return; } } } } //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { ENUM_TRADE_TRANSACTION_TYPE type=trans.type; if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_entry =0; string deal_symbol =""; long deal_magic =0; if(HistoryDealSelect(trans.deal)) { deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL); deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC); deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY); if(deal_symbol==Symbol() && deal_magic==magicNumber && (ENUM_DEAL_ENTRY)deal_entry==DEAL_ENTRY_IN) flagOnTrade=true; if(deal_symbol==Symbol() && deal_magic==magicNumber && (ENUM_DEAL_ENTRY)deal_entry==DEAL_ENTRY_OUT) flagOnTrade=false; } } } //+------------------------------------------------------------------+
- 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, por gentileza, estou iniciando na programação de EAs, estou com a ideia de construir um robo baseado num indicador específico que baixei, mas para isso preciso utilizar um valor gerado por esse indicador, como faço para utilizar o valor que está no círculo vermelho na imagem em anexo?
O código do indicador é seguinte:
Muito Obrigado!