Ajuda na codificação - página 100

 
dasssi:
mladen

primeiro espero que você não esteja mais bravo comigo...

segundo eu tenho um erro ao tentar carregar o Ea

dasssi

Tente renomear a EA (devido à letra francesa no nome que pode estar lhe causando um problema - nenhum outro problema pode ser a causa disso, uma vez que é uma EA muito simples)

 

obrigado, funciona agora/

não parece bom para o testador de estratégia

 
dasssi:
graças funciona agora/não parece bom no testador de estratégia

É apenas um exemplo de como um indicador deve ser chamado de uma ea quando se trata de sinais. Longe de ser um EA completo (dê uma olhada nos novos EAs na seção elite e avançada e compare o código - você vai ver o que quero dizer). Portanto, foi apenas uma ajuda ao After-rage para resolver seu problema de codificação

 

Obrigado!! Funciona bem para entrar em posições. Não sei por que minha EA não funcionou, mas não importa. Por isso tento adicionar código para fechar pedidos, mas não funciona também. Estranho porque eu peguei como código de estrutura para entrar em posições e eu apenas dupliquei o volume do lote. Você pode dar uma olhada?

Arquivos anexados:
 
After-rage:
Obrigado!! Funciona bem para entrar em posições. Não sei por que minha EA não funcionou, mas não importa. Por isso tento adicionar código para fechar pedidos, mas não funciona também. Estranho porque eu peguei como código de estrutura para entrar em posições e eu apenas dupliquei o volume do lote. Você pode dar uma olhada?

Pós-raiva

Uma maneira de fazer isso (fechar uma ordem aberta quando o sinal muda) está no código agora

Arquivos anexados:
 

Muito obrigado! Funciona muito bem. Vou trabalhar nisto e ver por que estava errado.

 

Alguém sabe se é possível mudar um indicador de tempo de execução via código? por exemplo, eu gostaria de ter uma CCI em que o período fosse igual ao ATR para que, quando o ATR mudar o período da CCI também mude... como no init do indicador em cada nova barra... o problema é que eu não sei como reiniciar o indicativo via código... eu tentei chamar o init() quando a nova barra está aberta e o período muda corretamente, mas o indicador não atualiza... o último valor da barra está correto, mas eu quero que todo o indicativo repinte as novas configurações... espero ter sido claro... Obrigado

 
AtApi:
Alguém sabe se é possível mudar um indicador de tempo de execução via código? por exemplo, eu gostaria de ter uma CCI em que o período fosse igual ao ATR para que, quando o ATR mudar o período da CCI também mude... como no init do indicador em cada nova barra... o problema é que eu não sei como reiniciar o indicativo via código... eu tentei chamar o init() quando a nova barra está aberta e o período muda corretamente, mas o indicador não atualiza... o último valor da barra está correto, mas eu quero que todo o indicativo repinte as novas configurações... espero ter sido claro... Obrigado

Se você quiser repintar todos os valores indianos, basta definir a contagem do loop principal no início para Bars-1 e calcular os valores com novas configurações

 

do que o mlden para sua resposta rápida...

por favor, dê uma olhada neste exemplo:

extern int IndicatorPeriod = 10;

extern int AtrPeriod= 10;

extern bool DynamicPeriod = TRUE;

int init()

{

if (DynamicPeriod)

{

double atr = NormalizeDouble(100*iATR(0,0,AtrPeriod,0),0);

IndicatorPeriod = atr;

}

}

int start()

{

datetime lastBarOpenTime;

datetime thisBarOpenTime = Time[0];

if (DynamicPeriod)

{

if(thisBarOpenTime != lastBarOpenTime)

{

lastBarOpenTime = thisBarOpenTime;

init();

}

}

int i,counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

// is this what you are talking about?

int limit=MathMin(Bars-counted_bars,Bars-1);

for(i=limit; i>=0; i--) //MAIN LOOP

{

wherever calculation

}

}

 
AtApi:
do que o mlden para sua resposta rápida...

por favor, dê uma olhada neste exemplo:

extern int IndicatorPeriod = 10;

extern int AtrPeriod= 10;

extern bool DynamicPeriod = TRUE;

int init()

{

if (DynamicPeriod)

{

double atr = NormalizeDouble(100*iATR(0,0,AtrPeriod,0),0);

IndicatorPeriod = atr;

}

}

int start()

{

datetime lastBarOpenTime;

datetime thisBarOpenTime = Time[0];

if (DynamicPeriod)

{

if(thisBarOpenTime != lastBarOpenTime)

{

lastBarOpenTime = thisBarOpenTime;

init();

}

}

int i,counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

// is this what you are talking about?

int limit=MathMin(Bars-counted_bars,Bars-1);

for(i=limit; i>=0; i--) //MAIN LOOP

{

wherever calculation

}

}

AtApi

Se você quiser salvar valores para o buffer (um valor por hora exata para aquela barra) então sim, esta é a maneira correta. Mas se você quiser que todas as barras sejam "repintadas", então configure o linit para ser sempre igual a Barras-1