Concurso EA sobre contas reais - página 17

 

Agora eu olhei para o histórico da conta e descobri. Que a função de fechar posições após atingir o lucro especificado na conta real praticamente não funciona! Embora funcione corretamente no testador.

Isto é, na maioria dos casos as posições lucrativas são fechadas na Ticrofit que equivale a 15 pips - o nível mínimo de parada permitido.

Mas este consultor especializado da Pipswise foi otimizado para fechar +11 em EURCHF e +8 em EURGBP!

Tal diferença (especialmente 15 e 8) é muito sensível para um Expert Advisor de escalpe!

Ainda não sei por que isso aconteceu tão.... Eu assumi uma função pronta de outro projeto (alienígena).

Eu o penteei e o melhorei (para o eurofranco a função se parece com isto):

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
//Функция дает команду на  закрытие  позиции при достижении профита , 
//задаваемого  параметром CloseProfit. Для корректной работы 
//этой функции необходимо наличие вспомогателной функции del(int ticket)
void CloseProfit()                                                    {
    if (OrdersTotal() > 0)                                            {
      for (int q = OrdersTotal() + 1; q >= 0; q--)                    {
         if (OrderSelect( q, SELECT_BY_POS, MODE_TRADES))              {
            if (OrderSymbol() == "EURCHF")                            {
               if (OrderMagicNumber() == Magic)                       {
                  if (OrderCloseTime() == 0)                          {
                     if (OrderType() == OP_BUY)                       {
                        RefreshRates();
                        if (Bid > OrderOpenPrice() + CloseProfit* Point) {
                           Print("ClosePozishion"); del(OrderTicket());
                        } }
                     if (OrderType() == OP_SELL)                         {
                        RefreshRates();
                        if (Ask < OrderOpenPrice() - CloseProfit* Point) {
                           Print("ClosePozishion"); del(OrderTicket());
                        }}}}}}}}}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
//Функция реализует закрытие позиций по текущей цене
void del(int ticket) {
   int Error;
   double _bid;
   for (int w = 0; w < 1; w++) {
      GetLastError();
      OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES);
      if (OrderType() == OP_BUY) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_BID);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if (OrderType() == OP_SELL) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_ASK);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if ( Error == 0) {  PlaySound("expert.wav");  return; }//при  нормальном закрытии  
      //  позиции, - даем сигнал "expert.wav"
      if ( Error != 0) {// если произошла ошибка закрытия - сигнал и печать .
         PlaySound("timeout.wav");
         Print("Error for Close Funtion =", Error);
      }
      while (!IsTradeAllowed()) Sleep(5000);//если торг. поток занят, - ждем 5 сек
      if ( Error == 146) while (IsTradeContextBusy()) Sleep(10000);
      //если нет соединения с сервером, ждем - 10 сек
   }
}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
 

Será que ele dá erros?

este projeto pode ser simplificado

      if (OrderType() == OP_BUY) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_BID);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if (OrderType() == OP_SELL) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_ASK);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }

como este

RefreshRates();
if (!OrderClose( ticket, OrderLots(),OrderClosePrice(), 3, Green)) Error = GetLastError();
 
keekkenen писал(а) >>

Será que ele dá erros?

este projeto pode ser simplificado

assim.

Eu não posso dizer nada sobre erros. Eu só tenho a senha de investimento desta conta.

Mas erros acontecem com muita freqüência em minha conta real com esta empresa de corretagem. Recebo um sinal sonoro de erros no código e ouço este sinal com bastante frequência! A princípio, há um sinal de erro de fechamento. E muitas vezes depois de mais um ou dois minutos há um sinal de "Take Profit". Em outras palavras, a função de fechamento funciona incorretamente e o preço quebra até o nível de tomada de lucro passando o nível de fechamento definido!

Quanto à simplificação do projeto, ela pode ser simplificada, mas é mais clara para mim quando tudo é descrito em detalhes.

 

Você escreveu: Este Pips Expert Advisor está otimizado para fechar +11 no EURCHF e +8 no EURGBP!

Tudo é fácil de explicar. Você abre uma posição longa e espera que a condição acione os 15 pips legais

if (OrderType() == OP_BUY){
	RefreshRates();
    if (Bid > OrderOpenPrice() + CloseProfit* Point) {
		Print("ClosePozishion"); del(OrderTicket());
    }
}

Mas não estava lá. Você compra no Bid e fecha no Bid, assim você perde o spread (4 pips), então você tem que colocar Ask ao invés de Bid no Ifa,

para conseguir seus 15 pips...


e também, o acima é algo pouco claro... se o takeprofit é de 15 pips, por que fechar mais cedo?

 
keekkenen писал(а) >>

Você escreveu: Este Pips Expert Advisor está otimizado para fechar +11 no EURCHF e +8 no EURGBP!

Tudo é simples, você abre uma posição longa e espera que a condição acione os 15 pips legais

Mas não estava lá. Você compra no Bid e fecha no Bid, assim você perde o spread (4 pips), então você tem que colocar Ask ao invés de Bid no Ifa,

para conseguir seus 15 pips...

Se o takeprofit é de 15 pips, por que eu deveria fechar mais cedo?

Não exatamente. Quero fechar a posição depois de atingir +11 pips de lucro. Enquanto o lucro é de +15 (porque é impossível colocá-lo mais próximo - o nível de parada em DC é permitido = 15).

Por que você acha que eu comprei em oferta? Eu estava comprando em asc.

Mas posições longas são fechadas com a venda ? - Não é?

e é por isso que se licita a taxa electrónica...

Mas mesmo que eu perca o tamanho do spread em sua opinião, este fato não explica a divergência de resultados entre o real e o testador!

Quase 500$ divergência para o pior com lote =0,1 em 10 dias com 200 negócios.

 
leonid553 >> :

Mas mesmo que eu perca o tamanho do spread de acordo com você, este fato não explica a diferença de resultados entre o real e o testador!

>> Uh-huh. Há também o nível de Congelamento, talvez seja esse o problema.
 
TheXpert писал(а) >>

Quase um terço dos negócios está faltando no real, o que pode ser um lucro perdido. Ou talvez falte algo. Me avise e nós o descobriremos.

Já resolvi o número de acordos. Agora eu executei o Expert Advisor no testador com a opção de modelagem de requotes habilitada. A quantidade de negócios no testador e na conta real foi quase a mesma (dentro de limites razoáveis).

Ou seja, a culpa é das solicitações. Eles reduzem fortemente o número de negócios e muitos negócios lucrativos devem ter sido cortados na conta real.

Mas tudo o mesmo - isso não explica todas as diferenças entre o teste e os resultados reais.

//-------------------------------------------------------------------

Então, meu consultor especialista parece ter "trabalhado" e se tornado um dos líderes...

http://acompetition.love-craft.ru/?q=ru

 
TheXpert писал(а) >>
Há também o nível de Congelamento, talvez o problema esteja nele.

Se entendi corretamente, este conceito inclui um limite no número de posições abertas ao mesmo tempo e um limite no tamanho do lote.

Eu não acho que este fator seja relevante.

De acordo com o algoritmo do Expert Advisor, não pode haver mais que uma posição no mercado para um par de cada vez.

O lote é fixo por enquanto. (0.1)

 
leonid553 >> :

Se entendi corretamente, este conceito inclui um limite no número de posições em aberto e um limite no tamanho do lote.

Não - é um nível mais próximo do que o que não se pode modificar os pedidos, assim como as tomadas e os lotes.

 
Obrigado pelo esclarecimento. Irei ao site da DC para esclarecer a questão.
Razão: