Modificação ”Regressões passadas desviadas”
Results 1 to 4 of 4

Thread: Modificação ”Regressões passadas desviadas”

  1. #1
    2 Anexo(s) Gostaria de modificar este indior para não usar objetos, mas não consigo descobrir como.

    Qualquer sugestão seria muito apreciada!
    Código inserido/ --------------------------------------------- --------------------- /| regressão passada desviada.mq4 |/| Copyright © 2006, tageiger, também conhecido como [email protected] |/| http://www.metaquotes.net |/ ---------------------------------------------------- ------------------- #property copyright Copyright © 2006, tageiger, também conhecido como [email protected] #property link http://www.metaquotes.net #property indior_chart_window #property indior_buffers 7 #property indior_color1 Brown #property indior_color2 Lime #property indior_color3 Lime #property indior_color4 Brown #property indior_color5 Brown #property indior_color6 Brown #property indior_color7 Brown/---- parâmetros de entrada int period=0;*padrão 0 significa que o canal usará o tempo de abertura de x barras anteriores em qualquer período de tempo ao qual o indior esteja conectado. pode-se mudar para 1,5,15,30,60...etc para travar a hora de início em um período específico, e então visualizar os canais bloqueados em um período de tempo diferente...*/extern int LR.length=56 ;/começa a regressão das barras extern double std.channel.1=0.618;/1º canal externo duplo std.channel.2=1.618;/2º canal externo duplo std.channel.3=0;/3º canal/---- buffers internos double mean.Buffer#91;#93;; double high.1.Buffer#91;#93;; duplo baixo.1.Buffer#91;#93;; double high.2.Buffer#91;#93;; duplo baixo.2.Buffer#91;#93;; double high.3.Buffer#91;#93;; duplo baixo.3.Buffer#91;#93;; int init() {*---- deslocamentos de linha ao desenhar SetIndexShift(0,JawsShift); SetIndexShift(1, TeethShift); SetIndexShift(2,LipsShift);/---- primeiras posições ignoradas ao desenhar*/SetIndexDrawBegin(0,LR.length); SetIndexDrawBegin(1,LR.comprimento); SetIndexDrawBegin(2,LR.comprimento); SetIndexDrawBegin(3,LR.comprimento); SetIndexDrawBegin(4,LR.comprimento); SetIndexDrawBegin(5,LR.comprimento); SetIndexDrawBegin(6,LR.comprimento);/---- Mapeamento de 3 buffers internos SetIndexBuffer(0,mean.Buffer); SetIndexBuffer(1,alto.1.Buffer); SetIndexBuffer(2,low.1.Buffer); SetIndexBuffer(3,alto.2.Buffer); SetIndexBuffer(4,low.2.Buffer); SetIndexBuffer(5,alto.3.Buffer); SetIndexBuffer(6,low.3.Buffer);/---- configurações de desenho SetIndexStyle(0,DRAW_LINE,0); SetIndexArrow(0,158); SetIndexStyle(1,DRAW_LINE,0); SetIndexArrow(1,158); SetIndexStyle(2,DRAW_LINE,0); SetIndexArrow(2,158); SetIndexStyle(3,DRAW_LINE,0); SetIndexArrow(3,158); SetIndexStyle(4,DRAW_LINE,0); SetIndexArrow(4,158); SetIndexStyle(5,DRAW_LINE,0); SetIndexArrow(5,158); SetIndexStyle(6,DRAW_LINE,0); SetIndexArrow(6,158);/---- rótulos de índice SetIndexLabel(0,mean); SetIndexLabel(1,1std acima); SetIndexLabel(2,1º padrão para baixo); SetIndexLabel(3,2nd Std acima); SetIndexLabel(4,2nd Std para baixo); SetIndexLabel(5,3º padrão para cima); SetIndexLabel(6,3º padrão para baixo);/---- inicialização concluída return(0);} intdeinit() {ObjectDelete(período m LR.comprimento TL);} int start() { ObjectDelete(período m LR.comprimento TL); limite int; int counted_bars=IndiorCounted(); if(counted_barslt;0) return(-1); if(counted_barsgt;0) counted_bars--; limit=Barras-contadas_barras;/---- loop principal for(int i=0; ilt;limit; i ) {/cálculo de regressão linear int start.bar=i LR.length, end.bar=i; int n=start.bar-end.bar 1;/---- calcular valores de preço.. Cálculo de regressão linear double value=Close#91;end.bar#93;; duplo a,b,c; double sumy=valor; soma dupla = 0,0; duplo sumxy=0,0; dupla somax2=0,0; for(int ii=1; iilt;n; ii ) { value=Close#91;end.bar ii#93;; soma =valor; sumxy =valor*ii; sumx =ii; somax2 =ii*ii; } c=somax2*n-somax*somax; if(c==0.0) retorno; b=(sumxy*n-sumx*sumy)/c; a=(sumy-sumx*b)/n; duplo LR.preço.2=a; duplo LR.preço.1=a b*n; mean.Buffer#91;i#93;=NormalizeDouble(LR.price.2,D� �gitos);*---- cálculo do desvio máximo (3ª linha de desvio) double max.dev=0; desvio duplo=0; valor d duplo=a; for(int i.1=0; i.1lt;n; i.1 ) { value=Close#91;end.bar i.1#93;; dvalor =b; desvio=MathAbs(valor-dvalor); if(max.devlt;=desvio) max.dev=desvio; } *///linha de tendência de regressão linear ObjectDelete(period m LR.length TL); ObjectCreate(período m LR.length TL,OBJ_TREND,0,Time#91;start.bar#93;,LR.price.1,Ti me#91;end.bar#93;,LR.price.2); ObjectSet(período m LR.comprimento TL,OBJPROP_COLOR,Laranja); ObjectSet(período m LR.comprimento TL,OBJPROP_WIDTH,2); ObjectSet(período m LR.comprimento TL,OBJPROP_RAY,false);/...desvio padrão... double x=0,x.sum=0,x.avg=0,x.sum.squared=0,std.dev=0; for(int iii=i; iiilt;start.bar; iii ) { x=MathAbs(Close#91;iii#93;-ObjectGetValueByShift(period m LR.length TL,iii)); x.sum.squared =(x*x); } std.dev=MathSqrt(x.sum.squared/((start.bar-end.bar)-1));/Print(LR.price.1 ,LR.price.1, LR.Price.2 ,LR.price.2, std.dev ,std.dev);/...canais de desvio padrão... high.1.Buffer#91;i#93;=mean.Buffer#91;i#93; (std.channel.1*std.dev); baixo.1.Buffer#91;i#93;=mean.Buffer#91;i#93;-(std.channel.1*std.dev); high.2.Buffer#91;i#93;=mean.Buffer#91;i#93; (std.channel.2*std.dev); low.2.Buffer#91;i#93;=mean.Buffer#91;i#93;-(std.channel.2*std.dev); high.3.Buffer#91;i#93;=mean.Buffer#91;i#93; (std.channel.3*std.dev);//max.dev; low.3.Buffer#91;i#93;=mean.Buffer#91;i#93;-(std.channel.3*std.dev);//max.dev; } ObjectDelete(período m LR.comprimento TL); return(0);}/ ----------------------------------------- -------------------------


    Especificamente, gostaria de saber como lidar com o código inserido x=MathAbs(Close#91;iii#93;-ObjectGetValueByShift(period m LR.length TL,iii)); (Também não preciso dos 3 canais STD diferentes - só preciso de 1).

    https://www.tradingintuitivo.com/att...1770557129.mq4

    https://www.tradingintuitivo.com/att...5844417906.ex4

  2. #2
    Qual equação o ObjectGetValueByShift usa?

  3. #3

    Qual equação o ObjectGetValueByShift usa?
    Se eu me lembro da geometria do ensino médio (para mim, isso é meados dos anos 1970!), E se a função se comporta como a ajuda on-line do MT4 diz (nunca a usei), então: a função de uma linha de tendência é definido por (x0,y0) e (x1,y1) onde x0 e x1 são dois valores de data e hora e y0 e y1 são os valores de preço correspondentes nesses momentos Então y = ObjectGetValueByShift(trendline name,x) deve retornar o preço y para qualquer valor de data e hora x, nessa linha de tendência. Algebricamente, isso deve resultar em algo como y = (y1-y0)(x-x0)/(x1-x0) y0 Google algo como equações de linha reta ou y=mx c para uma prova. Minha memória pode não ser tão boa. LOL.

  4. #4
    Obrigado, isso ajuda. Fica confuso com este indior porque o que eu quero é a inclinação REPAINTABLE da regressão linear na mudança de barra que eu especificar, não a inclinação NÃO REPAINTABLE. São duas coisas diferentes.

Permissões de Publicação

  • Não pode publicar novos tópicos
  • Não pode publicar respostas
  • Não pode publicar anexos
  • Não pode editar as suas publicações
  •  
  • Código BB está Ativo
  • Smilies estão Ativos
  • Código [IMG] está Ativo
  • Código [VIDEO] está Ativo
  • Código HTML está Desligado
O site da tradingintuitivo utiliza cookies
O site da tradingintuitivo utiliza cookies, alguns já foram definidos. Pode ler sobre a nossa utilização de cookies aqui. Por favor, clique no botão à direita para aceitar os nossos cookies. Se continuar a usar o site da tradingintuitivo, vamos supor que aceita os nossos cookies.