Tutorial Indicador para Expert Advisor por favor qualquer um tipo me para Converter código de indicadores personalizado para o código EA Obrigado. Propriedade indicatorclarewindow propriedade indicatorbuffers 5 propriedade indicatorcolor1 DimGray property indicatorcolor2 Red property indicatorcolor3 LimeGreen property indicatorcolor4 Red property indicatorcolor5 Azul property indicatorstyle1 STYLEDOT externa string TimeFrame quotcurrent time framequot extern int HalfLength 56 extern int Preço PRICEWEIGHT external double BandsDeviations 2.5 extern bool Interpolar true extern bool alertsOn false extern Bool alertasOnCurrent false extern bool alertasOnHighLow true extern bool alertasMessage true extern bool alertasSound false extern bool alertasEmail falso duplo tmBuffer duplo upBuffer duplo dnBuffer duplo wuBuffer duplo wdBuffer duplo upArrow duplo dnArrow string IndicadorFileName bool calculatingTma falso bool returnsBars false int timeFrame intTimeTimeFrame () TimeFrame) HalfLength MathMax (HalfLength, 1) IndicadorBuffers (7) SetIndexBuffer (0, tmBuffer) SetIndexDrawBegin (0, HalfLength) SetIndexBuffer (1, upB pode ser prejudicado) SetIndexDrawBegin (1, HalfLength) SetIndexDrawBegin (2 SetIndexBuffer (2, dnBuffer), HalfLength) SetIndexBuffer (3, dnArrow) SetIndexStyle (3, DRAWARROW) SetIndexArrow (5242) SetIndexBuffer (4, upArrow) SetIndexStyle (4, DRAWARROW) SetIndexArrow ( 6,241) SetIndexBuffer (5, wuBuffer) SetIndexBuffer (6, wdBuffer) IndicadorFileName WindowExpertName () return (0) int deinit () int start () int inttedbarsIndicatorCount () int i, limite if (countedbarslt0) return (-1) if (countedbarsgt0 ) Countedbars-- limitMathMin (Bars-1, Bars-countedbarsHalfLength) if (retornandoBars) if (calculatingTma) if (timeFrame gt Period ()) limit MathMax (limite, MathMin (Bars-1, iCustom (NULL, timeFrame, IndicatorFileName, quotreturn (Null, timeFrame, shift1) tmBufferi iCustom (NULL, timeFrame, IndicatorFileName) para (i limite i gt 0 i--) int shift1 iBarShift (NULL, timeFrame, Timei) , Quotcalculat eTmaquot, HalfLength, Price, BandsDeviations, 0, shift1) upBufferi iCustom (NULL, timeFrame, IndicatorFileNam e, quotcalculat eTmaquot, HalfLength, preço, BandsDeviations, 1, Shift1) dnBufferi iCustom (NULL, período de tempo, IndicatorFileName, quotcalculat eTmaquot, HalfLength, preço, BandsDeviations, 2, Shift1) upArrowi EMPTYVALUE dnArrowi EMPTYVALUE se (Highi1gtupBufferi1 ampamp Closei1gtOpeni1 ampamp CloseiltOpeni) upArrowi HighiiATR (NULL, 0,20, i) se (TimeFrame lt Period () shift1iBarShift (NULL, timeFrame, Timei-1)) Continuar If (Interpolar) continue para (int n 1 em lt Barras ampamp Timein gt time1 n) continue fator duplo 1.0 n para (int k 1 k lt nk) tmBufferik kfactortmBufferin (1.0-kfactor) tmBufferi upBufferik kfactorupBufferin (1.0-kfactor) upBufferi dnBufferik KfactordnBufferin (1.0-kfactor) dnBufferi if (alertasOn) if (alertsOnCurrent) int forBar 0 else forBar 1 se (alertsOnHighLow) if (HighforBar gt upBufferforBar ampamp HighforBar1 lt upBufferforBar1) doAlert (quothigh penetrated upper barquot) se (LowforBar lt dnBufferforBar ampamp LowforBar1 gt dnBufferforBar1) doAlert (quotlow barquot inferior penetrado) else if (CloseforBar gt upBufferforBar ampamp CloseforBar1 lt upBufferforBar1) doAlert (quotclose barquot superior penetrado) se (CloseforBar lt dnBufferforBar ampamp CloseforBar1 gt dnBufferforBar1) doAlert (quotclose penetrado inferior (S) (s) (s) (s) (s) dupla (s) (s) Sumw (HalfLength1) para (j1, kHalfLength jltHalfLength j, k--) soma kiMA (NULL, 0,1,0, MODESMA, Price, ij) MODESMA, Preço, ij) sumw k tmBufferi sumsumw dupla diff iMA (NULL, 0,1,0, MODESMA, Price, i) - tmBufferi se (igt (Bars-HalfLength-1)) continuar se (i (Bars-HalfLength - 1)) upBufferi tmBufferi dnBufferi tmBufferi se (diffgt0) wuBufferi MathPow (dif, 2) wdBufferi 0 mais wdBufferi MathPow (diff, 2) wuBufferi 0 continue if (diffgt0) wuBufferi wuBufferi1 (FullLength-1) MathPow (diff, 2)) FullLength wdBufferi wdBufferi1 (FullLength-1) FullLength mais wdBufferi (wdBufferi1 (FullLength-1) MathPow (diff, 2)) FullLength wuBufferi wuBufferi1 (FullLength-1) FullLength upBufferi tmBufferi BandsDeviationsMathSqrt (WuBufferi) dnBufferi tmBufferi - BandsDeviationsMathSqrt (wdBufferi) void doAlert (cadeia doWhat) static string previousAlertquotquot static datetime previousTime string mensagem if (previousAlertdoWhat previousTimeTime0) previousAlert doWhat previousTime Time0 mensagem StringConcatenate (Symbol (), quot at quot, TimeToStr (TimeLocal, TIMESECONDS), THA. Quot, doWhat) if (alertsMessage) Alert (mensagem) if (alertsEmail) SendMail (StringConcatenate (Símbolo (), quotTMA quot), mensagem) if (alertasSound) PlaySound (quotalert2.wavquot) int stringToTimeFrame (Tfs, 1, char) String (tfs, -1) char () () tc String String - 32) else if (char gt -33 ampamp carvão animal lt 0) tfs StringSetChar (TFS, 1, CH 224) int tf0 se (tfsquotM1quot tfsquot1quot) tfPERIODM1 se (tfsquotM5quot tfsquot5quot) tfPERIODM5 se (tfsquotM15quot tfsquot15quot) tfPERIODM15 se (tfsquotM30quot tfsquot30quot) tfPERIODM30 se (tfsquotH1quot tfsquot60quot) tfPERIODH1 se (tfsquotH4quot tfsquot240quot) tfPERIODH4 se (tfsquotD1quot tfsquot1440quot) tfPERIODD1 se (tfsquotW1quot tfsquot10080quot) tfPERIODW1 se (tfsquotMNquot tfsquot43200quot) tfPERIODMN1 se (tf0 tfltPeriod ()) tfPeriod () retorno (tf) Este é um de dois Parte MQL4 código tutorial discutindo como criar um simpl E Metatrader consultor especialista usando o RSI que negocia apenas uma vez por bar. No final da parte 2, um modelo RSI EA de pleno funcionamento pode ser baixado. Além disso, o código fará referência a um gráfico de tempo diferente para o RSI. Portanto, se você estiver interessado em aprender como fazer referência a um período de tempo diferente dentro de uma EA, este tutorial deve ser informativo. Este tutorial de código MQL4 é o seqüencial para Como colocar apenas um comércio por barra em um forex consultor especialista MT4. Este artigo irá expandir esse conceito simples e apresentar código que pode ser usado como um modelo em muitos diferentes especialistas consultor aplicações e com muitos tipos diferentes de indicadores, incluindo o RSI. Como foi discutido no tutorial MQL4 anterior, a chave para negociar apenas uma vez por barra é encapsular a lógica de negociação dentro de um bloco condicional que usa uma variável de nível de módulo para acompanhar o número da barra usando a variável Bars. O MQL4 possui muitas funções de indicador embutidas que podem ser usadas na construção do sistema. Usando o RSI em MQL4 A função iBarShift retorna a mudança de barra por um determinado tempo. No código abaixo, a barra atual Time0 é referenciada. Se esse código for usado em um gráfico diferente do gráfico de 1 hora, a seqüência de barras pode ser imprevisível. IBarShift permite a determinação da barra correta, ou a barra mais próxima se o último termo é definido como falso. O valor de retorno pode ser inserido onde quer que seja necessário um parâmetro de mudança, como na função iRSI. O RSI ou Índice de Força Relativa pode ser referenciado no código MQL4 e é declarado da seguinte forma: iRSI dupla (símbolo string int int timeframe int period. Int appliedprice int shift) O primeiro termo é símbolo e se se refere ao símbolo atual Podem ser inseridos como NULL ou Symbol (). Ou mesmo com êxito como 0 (embora a melhor prática sugira que você deve usar NULL em vez de 0) todos com significado equivalente. O segundo termo é timeframe e pode ser inserido como 0 para o cronograma de gráficos selecionado atualmente ou como um dos valores de enumeração de tempo pré-construído (consulte o arquivo de ajuda em iRSI para obter mais detalhes). Neste exemplo, a variável PERIODH1 é usada para referenciar dados de um gráfico de 1 hora. O terceiro período de termo refere-se ao comprimento do RSI onde a variável RSILength é usada (abaixo). Appliedprice refere-se a preços de bar como fechar (PRICECLOSE) ou alta (PRICEHIGH). Shift refere-se a quantas barras para deslocar o RSI para o cálculo. Por exemplo, para calcular o RSI de 5 bares atrás você usaria 5 no 5º termo. Para este exemplo, nenhum deslocamento é usado para que 0 seja usado (abaixo). Depois de criar uma entrada externa para RSILength e duas entradas para os limites Buy e Sell para o valor RSI em 70 e 30, respectivamente, o código tem a seguinte aparência: extern int RSILength 14 externo int BuyThreshold 70 externo int SellThreshold 30 extern double Lotes 0.01Forex Blog 4 Abra a pasta MQL4 (ou MQL5 se estiver instalando um indicador MT5): 5. Abra a pasta Indicadores: 6. Cole o arquivo indicador aqui: 7. Se for um arquivo já compilado (.ex4 ou. ex5), então multa. Tudo o que você precisa fazer é retornar ao MetaTrader, clicar com o botão direito do mouse em Indicators in Navigator subwindow e clicar em Refresh. O novo indicador aparecerá na mesma sub-janela do Navigator: 8. Se não for um arquivo compilado, mas um arquivo de origem (.mq4 ou. mq5), então você precisará clicar duas vezes no ícone 8212 que abrirá no MQL Editor Está incluído no pacote MetaTrader). Agora, pressione F7 ou clique em Compilar botão: Normalmente, não deve haver erros durante a compilação. No entanto, se aparecerem alguns erros na subventa Caixa de ferramentas, você pode tentar corrigi-los ou entrar em contato com o desenvolvedor indicator8217s para ajudar com o problema. Normalmente, é preciso algum conhecimento MQL e habilidades de codificação para corrigir esses erros. Os erros de compilação ficam assim: 9. Depois de compilar ou copiar um arquivo MetaTrader executável (.ex4 ou. ex5), você pode começar a usar o indicador em sua plataforma. Tudo o que você precisa fazer é anexá-lo ao gráfico: Se você souber o que está fazendo, talvez também queira alterar alguns dos parâmetros de entrada do indicator8217s: OK. Agora você pode desfrutar do seu novo indicador MetaTrader e espero 8212 melhores resultados de negociação Forex. Se você tiver alguma dúvida sobre a instalação de indicadores personalizados no MetaTrader, por favor, livre para pedir usando o formulário de comentário abaixo.
No comments:
Post a Comment