[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 572

 
eu fiz bem? NumberOfPositions(Symbol(),OP_BUY,Magic); é este o número de posições de compra abertas?
 
Frostr:
Eu acertei? NumberOfPositions(Symbol(),OP_BUY,Magic); é quantas posições de compra abertas?


Seu Expert Advisor não define as condições de abertura, apenas abre na direção que você especificou (variáveis COMPRAR e VENDER). Você pode adicionar uma condição para verificar se o último negócio foi fechado com lucro ou prejuízo neste EA ou no seu. Mas, na minha opinião, ela já lida com sua tarefa - ela mostra mais claramente a inutilidade desta estratégia. Na verdade, não precisamos nem mesmo de um Expert Advisor para isso, ele pode ser calculado em meia hora sobre o histórico, mesmo sem uma calculadora. Se Stop Loss é igual a Take Profit, o prejuízo é igual a spread multiplicado pelo número de negócios, em todos os outros casos - spread mais a metade da diferença entre Stop Loss e Take Profit.

P.S. Em geral, embora o código de coruja seja diferente, ele faz exatamente o que sua EA fará, se você acrescentar a ele a condição que você deseja. Isto é, se o preço mudou e foi na outra direção, ele abrirá dois negócios opostos em cada fechamento. Foi mais fácil para mim remover todas as coisas "desnecessárias" do código que não estão relacionadas com a tarefa em questão.

P.P.S.Você acertou sobreNumberOfPositions(Symbol(),OP_BUY,Magic).

 
gheka:
quais correios podem enviar mensagens sobre o correio recebido e seu conteúdo?

por exemplo, correio.ru
 
rigonich:

Seu Expert Advisor não tem condições de abertura, ele apenas abre na direção que você definir (as variáveis BUY e SELL). Você pode adicionar uma condição para verificar se o último negócio foi fechado com lucro ou prejuízo neste EA ou no seu. Mas, em minha opinião, ela já lida com sua tarefa - ela mostra mais claramente a inutilidade desta estratégia. Na verdade, não precisamos nem mesmo de um consultor especializado para isso, ele pode ser calculado em meia hora sobre o histórico, mesmo sem uma calculadora. Assim que você adicionar sua condição a qualquer Expert Advisor (abrindo duas negociações opostas e fechando somente por Stop Loss ou Take Profit), o valor da perda se torna fixo e depende somente do número de negociações.



Não sei porque o número de posições em aberto depende disso. Não posso ajustá-lo(!

A única maneira de reduzir o número de posições abertas é aumentar o lote. Se você definir o lote para o máximo, então ele abrirá 1-3 posições de uma vez

Se você definir o lote para um mínimo, ele abrirá 500-1500 posições de cada vez

 
Frostr:



Por alguma razão eu abro 500-800 posições de uma vez ao testar a EA, não entendo porque o número de posições em aberto depende disso e não posso ajustá-lo(!

A única maneira de reduzir o número de posições abertas é aumentar o lote. Se você definir o lote para o máximo, então ele abrirá 1-3 posições de uma vez

Se você definir o lote para um mínimo, ele abrirá 500-1500 posições de cada vez

1. Apenas um número limitado de pedidos pode ser aberto de cada vez.

2. Se o lote for aumentado significativamente, posições adicionais não poderão ser abertas devido à falta de fundos.

 
Frostr:



Meu consultor especializado, que você me deu durante os testes, por alguma razão eu abro 500-800 posições de uma vez, não entendo o que determina o número de posições em aberto e não posso ajustar(

A única maneira de reduzir o número de posições abertas é aumentar o lote, se você definir o lote ao máximo, então ele abrirá 1-3 posições de cada vez.

Se você ajustar o lote para um mínimo de 500-1500 posições de cada vez

Arquivos anexados:
 
rigonich:


 

Eu escrevi algo parecido com um trailing para minha EA, mas não funciona, dependendo do que eu tento mudar para que funcione, gera erro 1 ao modificar, ou simplesmente não vai além da primeira impressão ("Leading Buy position"; )... qual poderia ser a razão, eu ficaria feliz em ouvir qualquer sugestão, obrigado de antemão!

bool TrailingStop()
   {
   int MD0=MarketInfo(Symbol(),MODE_STOPLEVEL);
   if ((OrderMagicNumber()==11111)==true)
      {
      Print("Ведём позицию Buy");
      while(OrderCloseTime()==0)
         {
         if ((NormalizeDouble(Bid-OrderStopLoss()+StepStop*Point,Digits)>NormalizeDouble(StopLevel*Point,Digits))&&(NormalizeDouble(MD0,Digits)<NormalizeDouble(StopLevel*Point,Digits)))
               {
               RefreshRates();
               Print("текущий бид-",Bid,", текущий стоп-",OrderStopLoss(),", текуйщий тейк-",OrderTakeProfit(),", цена открытия-",OrderOpenPrice(),", расстояние от текущего стопа до текущего бида-",NormalizeDouble(Bid-OrderStopLoss(),Digits),", новый стоп-",NormalizeDouble(Bid-StopLevel*Point,Digits));
               if (OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-StopLevel*Point,Digits),OrderTakeProfit(),0)==true)
                  Print("Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", успешно изменён на ",OrderStopLoss());
               else Print("Не удалось переместить уровень Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),". Ошибка ",GetLastError());
               }
         Sleep(1000);
         }
      if (OrderCloseTime()>0)
         {
         Print("Ордер с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", закрыт по цене ",OrderClosePrice(),", с прибылью/убытком ",OrderProfit());
         return(true);
         }
      }
   else
      {
      if ((OrderMagicNumber()==22222)==true)
         {
         Print("Ведём позицию Sell");
         while(OrderCloseTime()==0)
            {
            if ((NormalizeDouble(OrderStopLoss()+StepStop*Point-Ask,Digits)>NormalizeDouble(StopLevel*Point,Digits))&&(NormalizeDouble(MD0,Digits)<NormalizeDouble(StopLevel*Point,Digits)))
               {
               RefreshRates();
               Print("текущий бид-",Ask,", текущий стоп-",OrderStopLoss(),", текуйщий тейк-",OrderTakeProfit(),", цена открытия-",OrderOpenPrice(),", расстояние от текущего стопа до текущего бида-",NormalizeDouble(OrderStopLoss()-Ask,Digits),", новый стоп-",NormalizeDouble(Ask+StopLevel*Point,Digits));
               if (OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+StopLevel*Point,Digits),OrderTakeProfit(),0)==true)
                  Print("Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", успешно изменён на ",OrderStopLoss());
               else Print("Не удалось переместить уровень Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),". Ошибка ",GetLastError());
               }
            Sleep(1000);
            }
         if (OrderCloseTime()>0)
            {
            Print("Ордер с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", закрыт по цене ",OrderClosePrice(),", с прибылью/убытком ",OrderProfit());
            return(true);
            }
         }
      else return(false);
      }
   }
 
Ekburg:

Eu escrevi algo parecido com um trailing para minha EA, mas não funciona, dependendo do que eu tento mudar para que funcione, gera erro 1 ao modificar, ou simplesmente não vai além da primeira impressão ("Leading Buy position"; )... qual poderia ser a razão, eu ficaria feliz em ouvir qualquer sugestão, obrigado de antemão!


Sua condiçãoenquanto(OrderCloseTime()==0). Se você entrar neste laço, as tentativas de modificação serão repetidas até que o pedido seja fechado ou até que o operador se encontre ou devolva, o que você não tem no laço.

Desculpe, estragou tudo. Eles estão lá, mas eu não os notei imediatamente sem óculos. Removido o suporte supérfluo e acrescentado o resultado. Experimente, pode funcionar.

Arquivos anexados:
0101.mq4  3 kb
 
Ekburg:

Eu escrevi algo parecido com um trailing para minha EA, mas não funciona, dependendo do que eu tento mudar para que funcione, gera erro 1 ao modificar, ou simplesmente não vai além da primeira impressão ("Leading Buy position"; )... qual poderia ser a razão, eu ficaria feliz em ouvir qualquer sugestão, obrigado de antemão!

Por uma questão de interesse me diga como se comporta ESTE - "algo parecido com um trilho" na EA??? Meu palpite é que o código deve congelar. E o que realmente acontece? Abre mais de um pedido????
Razão: