[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 370

 
Bion >> :

Fiz o que você me aconselhou.

Você deve usar a data/hora LastTime;
data/hora Pausa=3600;

int start()
{
if(TimeCurrent()<LastTime+Pause)return(0);

...

bool cl() {if(OrderSelect(0,SELECT_BY_POS)==verdadeiro){ int t=OrderType();
double l=OrderLots();
int tik=OrderTicket();Alerta("tik=", tik);
}
if (t===OP_BUY) OrderClose(tik,l,Bid,3,Red);
se (t===OP_SELL) OrderClose(tik,l,Ask,3,Green);
LastTime=TimeCurrent();
}

Mas no Testador de Estratégia, a ordem abre de acordo com as condições, mas não reage ao tempo.

Além disso, o testador não reage ao parâmetro "tempo de existência da ordem pendente", ou seja, não é apagado quando é hora de apagá-lo.

É suposto ser assim?

Como podemos fazer o testador considerar o tempo decorrido desde que o pedido foi fechado?


Em segundo lugar, não é muito agradável atribuir valor a variável global em alguma função obscura, há duas saídas, seja por referência ou por atribuição de valor a variável global se a função retorna valor do tipo booleano, claro que variáveis para se também estiver alertando, mas isto é seu negócio .... mas isso é apenas um ditado)))) Não está claro em seu código quando esta função é chamada e se ela é chamada de alguma forma. Tente verificar os resultados no arquivo de registro e você entenderá.
 

Aqui está o código completo, removi todas as funções, declarei as variáveis como deveria ser, mas o resultado é o mesmo - no modo teste, não reage ao tempo, coloca pedidos extras na mesma barra.

O que ele precisa?


double q0=0;
double q1=0;
double q2=0;
double q3=0;
datetime LastTime;
datetime Pause=3600;
int typ, tik;
double l;

int start()
{

datetime t=Hour();

if (t===8) {q0=0; q1=0; q2=0; q3=0;}

if (t>==9) {

int i0=0;
while (q0==0) { q0=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquesa,Vermelho,Ouro, Prata,0,i0); i0++; }

int i1=0;
while (q1==0) { q1=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquesa,Vermelho,Ouro, Prata,1,i1); i1++; }

int i2=0;
while (q2==0) { q2=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquesa,Vermelho,Ouro, Prata,2,i2); i2++; }

int i3=0;
while (q3==0) { q3=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquesa,Vermelho,Ouro, Prata,3,i3); i3++; }


Comentário("g0=",q0, "\n", "g1=",q1, "\n", "g2=",q2, "\n", "g3=",q3 ); }

double os0=iOsMA(NULL,0,5,26,9,4,0);

double os1=iOsMA(NULL,0,5,26,9,4,1);

// ver a partir daqui


if(TimeCurrent()<(LastTime+Pause))return(0);

if ( OrderTotal()==0) { if (Bid>q0 && t>==9 && t<=20 &&& os1>0) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-30*Point),0,"__",555,0,Red );

if (Ask<q1 && t>==9 && t<=20 && os1<0) OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+30*Point),0,"__",444,0,Green);}

if (OrderTotal()==1) {OrderSelect(0,SELECT_BY_POS);
typ=OrderType();
tik=OrderTicket();
l=OrderLots();
if (typ====OP_BUY && os1<0) { LastTime=TimeCurrent(); OrderClose(tik,l,Bid,3,Red);}
if (typ===OP_SELL && os1>0) { LastTime=TimeCurrent();OrderClose(tik,l,Ask,3,Green);}

}

return(0);
}
//+------------------------------------------------------------------+

 

Olá.

Pergunta para os especialistas

A situação é a seguinte: o Expert Advisor está pendurado na conta demo, as cotações passam, os preços mudam, mas o Expert Advisor parou de negociar desde algum tempo, um erro é gerado no log :


2009/12/30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:08 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:12 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:13 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preço

Par - USDCAD


Começou em 2009.12.30 16:46:06 e parou em

2009.12.30 17:29:58 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 128. O tempo de espera para a transação expirou

O acordo de 43 minutos é significativo, o que é pior é que atrapalha o algoritmo do ekspert.

Ainda mais interessante é o erro que aparece quando tento enviar uma ordem OP_BUYSTOP :-0 (que tipo de citações podem existir para ordens pendentes?)


136 SEM PREÇOS = SEM COTAÇÕES:


Por que não há preços se eles estão constantemente mudando na tela?


A questão foi levantada aqui https://www.mql5.com/ru/forum/105903/page2 por um respeitado comerciante de ouro, mas não foi oficialmente resolvida (espero que esta questão não seja uma espécie de TABO que não queiramos discutir à vista de todos)


Eu gostaria de saber "por que isto é" e "como prevenir ou lidar com este tipo de erros".


Espero que não seja um TABOO que as pessoas não queiram discutir em público). Obrigado antecipadamente pela resposta.

 
AndBar >> :

Olá.

Pergunta para especialistas -

A situação é a seguinte: Expert Advisor em uma conta demo, as cotações são aprovadas, os preços mudam, mas o Expert Advisor parou de operar por algum tempo, o erro é gerado no log :


2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:08 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:12 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preços
2009.12.30 16:46:13 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 136. Sem preço

Par - USDCAD


O erro começou em 2009.12.30 16:46:06 e parou em

2009.12.30 17:29:58 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Código de erro = 128. O tempo de espera para a transação expirou

Você deve concordar que 43 minutos é um tempo considerável; o que é pior, isso estraga o algoritmo do especialista.

Ainda mais interessante é o erro que aparece quando tento enviar uma ordem OP_BUYSTOP :-0 (que tipo de citações existem para as ordens pendentes?)


136 SEM PREÇOS = SEM COTAÇÕES:


Por que não há preços se na tela eles estão em constante mudança?


A questão foi levantada aqui https://www.mql5.com/ru/forum/105903/page2 por um respeitado comerciante de ouro, mas não foi oficialmente resolvida (espero que este não seja um tipo de questão TABU que você não queira discutir à vista de todos)


Eu gostaria de saber "por que" e "como prevenir ou lidar com este tipo de erros".

o que é a revisão da plataforma?

Já foi discutido mais de uma vez sobre diferentes fluxos de dados. Para o comércio automatizado, o fluxo foi fechado. Aparentemente.

 
AndBar писал(а) >>

136 SEM PREÇOS = SEM COTAÇÕES:

Isto acontece com freqüência antes que as notícias sejam divulgadas. Não há nada que você possa fazer, a menos que você faça um pedido com antecedência e o faça atrás do preço o máximo de tempo possível. 43 minutos é muito longo.

 
Bion писал(а) >>

Aqui está o código completo, removidas todas as funções, declaradas variáveis conforme necessário, mas o resultado é o mesmo - no modo teste não reage ao tempo, faz pedidos extras na mesma barra.

A pergunta era sobre uma pausa após o encerramento. Haverá uma pausa após o encerramento.

-

Há várias aberturas em um bar. Após uma abertura você deve memorizar a hora do bar e antes de uma abertura você deve verificar se a hora do bar não é igual à hora da última abertura. É melhor usar a GlobalVariable para lembrar desta vez.

-

Ao todo, seria uma boa idéia acrescentar while (q0==0 && i<Bars).

-

LastTime=TimeCurrent(); - melhor fazer isso após verificar se o pedido realmente fechou: if(OrderClose(...))LastTime=TimeCurrent();

 
Integer писал(а) >>

A pergunta era sobre uma pausa após a hora de fechamento. Haverá uma pausa após o fechamento.

-

Várias aberturas na mesma barra. Após a abertura, você deve se lembrar do horário do bar, e antes de abrir, verificar se o horário do bar não é igual ao último horário de abertura. É melhor usar a GlobalVariable para lembrar desta vez.

-

Ao todo, seria uma boa idéia acrescentar while (q0==0 && i<Bars).

-

LastTime=TimeCurrent(); - melhor fazer isso após verificar se o pedido realmente fechou: if(OrderClose(...))LastTime=TimeCurrent();

Do tutorial - uma variável GV só pode ter o tipo duplo - como devemos colocar o número de segundos lá então?

Verifiquei se uma ordem foi fechada, mas ainda assim falha e ainda recebemos um erro.


if(Time[0]<(LastTime+Pause))return(0);

if ((OrderTotal()==0) { if (Bid>q0 && t>==9 && t<=20 && os1>0) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-30*Point),0,"__",555,0,Red );

se (Ask<q1 && t>==9 && t<=20 && os1<0) OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+30*Point),0,"__",444,0,Green);}

if (OrderTotal()==1) {OrderSelect(0,SELECT_BY_POS;)
typ=OrderType();
tik=OrderTicket();
l=OrderLots();
if (typ===OP_BUY && os1<0) if (OrderClose(tik,l,Bid,3,Red)) LastTime=Time[0];
if (digite==OP_SELL && os1>0) if (OrderClose(tik,l,Ask,3,Green)) LastTime=Time[0];
}

Você poderia nos dar um exemplo ou um link onde a tarefa de atrasar a abertura do próximo pedido em uma hora após o anterior ter sido implementado com sucesso?

 
Bion писал(а) >>

Do livro didático - uma variável GV só pode ter o dobro do tipo - então como você coloca o número de segundos nele?

Ahhhh, então esqueça tudo e tenha um feliz ano novo!

Feliz Ano Novo para todos!

 
Estava trabalhando com um indicador, tudo estava bem, então quando troquei os prazos o terminal começou a ficar pendurado, reinstalei o enrolamento, ele ainda fica pendurado. Por que(((((((((((((
 
Fosfalugel писал(а) >>
Eu estava trabalhando com um indicador, tudo estava bem, então quando eu troco o cronograma o terminal começou a congelar, eu reinstalo o Windows, ele ainda congela. Por que(((((((((((((

A luz indicadora provavelmente deve ser jogada fora. Ou pergunte ao Pai Natal. É véspera de Ano Novo.