Ajuda na codificação - página 61

 
mladen:
Esse indicador está usando a "força da cobra" (TMA centralizada) para suavizar e não pode ser alterado para não recalcular e permanecer o mesmo. A versão "não-pintada" (com ponta final) do TMA centrado é um simples LWMA, mas não espere ter os mesmos resultados com ele que com o TMA centrado. Um pouco mais sobre o TMA centralizado você pode ler aqui : https://www.mql5.com/en/forum/181241As de mudança ou aperfeiçoamento desse código : a base dele é um código descompilado. Duvido que alguém mude um código descompilado.

Muito obrigado Mladen pela informação que lhe foi muito útil

 

Hi,

Descarreguei este indicador da web, mas quando o anexei aparecem as janelas separadas com 2 níveis mas não aparecem as barras.

Você pode me ajudar a consertá-lo?

Obrigado.

oscilador.mq4

Arquivos anexados:
 

dasio,

Isso é apenas mais um indicador de vento solar (alguém tentou mudar algo nele).

dasio:
Hi,

Descarreguei este indicador da web, mas quando o anexei aparecem as janelas separadas com 2 níveis mas não aparecem as barras.

Você pode me ajudar a consertá-lo?

Obrigado.

oscilador.mq4
 
mladen:
dasio,esse é apenas mais um indicador de vento solar (alguém tentou mudar algo nele).

Obrigado. Mas quando eu começo o backtest as barras aparecem. Como isso pode ser possível?

Obrigado.

 

dasio

Verifique os especialistas e a guia do diário se algum erro está escrito lá fora. Nos dados de meu corretor funciona para que eu não possa dizer o que está acontecendo nos dados de seu corretor (talvez divisão zero ou algo semelhante).

dasio:
Obrigado. Mas quando eu começo o backtest as barras aparecem. Como isso pode ser possível? Obrigado
 

Mladen ,

Quando você escreve um código ou olha para o código de alguém, como você avalia a qualidade do código? Quando você escreve um código, como você testa a robustez do código? obrigado.

 

:)

Meus dois critérios principais são :

- simplicidade (fazer um código simples facilita o desenvolvimento, o aprimoramento e a depuração)

- arrumação (quem pensa que um código pode ser simplesmente jogado em uma pilha e que nunca terá que olhar para seu próprio código depois de algum tempo. Além disso, a depuração de um código desordenado é uma história para si mesma)

Quando esses 2 são cumpridos só então eu dou uma segunda olhada e só então eu "leio", mas então é uma história muito longa o que pode ser feito para acessar a qualidade - acho que o processo é muito mais subjetivo do que objetivo ...

nevar:
Mladen, quando você escreve um código ou olha para o código de alguém, como você avalia a qualidade do código? quando você escreve um código, como você testa a robustez do código? obrigado.
 
drofwarc:
Hi,

Estou tentando adaptar um indicador que chama iFractals e, em vez disso, chama um indicador fractal personalizado que tem uma característica de período ajustável. O indicador que estou tentando adaptar está anexado. É chamado de "closesrelativejtozpreviousofractal".

closesrelativejtozpreviousofractal.mq4

O código traça uma seta para cima se o preço quebrar a alta fractal anterior e uma seta para baixo para o inverso.

O indicador que estou tentando chamar com o iCustom também está anexado. É chamado de "Fractal - ajustável".

fractal_-_adjustável.mq4

Abaixo está minha tentativa de modificar o indicador original para que ele chame Fractals - ajustável. O código plota com sucesso pontos nos fractais altos e baixos e o período fractal é ajustável, como eu queria. O problema é com as setas destinadas a traçar as quebras dos níveis fractais alto e baixo anteriores. Não consigo fazê-los traçar corretamente.

Qualquer ajuda com isso seria muito apreciada.

Cordiais cumprimentos,

drofwarc

int start()

{

int counted_bars = IndicatorCounted();

if (counted_bars > 0) counted_bars--;

int limit = Bars - counted_bars;

for(int i=limit; i>0; i--)

{

UpFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 0, i); //-Draw the high fractal

if (UpFractalsBuffer!=0) //-If it is available, put in the array of fractals for higher levels

HighLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 2, i);

if(Close>HighLevel)

UpArrowBuffer=(Low-(PipBuffer)*Poin); //Arrows

DownFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 1, i); //-Draw the low fractal

if(DownFractalsBuffer!=0) //- If it is available put in the array of lower levels

LowLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 3, i);

if(Close<LowLevel)

DownArrowBuffer=(High+(PipBuffer)*Poin);//Arrows

}

return(0);

}

Eventualmente, isto foi resolvido. O problema foi uma mistura de tampão.

 

Código para fazer um indicador saltar n barras entre sinais

Olá a todos,

Eu sei que é possível fazer uma pausa EA entre as negociações, seja usando Sleep() ou gravando um carimbo de tempo e esperando n segundos após o carimbo de tempo antes de permitir outro sinal.

Mas é possível fazer o mesmo para um indicador.

Por exemplo, eu gostaria de poder fazer com que um indicador que traça setas na cruz de duas médias móveis pule n barras após uma cruz antes de traçar outra seta. Em outras palavras, se outra cruz ocorresse antes que n barras tivesse passado, o indicador ignoraria a cruz e não traçaria uma flecha.

Tenho pesquisado extensivamente para encontrar um indicador que faça isso, mas não tive sorte.

Alguém poderia afixar um indicador que já tenha esta característica para que eu possa estudar o código? Ou talvez me dê um exemplo de código que funcione para esta proposta, para que eu possa tentar implementá-lo.

Muito obrigado,

drofwarc

 

não pode ser exibido normalmente, ninguém pode me ajudar a consertá-lo?

#janela_indicadora de propriedade_separate_window

#property indicator_buffers 1

#indicador de propriedade_cores1 Vermelho

#indicador de propriedade_máximo 100

#indicador de propriedade_nível1 70

#indicador de propriedade_nível2 50

#indicador de propriedade_nível3 30

#indicador de propriedade_mínimo 0

//---- parâmetros de entrada

período de int. externo = 14 ;

int exterior Curto período = 5 ;

Interior externo Período médio = 8;

int externo Longo período = 13;

int externo mamodio = 2 ;

//---- buffers

duplo RSI[];

duplo ShortRSI[];

duplo MiddleRSI[]; duplo MiddleRSI[];

duplo LongRSI[]; duplo LongRSI[];

duplo SMRSI[]; duplo SMRSI[];

período int ;

//+------------------------------------------------------------------+

//| Função de inicialização do indicador personalizado |

//+------------------------------------------------------------------+

int init()

{

//---- indicadores

IndicatorBuffers(5);

SetIndexBuffer(0,SMRSI);

SetIndexBuffer(1,RSI);

SetIndexBuffer(2,ShortRSI);

SetIndexBuffer(3,MiddleRSI); SetIndexBuffer(3,MiddleRSI);

SetIndexBuffer(4,LongRSI); SetIndexBuffer(4,LongRSI);

//---- nome para DataWindow e subwindow label do indicador

IndicatorShortName("SMRSI("+rsiperiod+", "+Shortperiod+", "+Middleperiod+", "+Longperiod +", "+mamode+")");

SetIndexDrawBegin(0,rsiperiodo+Longperiodo);

período=Curtoperíodo+Médioperíodo+Longoperíodo;

return(0);

}

//+------------------------------------------------------------------+

//| Função de iteração de indicador personalizada |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

int i,limit;

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limite = Barras_contadas_barras;

for( i=limite; i>=0; i--) RSI=iRSI(NULL,0,rsiperiodo,0,i);

for( i=limite; i>=0; i--) ShortRSI=iMAOnArray(RSI,0,curto-período,0,mamode,i);

for( i=limit; i>=0; i--) MiddleRSI=iMAOnArray(RSI,0,Middleperiod,0,mamode,i);

for( i=limit; i>=0; i--) LongRSI=iMAOnArray(RSI,0,Longperiod,0,mamode,i);

for( i=limit; i>=0; i--) { if(period!=0) SMRSI=(Shortperiod/period)*ShortRSI+(Middleperiod/period)*MiddleRSI+(Longperiod/period)*LongRSI;}

retorno(0);

}

//+------------------------------------------------------------------+