[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 48

 
orlovkem >> :

Talvez o comentário esteja errado, mas a essência é verdadeira, o nível de preço é maior que o valor do indicador, deve comprar, mas deve ser feito apenas uma vez, e a EA comprará enquanto houver dinheiro no depósito. Você só precisa limitar o número de acordos. Para fazer não mais de um de cada vez, não funciona.

Faça uma verificação na barra atual e na barra anterior, então o sinal será um só,

somente na travessia.

Isto é, se na barra atual o indicador é mais alto, e na barra anterior era mais baixo

significa comprar, e será apenas uma compra para o sinal.

 
orlovkem >> :

Talvez eu não o tenha escrito corretamente, mas a essência está correta, o nível de preço tornou-se superior ao valor do indicador, eu preciso comprar e ele compra, mas preciso fazê-lo uma vez, e o EA compra enquanto houver dinheiro no depósito. Você só precisa limitar o número de acordos. Para fazer não mais de um de cada vez, não funciona.

Você tem certeza de que o assessor está comprando (vendendo) ? Você já tentou? A julgar pelo código, não deve haver um único negócio, não que "compre enquanto houver dinheiro no depósito". Ou você não escreveu o código ?

 
xeon >> :

A maneira mais fácil de controlar o número de pedidos abertos ao mesmo tempo

um pouco diferente - as ordens não abrem em paralelo, logo após fechar uma ordem outra abre na mesma direção (neste ponto o comércio já esgotou seu poder e eu estou com uma perda)

((

 
VladislavVG >> :

Você tem certeza de que o assessor está comprando (vendendo) ? Você já tentou? A julgar pelo código, não deve haver um único negócio, não que "compre enquanto houver dinheiro no depósito". Ou você não escreveu o código ?


Eu escrevi o código, e ele compra e vende. Experimentei-o no testador de estratégia.

 
satop >> :

Faça uma verificação na barra atual e na barra anterior, então o sinal será um só,

somente quando cruza.

Isto é, se o indicador for mais alto na barra atual e mais baixo na barra anterior

significa comprar, e será apenas uma compra para o sinal.

Obrigado pela dica, acho que entendo o que é exigido de mim. Vou tentar. Mais uma vez, obrigado.

 
xruss >> :

um pouco errado - as ordens não abrem em paralelo, logo após fechar uma ordem outra se abre na mesma direção (momento em que o comércio já esgotou sua força e eu estou com prejuízo)

((

E se você nos enviar todo o fragmento, que é responsável pela seleção da última encomenda e a condição de sua verificação, nós o entenderemos. É difícil sugerir algo desta forma. Alternativamente, após o sinal, simultaneamente com a abertura de uma posição, você pode colocar uma bandeira para proibir os seguintes negócios deste tipo, e no bloco de abertura de posições para verificar a sua presença. Se a bandeira for hasteada - o comércio é pulado. Ao receber um sinal oposto, a bandeira é retirada, mas após a primeira abertura bem sucedida de uma posição, a nova bandeira é colocada - proibindo negócios de abertura desse tipo, para os quais um novo sinal foi recebido. E assim por diante.

 
orlovkem >> :

Eu escrevi o código e ele compra e vende. Eu experimentei no Testador de Estratégia.

Portanto, não é o código que você postou na página anterior. Esse código não compra nada e não vende nada. Você pode copiá-lo, se não acredita em mim, e executá-lo no testador.

Por exemplo, para mim é claro que não existe um par de números para os quais as condições a>=b e a<b sejam satisfeitas simultaneamente. A julgar por seu especialista, não só não é óbvio para você, mas para você é óbvio que tais números existem. É claro que posso estar errado - então, por favor, se não for difícil, me dê um exemplo de um par de números assim. Somente neste caso, uma ordem de compra será colocada usando seu algoritmo. O mesmo para venda.

>> Boa sorte.

 
Everlost писал(а) >>

E se você pudesse postar todo o fragmento, que é responsável pela seleção do último pedido e a condição para verificá-lo, nós podemos resolvê-lo. É difícil sugerir algo desta forma. Alternativamente, após a recepção do sinal, simultaneamente com a abertura de uma posição, você pode colocar uma bandeira para proibir os seguintes negócios deste tipo, e no bloco de abertura de posições para verificar a sua presença. Se a bandeira for hasteada - o comércio é pulado. Ao receber um sinal oposto, a bandeira é retirada, mas após a primeira abertura bem sucedida de uma posição, a nova bandeira é colocada - proibindo negócios de abertura desse tipo, para os quais um novo sinal foi recebido. E assim por diante.

Mostrarei um pouco mais tarde, mas me parece que as bandeiras ficariam mais frias. Como colocá-las através do mql4?

Aqui está o meu código:

//Учет ордеров истории
int ORDtype=-1;
double ORDprofit=0.001;
for( i=OrdersHistoryTotal(); i>=0; i--)
{
if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY))
 {
  if(OrderSymbol()==Symbol())
  {
   if(OrderCloseTime()!=0)
   {
     ORDtype=OrderType();
     ORDprofit=OrderProfit();
   }
  }
 }
}    

....

if (( ORDtype==OP_SELL)||( ORDtype==-1)&&(( ORDprofit<=0)||( ORDprofit==0.001))...
{
...
}
if (( ORDtype==OP_BUY)||( ORDtype==-1)&&(( ORDprofit<=0)||( ORDprofit==0.001))...
{
...
}
 

Eu queria fazer com que o especialista não trabalhasse de 6 a 20 no corretor, verificando antes que ele se desligue e esperando até que feche. Tudo está funcionando, mas eu gostaria de poder acrescentar alerta como se a negociação estivesse concluída quando o especialista parasse de negociar.

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
{
if (OrdersTotal() == 0)
Alert("Торговля закончена");
return(0);
}

ele começa a apitar a cada tique. Neste caso, o alerta não será atingido apenas uma vez, mas também o ciclo será interrompido. Por favor, me informe qual o caminho a seguir, não consigo descobrir...

 
Dimoncheg >> :

Eu queria fazer com que o especialista não trabalhasse de 6 a 20 no corretor, verificando antes que ele se desligue e esperando até que feche. Tudo está funcionando, mas eu gostaria de poder acrescentar alerta como se a negociação estivesse concluída quando o especialista parasse de negociar.

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
{
if (OrdersTotal() == 0)
Alert("Торговля закончена");
return(0);
}

ele começa a apitar a cada tique. Neste caso, o alerta não será atingido apenas uma vez, mas também o ciclo será interrompido. Por favor, me informe qual o caminho a seguir, não consigo entender.

Uma das opções:

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
   {
   if (OrdersTotal() == 0)
   if( NeedAlert){ Alert("Торговля закончена"); NeedAlert=false;}
   return(0);
   }
Defina a variável NeedAlert como verdadeira quando você começar a negociar.