[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 462

 
tol64:


Obrigado. É muito claro. Qualquer um pode entender se você explicar dessa forma)).

Uma pergunta a mais. Encontrei muitas versões semelhantes da pergunta na busca, mas minha pergunta será um pouco diferente)).

Discrepância nos gráficos. A fim de ver um resultado "confiável ???" tenho que recalcular constantemente os prazos. Isto é, se eu vejo que há erros no registro, vou citar o arquivo e recalculo todos os prazos. No testador, por exemplo, eu faço um teste em pontos de controle. Tudo está bem. Então eu, por exemplo, formo barras. Tudo está bem. Mas se fizermos novamente um teste usando pontos de controle, verei novamente uma discrepância entre os gráficos no diário. O que é isso? ))) Há algo contra este flagelo?


IMHO, use apenas dois modelos de testes - "Todos os carrapatos..." ou " Abrindo preços..." (para isso é preciso organizar o controle para a formação de uma nova barra) - estes são cortes "confiáveis" - e não incomodam... :-))) "Pontos de controle" - não vale a pena.

Basta baixar o histórico minuto para o instrumento que você quer e vá em frente... :-)))

 
Roman.:


IMHO, use apenas dois modelos de teste - ou "Todos os carrapatos..." ou "Abrindo preços..." (para isto no quadro você precisa organizar o controle da formação de novos bares) - estes são cortes "confiáveis" - e não se preocupe... :-))) "Pontos de controle" - não vale a pena.

Basta baixar o histórico minuto para o instrumento que você quer e vá em frente... :-)))


Meu elo está quebrado...

Em minha abordagem, se você usar "Todos os carrapatos", você terá que esperar para sempre). Estou testando em 10 anos de história. Na EA, as condições e o trajeto são construídos sobre as barras formadas. Mas há algumas condições que devem ser verificadas em cada tic tac. Por exemplo, se uma parada de perda foi acionada e o sistema de gerenciamento de dinheiro mudou o tamanho do lote, você deve redefinir todas as ordens pendentes a fim de mudar o tamanho do lote. Ou simplesmente apagar as ordens pendentes, se isso for exigido pelas condições. Tudo deve estar claro para ser válido)). É por isso que os pontos de controle são, em princípio, suficientes para mim, já que eu estava comparando alguns pedaços de história com todos os carrapatos. Uma e a mesma coisa.

Então o que existe para ajudar a resolver e eliminar esses erros? Porque o elo está quebrado)).

 
tol64:


O elo está quebrado...

Em minha abordagem, se você usar "Todos os carrapatos", você terá que esperar para sempre). Estou testando em 10 anos de história. Nas condições da EA e do trilho são construídas sobre barras formadas. Mas há algumas condições que devem ser verificadas em cada tic tac. Por exemplo, se uma parada de perda foi acionada e o sistema de gerenciamento de dinheiro mudou o tamanho do lote, você deve redefinir todas as ordens pendentes a fim de mudar o tamanho do lote. Ou simplesmente apagar as ordens pendentes, se isso for exigido pelas condições. Tudo deve estar claro para ser válido)). É por isso que os pontos de controle são, em princípio, suficientes para mim, já que eu estava comparando alguns pedaços de história com todos os carrapatos. Uma e a mesma coisa.

Então o que existe para ajudar a resolver e eliminar esses erros? Porque o link está quebrado))


Re-downloaded

e aqui.

 

Boa tarde, cavalheiros.

Ajude-me a entender o código. Entendo a lógica, mas não sei como descrevê-la corretamente. Eu não sei como descrevê-lo corretamente.

Aqui está uma peça do Consultor Especialista.

total=OrdersTotal();
if(total<1)

{

while (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2) //Пока это условие выполняется открывать только селл при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)<0.7))
{

OrderSend(Symbol(), OP_SELL, lots, NormalizeDouble(Bid, Digits), 3, /*Ask+10*Point*/0, /*Bid-10*Point*/0, "ADX sell", magic, 0, CLR_NONE);
}

while (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>=2) // Пока это условие выполняется открывать только Бай при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)<0.3)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)>0.3))
OrderSend(Symbol(), OP_BUY, lots, NormalizeDouble(Ask, Digits), 3, /*Bid-10*Point*/0, /*Ask+10*Point*/0, "ADX buy", magic, 0, CLR_NONE);

}
}
}
}

Por favor, me aconselhe como lidar com isso corretamente. Cumprimentos ao Denis.

 
Roman.:


Relançado

e aqui.


Obrigado. Estes links, e mais, não dizem a coisa mais importante que eu precisava saber.

Quando as citações chegam ao terminal on-line, os prazos precisam ser recalculados de tempos em tempos para que não haja desalinhamentos.

No modo off-line, não há tais problemas). Este é o primeiro.

Agora o segundo.

for(pos = 0; pos < OrdersHistoryTotal(); pos++)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

Se eu fizer isso, a escrita no arquivo vai sem erros. Ou seja, no arquivo, tudo parece conforme o pretendido. Se eu o fizer da maneira que você afirmou com confiança:

for(pos = 0; pos < OrdersHistoryTotal()-1; pos++)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

então o arquivo não é escrito corretamente. Posso ver que existem casos individuais)).

 
Adiado.
smartemiy:

Boa tarde, meus queridos.

Eu preciso de sua ajuda especializada!!!

Como especificar no Expert Advisor que ele deve parar de negociar se o saque do saldo já for de 20%, e que este número pode ser alterado ?

Desculpe, talvez já tenha sido explicado no fórum, talvez eu não tenha notado...

AGRADEÇO ANTECIPADAMENTE!

Boa sorte no comércio !!!!!

 
granit77:
Adiado.


Por exemplo, assim...

extern int MaxLoss = 90;          // Максимально допустимая просадка в процентах от баланса

...     

static datetime prevtime = 0;       // по ценам открытия
bool IsExpertFailed = false;
bool IsExpertStopped = false;

      

//+------------------------------------------------------------------+
//| Старт робота                                                     |
//+------------------------------------------------------------------+

int init()
{
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся 

   IsExpertStopped = false;
   if (!IsTradeAllowed())
   {
      Comment("Необходимо разрешить советнику торговать");
      IsExpertStopped = true;
      return (0);
   }
      
   if (!IsTesting())
   {
      if (IsExpertEnabled())
      {
         Comment("Советник запустится следующим тиком");
      }
      else 
      {
         Comment("Отжата кнопка \"Разрешить запуск советников\"");
      }
   }
 return (0);
}
  
//+------------------------------------------------------------------+
//| Завершение работы робота                                         |
//+------------------------------------------------------------------+

int deinit()
{
   return (0);
}
  
//+------------------------------------------------------------------+
//| Обработка сигнала                                                |
//+------------------------------------------------------------------+
  
int start()    // -----------------------СТАРТ ЭКСПЕРТА--------------- 
{
  
 
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся 

   if (IsExpertStopped)
   {
      Comment("Не удалось инициализировать советник!");
      return (0);
   }
   
   if (IsExpertFailed)
   {
      Comment("Критическая ошибка! Советник остановлен.");
      return (0);
   }
   
         
   // ------------------------------------------------Ищем наш ордер---------------------------------

   int orderType;
   for (int orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
   {
      if (!OrderSelect(orderIndex, SELECT_BY_POS))
      {
         continue;
      }

      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))
      {
         continue;
      }

      orderType = OrderType();
      if ((orderType != OP_BUY) && (orderType != OP_SELL))
      {
         continue;
      }
          ticket = OrderTicket( );                         // Номер ордера
          orderLots = OrderLots();                         // Lots   
          orderProfit = OrderProfit() + OrderSwap();       // Profit
          Price = OrderOpenPrice();                        // Цена открытия рыночного ордера
          SL =  OrderStopLoss();                           // Значение StopLoss ордера
          TP = OrderTakeProfit();                          // Значение TakeProfit ордера
          
             if (ticket>0)                                               // Если позиция открылась
                    {
                             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep(100);
                                 }
                                  double OpenPrice=OrderOpenPrice();
      
                              
                                  
                           if (orderType == OP_BUY) 
                              {
      
                               }
            
                            if (orderType == OP_SELL) 
                                 {
       
                                 }   
                            
                    }

      // Проверка на предельную просадку
      
      double loss = - ((orderProfit * 100.0) / AccountBalance());
      if (loss > MaxLoss)
      {
         Print ("MaxLoss");
         CloseAllOrders(MagicNumber);
         IsExpertFailed = true;
         return (0);
      }
    
              
       
}
   
 
Por favor, lembre-me como definir o atraso. Acho que você pode fazer isso em milissegundos. Eu esqueço sempre como soletrar.
 
E qualquer um pode sugerir um roteiro que feche todas as posições rapidamente. Não consigo encontrá-lo. Eu gostaria de ver o código.
 
FOReignEXchange:
E qualquer um pode sugerir um roteiro que feche todas as posições rapidamente. Não consigo encontrá-lo. Eu gostaria de ver o código.
Uma busca medirá cinqüenta mil.