Como codificar? - página 336

 
tkuan77:
Oi mladen, lamento dizer que acabei de testá-lo de novo e ainda não está funcionando.

Existe outra maneira de fechar meu negócio com base em um tempo específico?

Cumprimentos

Ryan

Eu usei este código :

extern bool UseCurrSymbol = false;

int init() { return(0); }

int deinit() { return(0); }

void start(void)

{

bool result;

if(OrdersTotal()>0)

{

if (TimeCurrent()>= StrToTime("07:00:00"))

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

double pBid=MarketInfo(OrderSymbol(),MODE_BID);

result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);

}

if (OrderType()==OP_SELL)

{

double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);

}

}

}

}

return;

}

Para testar, e fechou o pedido (veja o exemplo)

Arquivos anexados:
test_closed.gif  63 kb
 
mladen:
Eu usei este código :
extern bool UseCurrSymbol = false;

int init() { return(0); }

int deinit() { return(0); }

void start(void)

{

bool result;

if(OrdersTotal()>0)

{

if (TimeCurrent()>= StrToTime("07:00:00"))

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

double pBid=MarketInfo(OrderSymbol(),MODE_BID);

result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);

}

if (OrderType()==OP_SELL)

{

double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);

}

}

}

}

return;

}

Para testar, e fechou o pedido (veja o exemplo)

Oi mladen, obrigado. o problema foi resolvido na minha parte. apenas uma nota lateral, você pode me explicar qual é a finalidade deste pequeno revestimento em sua codificação?

bool externo UseCurrSymbol = falso; e

se (!UseCurrSymbol || OrderSymbol()==Symbol())

Cumprimentos

Ryan

 
tkuan77:
Oi mladen, obrigado. o problema foi resolvido na minha parte. apenas uma nota lateral, você pode me explicar qual é a finalidade deste pequeno revestimento em sua codificação?

bool externo UseCurrSymbol = falso; e

se (!UseCurrSymbol || OrderSymbol()==Symbol())

Cumprimentos

Ryan

Você usou a variável UseCurrSymbol e essa linha exata em seu código

Tive que fazer essa variável para que o código usasse as mesmas variáveis que seu código

 
mladen:
Você usou a variável UseCurrSymbol e essa linha exata em seu códigoI teve que fazer essa variável para que o código usasse as mesmas variáveis que seu código

Oi mladen, desculpe-me por ter obtido aquela parte do código das fontes que você me forneceu antes.

o que eu quis dizer foi por que precisamos colocar um bool UseCurrSymbol para falso e qual é a finalidade do 2º liner para --> se (!UseCurrSymbol ||| OrderSymbol()==Symbol())

 
tkuan77:
Oi mladen, desculpe-me porque recebi aquela parte do código das fontes que você me forneceu anteriormente. o que eu quis dizer foi por que precisamos colocar um bool UseCurrSymbol para falso e qual é o propósito do 2º liner para --> se (!UseCurrSymbol || OrderSymbol()==Symbol())

Não é necessário que seja falso

Se você definir isso como verdadeiro, então somente o símbolo atual será verificado para pedidos. Assim, permite que você escolha quais ordens você deseja processar

 

Olá, pessoal!

Eu tenho o seguinte problema.

Quero que um valor de um icustom indi, por exemplo, iCustom(NULL,0, "MACD",12,26,9,0,i) seja usado em uma subfunção como:

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

para obter o impulso do "iCustom(NULL,0, "MACD",12,26,9,0,i)"...

Quando eu o chamo de normal com a mãe(High,22,Bars,i)

isto está funcionando, mas quando eu uso o indi personalizado em vez do "Alto", é claro que não funciona.

Então minha pergunta é: como posso implementar isto para que o código funcione?

Obrigado por qualquer ajuda!

Adeus, AT

 
at120:
Olá, pessoal!

Eu tenho o seguinte problema.

Quero que um valor de um icustom indi, por exemplo, iCustom(NULL,0, "MACD",12,26,9,0,i) seja usado em uma subfunção como:

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

para obter o impulso do "iCustom(NULL,0, "MACD",12,26,9,0,i)"...

Quando eu o chamo de normal com a mãe(High,22,Bars,i)

isto está funcionando, mas quando eu uso o indi personalizado em vez do "Alto", é claro que não funciona.

Então minha pergunta é: como posso implementar isto para que o código funcione?

Obrigado por qualquer ajuda!

Adeus, AT

at120

Você tem um indicador chamado "macd" na pasta de indicadores (não me refiro ao macd embutido, mas algum macd personalizado)? Se sim, verifique se os parâmetros estão corretos.

 

Olá Mladen!

Obrigado pela rápida repetição!

Desculpe MACD foi um mau exemplo, pegue qualquer outro MACD personalizado ou algo parecido.

Eu verifiquei a saída via janela extra e testei o indi /output para definir as configurações corretas,

para ter certeza de que "iCustom(NULL,0, "myIndi",0,i)" tem parâmetros corretos. De cadáver ele é compilado, pasta direita, etc...

Eu sempre recebo o erro (quando uso uma variável) - por exemplo

double mom1 = iCustom(NULL,0, "myIndi",0,i); -> mom(mom1,Bars,20,i)

-> "mãe" - conversa de parâmetros não permitida ou quando a utilizo diretamente ->

mãe( iCustom(NULL,0, "myIndi",0,i),Barras,20,i)

Erro: iCustom - parâmetro passado como referência, variável esperada

Obrigado pela ajuda e informações!

Adeus, AT

 
at120:
Olá Mladen!

Obrigado pela rápida reapresentação!

Desculpe MACD foi um mau exemplo, pegue qualquer outro MACD personalizado ou algo parecido.

Eu verifiquei a saída via janela extra e testei o indi /output para definir as configurações corretas,

para ter certeza de que "iCustom(NULL,0, "myIndi",0,i)" tem parâmetros corretos. De cadáver ele é compilado, pasta direita, etc...

Eu sempre recebo o erro (quando uso uma variável) - por exemplo

double mom1 = iCustom(NULL,0, "myIndi",0,i);-> mom(mom1,Bars,20,i)

-> "mãe" - conversa de parâmetros não permitida ou quando a utilizo diretamente ->

mãe( iCustom(NULL,0, "myIndi",0,i),Barras,20,i)

Erro: iCustom - parâmetro passado como referência, variável esperada

Obrigado pela ajuda e informações!

Adeus, AT

Se você usar a simples chamada iCustom() então o erro só pode acontecer nos parâmetros

Você não pode usar iCustom() como parâmetro para a função mom() (verifique o cabeçalho da função mom() e você verá quais parâmetros e que tipo de parâmetros a função mom() aceita). O resultado de iCustom() é definido como "duplo" - não pode tomar o ritmo de um array passado por referência. Verifique também esta linha : https://www.mql5.com/en/forum/173108 - talvez ajude

 

Olá Mladen!

Acho que a chamada do meu iCustom é correta, porque em teste e normal(exportar dados ou usar como indi)

funciona bem até o momento. Acho que o problema é que, como você mencionou, o valor é duplo/arranjo.

Quando eu agora uso um

mãe dupla1[];

mom1 = iCustom(NULL,0, "myIndi",0,i);

e que uma -> mãe(mom1,Bars,20,i);

-> "mom" - conversa de parâmetro não permitida

Como posso escrever isto corretamente?

Muito obrigado e adeus, AT

Razão: