Pergunte! - página 148

 

Qualquer pessoa pode me ajudar a entender melhor como modificar o código para permitir que a EA execute ordens simultâneas em várias instâncias (em outras palavras, estou testando a mesma EA, em vários pares ao mesmo tempo, e estou usando números mágicos diferentes para cada instância).

O código original inclui isto:

int total=OrdensTotal();

if(total<1)

E eu acho que é aqui que está o problema. Se eu aumentar o número, ele simplesmente executa várias ordens na mesma barra (M15) para o mesmo par. Se for deixado se (total<1), então não permitirá ordens simultâneas em pares diferentes.

Posso mudar algo sobre o tick ou barra para permitir apenas uma ordem de cada vez por par, mas várias ordens para todos os pares que têm EA (com número mágico diferente) anexado??

Graças a qualquer um que possa ajudar ou oferecer sugestões!

Chili

 

Confuso em múltiplas declarações se

///////////////////// INICIAR A NEGOCIAÇÃO EM DOMINGO/////////////////////////

StartDay=7; StartHour=1; StartMinute=55;

{

if(TimeDayOfWeek(TimeCurrent())==StartDay)

{

if(TimeHour(TimeCurrent())==StartHour)

{

if(TimeMinute(TimeCurrent())==StartMinute)

{

}

}

}

}

Estou tentando fazer com que minha EA seja ativada quando o sétimo dia (Dia 7), e a Hora 1 de papéis ao redor, e 55 minutos de papéis ao redor. O que eu estou fazendo de errado. Hoje eu iniciei o computador e a EA começou a negociar imediatamente (antes da hora 1)! Por favor, ajude-me.

Obrigado!

Dave

 
JForex78:
Hi,

Eu quero saber como traçar uma linha de MA de menor prazo em um gráfico de maior prazo.

Por exemplo, quero traçar uma seta no gráfico H1 quando a M15 's MA5 e MA10 cruzam.

Por favor, me avise.

Obrigado,

JForex.

Um MA em qualquer gráfico é apenas uma versão mais alta/mais baixa de um MA em um período de tempo mais alto/mais baixo. Por exemplo, se você colocar um 60MA em um gráfico de 5 minutos, mas quiser ver como ele se parece em um gráfico horário, você multiplicaria 60 por 12 (intervalos de 5 minutos em uma hora). Portanto, um 720 MA em um gráfico horário é o mesmo que um 60 MA em um gráfico de 5 min.

Faz sentido?

Lux

 
1Dave7:
///////////////////// INICIAR A NEGOCIAÇÃO EM DOMINGO/////////////////////////

StartDay=7; StartHour=1; StartMinute=55;

{

if(TimeDayOfWeek(TimeCurrent())==StartDay)

{

if(TimeHour(TimeCurrent())==StartHour)

{

if(TimeMinute(TimeCurrent())==StartMinute)

{

}

}

}

}

Estou tentando fazer com que minha EA seja ativada quando o sétimo dia (Dia 7), e a Hora 1 de papéis ao redor, e 55 minutos de papéis ao redor. O que eu estou fazendo de errado. Hoje eu iniciei o computador e a EA começou a negociar imediatamente (antes da hora 1)! Por favor, ajude-me.

Obrigado!

Dave

Dê outra olhada no arquivo de ajuda.

Retorna o atual dia da semana (0-Domingo,1,2,3,4,5,6) do último horário conhecido do servidor.

Lux

 
Chilibowl:
Qualquer pessoa pode me ajudar a entender melhor como modificar o código para permitir que a EA execute ordens simultâneas em várias instâncias (em outras palavras, estou testando a mesma EA, em vários pares ao mesmo tempo, e estou usando números mágicos diferentes para cada instância).

O código original inclui isto:

int total=OrdensTotal();

if(total<1)

E eu acho que é aqui que está o problema. Se eu aumentar o número, ele simplesmente executa várias ordens na mesma barra (M15) para o mesmo par. Se for deixado se (total<1), então não permitirá ordens simultâneas em pares diferentes.

Posso mudar algo sobre o tick ou barra para permitir apenas uma ordem de cada vez por par, mas várias ordens para todos os pares que têm EA (com número mágico diferente) anexado??

Graças a qualquer um que possa ajudar ou oferecer sugestões!

Chili

OrdensTotal é uma função integrada que não considera o número mágico. Você precisa escrever sua própria função que utiliza OrdersTotal, mas filtra por número mágico e provavelmente também por símbolo. Há muitos exemplos por aqui e em outros lugares.

Boa sorte.

Lux

 
luxinterior:
Dê outra olhada no arquivo de ajuda. Lux

Mudei o StartDay para 0, e mudei o StartHour para a hora GMT atual do meu corretor, e mudei o StartMinute para 5 minutos antes dos minutos GMT - Ainda funciona bem quando a hora GMT corresponde à minha hora de início. Eu olhei os arquivos de ajuda e eles não mostram um múltiplo se declaração. Múltiplos se a declaração sempre me confunde. Que diabos estou fazendo de errado? Quero que o programa não negocie até a hora de início apropriada no domingo, e faça um comentário "Non-Trading Time" até a hora = o início na hora de domingo.

Altamente confuso!!

?????

 
luxinterior:
OrdensTotal é uma função construída que não considera o número mágico. Você precisa escrever sua própria função que utiliza OrdersTotal, mas filtra por número mágico e provavelmente também por símbolo. Há muitos exemplos por aqui e em outros lugares.

Boa sorte.

Lux

Aqui está um que eu fiz e que já usei bastante:

int OTBM(int intMagic)//OrdersTotalByMagic

{

int intCount=0;

int intPOS=0;

bool boolTerm=false;

while(boolTerm==false)

{

if(OrderSelect(intPOS,SELECT_BY_POS))

{

if(OrderMagicNumber()==intMagic) intCount++;

intPOS++;

}

else

boolTerm=true;

}

return(intCount);

}

[/PHP]

And if you want to close only a certain order by magic number:

int CBM(int intMagic)//CloseByMagic

{

int intOffset=0;

int Count = OTBM(intMagic);

while(OTBM(intMagic)>0 && Count > 0)

{

OrderSelect(intOffset,SELECT_BY_POS);

if(OrderMagicNumber()==intMagic)

{

if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),999,Red);

else if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),999,Orange);

Count--;

}

else {

intOffset++;

}

}

return(0);

}

Order Profit By Magic:

[PHP]double OPBM(int intMagic)//OrderProfitByMagic

{

double dblProfit=0;

int intPOS=0;

bool boolTerm=false;

while(boolTerm==false)

{

if(OrderSelect(intPOS,SELECT_BY_POS))

{

if(OrderMagicNumber()==intMagic) dblProfit=dblProfit+OrderProfit();

intPOS++;

}

else

boolTerm=true;

}

return(dblProfit);

}

Esperança que ajuda.

 
luxinterior:
Um MA em qualquer gráfico é apenas uma versão mais alta/mais baixa de um MA em um período de tempo mais alto/mais baixo. Por exemplo, se você colocar um 60MA em um gráfico de 5 minutos, mas quiser ver como ele se parece em um gráfico horário, você multiplicaria 60 por 12 (intervalos de 5 minutos em uma hora). Portanto, um 720 MA em um gráfico horário é o mesmo que um 60 MA em um gráfico de 5 min.

Faz sentido?

Lux

Faz todo o sentido. Como você verá um M5 10MA em um gráfico H1?

10/12=0.84. Você pode colocar um M5 0,84 MA em um gráfico H1? Não.

Mas funciona da outra forma - H1 10MA = M5 120MA.

Então minha pergunta é, como eu vejo um cruzamento de 5MA em um período de tempo superior como H4.

Obrigado.

 
 

para Loop em MQL4

Enquanto lia o Curso MQL4 pelo Guru dos Codificadores, deparei-me com esta parte em loop 'para' na Lição 5 que estou confuso. Ela diz que pode haver apenas uma expressão de teste. Mas os exemplos mostrados contêm 2 expressões de teste.

int i;

int j;

for(i=0,j=0;i<15,i<;i++,j++)

Imprimir(i);

int i;

for(i=15;i>0,i<;i--)

Imprimir(i);

Cld alguém bondosamente esclarece?

Obrigado.