[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
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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.
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.
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.
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();
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?
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!
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.