Como codificar? - página 70

 

Precisa de ajuda

................

 
SIDDESH:
Hi,

Pode dar o código para a barra anterior, por favor.

Isto pode ser usado no EA para limitar a colocação dos pedidos quando a barra anterior é mais do que certa altura.

Cumprimentos,

SIDDESH

Siddesh e outros que podem ajudar:

O código para a barra anterior está abaixo:

// para comprar

indicadorpast duplo = icustom(....................,1);

indicador duplo indicatornow = icustom(....................,0);

se (fechar[1]indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL();

mas, com este satélite, o especialista abre posições não apenas quando o preço cruza o indicador, ele também abre posição acima do indicador. Quero que o perito abra posições APENAS quando cruzar o indicador, por isso tentei isso:

// para comprar

indicadorpast duplo = icustom(....................,1);

indicador duplo indicatornow = icustom(....................,0);

if (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL();

Mas esta afirmação não está funcionando.

Você sabe o que está acontecendo? Porque acho que não há erros na declaração.

A questão é por que não abrir no ponto exato da cruz ao fechar[0]==indicatornow? Se a função seria com ==, evitaremos a abertura de ordens acima do ponto de cruz entre o indicador e o fechamento da barra atual, mas não está funcionando com este tipo de relação entre as variáveis.

 

Pessoas que podem ajudar:

O código para a barra anterior está abaixo:

// para comprar

indicadorpast duplo = icustom(....................,1);

indicador duplo indicatornow = icustom(....................,0);

se (fechar[1]indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL();

mas, com este satélite, o especialista abre posições não apenas quando o preço cruza o indicador, ele também abre posição acima do indicador. Quero que o perito abra posições APENAS quando cruzar o indicador, então eu tentei isso:

// para comprar

indicadorpast duplo = icustom(....................,1);

indicador duplo indicatornow = icustom(....................,0);

if (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL();

Mas esta afirmação não está funcionando.

Você sabe o que está acontecendo? Porque acho que não há erros na declaração.

A questão é por que não abrir no ponto exato da cruz ao fechar[0]==indicatornow? Se a função seria com ==, evitaremos a abertura de ordens acima do ponto de cruz entre o indicador e o fechamento da barra atual, mas não está funcionando com este tipo de relação entre as variáveis.

Você já experimentou o mesmo problema? Abyone sabe como resolvê-lo?

Obrigado, mais uma vez.

 
la totona:
Pessoas que podem ajudar:

O código para a barra anterior está abaixo:

// para comprar

indicadorpast duplo = icustom(....................,1);

indicador duplo indicatornow = icustom(....................,0);

se (fechar[1]indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL();

mas, com este satélite, o especialista abre posições não apenas quando o preço cruza o indicador, ele também abre posição acima do indicador. Quero que o perito abra posições APENAS quando cruzar o indicador, por isso tentei isso:

// para comprar

indicadorpast duplo = icustom(....................,1);

indicador duplo indicatornow = icustom(....................,0);

if (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL();

Mas esta afirmação não está funcionando.

Você sabe o que está acontecendo? Porque acho que não há erros na declaração.

A questão é por que não abrir no ponto exato da cruz ao fechar[0]==indicatornow? Se a função seria com ==, evitaremos a abertura de ordens acima do ponto de cruz entre o indicador e o fechamento da barra atual, mas não está funcionando com este tipo de relação entre as variáveis.

Você já experimentou o mesmo problema? Abyone sabe como resolvê-lo?

Obrigado, mais uma vez.

Porque você está procurando uma correspondência exata entre um valor retornado de 8 dígitos de ponto flutuante e o preço - eles quase nunca serão iguais a resoluções como essa. Basta verificar se há uma condição maior ou menor que essa.

 

software swicthing

oi rapazes, eu precisaria transformar este indicador ou o sistema relativo ao comércio em linguagem mql porque este funciona no metatrader 4. Estou mudando de corretor e de software, há alguém capaz de me ajudar?

{Cálculo da Média Móvel de Regressão Expandida}

{BEGINANIMENTO}

{"-HShift" - BARS FORWARDS}

DataBars:= Ref(Preço,- HShift);

e1:= Mov(DataBars,PeriodMA,TypeMA);

e2:= Mov(e1,PeriodMA,TypeMA);

e3:= Mov(e2,PeriodMA,TypeMA);

e4:= Mov(e3,PeriodMA,TypeMA);

e5:= Mov(e4,PeriodMA,TypeMA);

e6:= Mov(e5,PeriodMA,TypeMA);

c1:= -b*b*b;

c2:= 3*b*b+3*b*b*b*b;

c3:= -6*b*b*b-3*b-3*b*b*b*b;

c4:= 1+3*b+b*b*b*b+3*b*b*b;

MV:= c1*e6+c2*e5+c3*e4+c4*e3;

{Cálculo do Tempo de Vida MV

para eliminação da distorção dos valores iniciais}

{T3 Média móvel}

e1:= Mov(Pr,PeriodMA1,TypeMA1);

e2:= Mov(e1,PeriodMA1,TypeMA1);

e3:= Mov(e2,PeriodMA1,TypeMA1);

e4:= Mov(e3,PeriodMA1,TypeMA1);

e5:= Mov(e4,PeriodMA1,TypeMA1);

e6:= Mov(e5,PeriodMA1,TypeMA1);

c1:= -b1*b1*b1;

c2:= 3*b1*b1+3*b1*b1*b1*b1;

c3:= -6*b1*b1*b1-3*b1-3*b1*b1*b1*b1*b1;

c4:= 1+3*b1+b1*b1*b1*b1*b1+3*b1*b1*b1;

MA1:= c1*e6+c2*e5+c3*e4+c4*e3;

{Tendência para cima e para baixo}

UpTrend:=Mv>=MA1;

DownTrend:=MA1>=Mv>=Mv;

{Sinal longo e curto}

Long:= cross(Mv,MA1) e Mv>=MA1;

curto:= cruz(MA1,Mv) e MA1>=Mv;

{OpenBuy e CloseBuy}

OpenBuy:= cross(Mv,MA1) e Mv>=MA1;

CloseBuy:= cross(MA1,Mv) e MA1>=Mv;

{AbrirVender e FecharVender}

OpenSell:= cross(MA1,Mv) e MA1>=Mv;

CloseSell:= cross(Mv,MA1) e Mv>=MA1;

 
bobo10:
oi rapazes, eu precisaria transformar este indicador ou o sistema relativo ao comércio em linguagem mql porque este funciona no metatrader 4. Estou mudando de corretor e de software, há alguém capaz de me ajudar?

{T3 Média móvel}

e1:= Mov(Pr,PeriodMA1,TypeMA1);

e2:= Mov(e1,PeriodMA1,TypeMA1);

e3:= Mov(e2,PeriodMA1,TypeMA1);

e4:= Mov(e3,PeriodMA1,TypeMA1);

e5:= Mov(e4,PeriodMA1,TypeMA1);

e6:= Mov(e5,PeriodMA1,TypeMA1);

c1:= -b1*b1*b1;

c2:= 3*b1*b1+3*b1*b1*b1*b1;

c3:= -6*b1*b1*b1-3*b1-3*b1*b1*b1*b1*b1;

c4:= 1+3*b1+b1*b1*b1*b1*b1+3*b1*b1*b1;

MA1:= c1*e6+c2*e5+c3*e4+c4*e3;

Todos estes códigos são similares, você poderia começar olhando o código T3

 
nittany1:
Global, coloque isto antes do init()
datetime PreviousBar;[/CODE]

In the order placement and/or order close stuff, wrap it in this:

if(NewBar() == true)

{

if blah blah blah, gimme pips // not actual functions but you get the idea

if blah blah blah, close orders // um

}

Common function outside main loop:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}

Obrigado Nitty1 pela ajuda. Vou tentar.

Também graças ao waltini & devil2000. Devo ser capaz de descobrir isso agora.

 

Código de conta para correr livremente na Demo

Hi:

Alguém pode me dizer que código poderia ser inserido para permitir que um EA que tenha código de segurança de conta também seja executado livremente em uma conta demo para que os usuários possam testá-lo antes de entrar no ar?

Isto é mesmo possível?

Obrigado

 
fxgrm:
Hi:

Alguém pode me dizer que código poderia ser inserido para permitir que um EA que tenha código de segurança de conta também seja executado livremente em uma conta demo para que os usuários possam testá-lo antes de entrar no ar?

Isto é mesmo possível?

Obrigado

A partir do metaeditor:

bool IsDemo()

Retorna VERDADEIRO se o especialista rodar em uma conta de demonstração, caso contrário, retorna FALSO.

 

Codificação "Trend Condition" com StepMA

Condição de compra:

StepMA (com Modo Cor: 2) é "longo".

Cruzamentosestocásticos 20 de baixo para cima

Condição de venda:

StepMA (com Modo Cor: 2) é "curto".

Cruzamentos estocásticos 80 de cima para baixo

StochCurrent duplo = iStochastic(NULL, 0, 21, 3, 8, MODE_SMA, 0, MODE_MAIN, Bar + 0);

duplo StochPrevious = iStochastic(NULL, 0, 21, 3, 8, MODE_SMA, 0, MODE_MAIN, Bar + 1);

duplo TrendLong = iCustom(NULL, 0, "stepma_v7ea", 1, 1.0, 0, 0, 0, 0, 0.0, falso, 2, 0, 1, Barra + 0);

duplo TrendShort = iCustom(NULL, 0, "stepma_v7ea", 1, 1.0, 0, 0, 0, 0, 0.0, falso, 2, 0, 2, Barra + 0);

Comprar se:

TrendLong && StochCurrent > 20 && StochPrevious < 20

Vender se:

TrendShort && StochCurrent 80

Alguém pode me ajudar com o código da "Condição de Tendência" no exemplo acima, ele não funciona. Eu tentei chamar o buffer 1 e o buffer 2 para o modo longo e curto, mas não entendo o código deste indicador. Obrigado de antemão!