Erros, bugs, perguntas - página 2734

 
Os testes têm de ser feitos correctamente e com muito cuidado.

Mais reprodutíveis. Além disso, está fora de questão correr a dll de outra pessoa sem a compilar você mesmo a partir da fonte.
 

Boa tarde a todos, gostaria de perguntar sobre o seguinte

Sou um principiante, talvez alguém me possa explicar

Abri uma conta de demonstração com diferentes comerciantes, não só na Rússia, mas encontrei um problema: não posso colocar lotes no mercado, ou seja, posso, mas apenas ao preço do mercado! Só posso colocar lotes ao preço de mercado!

Provavelmente, não sei de nada!

Posso ir a qualquer lugar através do mercado e eles aceitam a minha encomenda de qualquer maneira. Mas não posso fazer isso nos terminais forex, só posso comprar ao preço do mercado com um spread enorme!

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
, то позиции по каждому символу разрешается закрывать только в том порядке, в котором они были открыты — сначала самую старую, затем более новую и т.д. При попытке закрыть позиции в ином порядке будет получена ошибка. Уровень залоговых средств, при достижении которого происходит принудительное закрытие самой убыточной позиции (Stop Out...
 
o website não está a funcionar
 
Vladimir Pastushak:
o psc do website não funciona
.
 
Alexey Viktorov:
.

Está a funcionar agora.

 
Renat Fatkhullin:
Os testes têm de ser feitos correctamente e com muito cuidado.

não foram planeados testes, apenas uma avaliação da capacidade

OK, vamos considerar que, desta forma florida, você recusou, eu ofereci as fontes VS acima

 

Boa tarde!

Função de arrastamento.

Pode dizer-me o que há de errado, recebo 4756 erros no testador de estratégia. Executando-o no guião, funciona.

int Tralling(int PointsTral=200)
  {
   MqlTradeRequest Request;
   MqlTradeResult Result;
   int PosTot, i, digits;
   string Symbols[]= {""};
   double SymbPt,sl,tp,
          PriceOpen[]= {0};
   i=0;
   PosTot= PositionsTotal();
   if(PosTot>0)
     {
      while(i<PosTot)
        {
         Symbols[i] = PositionGetSymbol(i);
         digits=(int)SymbolInfoInteger(Symbols[i],SYMBOL_DIGITS);
         if(PositionSelect(Symbols[i]))
           {
            PriceOpen[i] = PositionGetDouble(POSITION_PRICE_OPEN);
            SymbPt = SymbolInfoDouble(Symbols[i],SYMBOL_POINT);
            if(PositionGetInteger(POSITION_TYPE) == 0)
              {
               if(SymbolInfoDouble(Symbols[i],SYMBOL_BID) >= PriceOpen[i]+(SymbPt*PointsTral))
                 {
                  if(SymbolInfoDouble(Symbols[i],SYMBOL_BID)>PositionGetDouble(POSITION_SL)+(SymbPt*PointsTral))
                    {
                     sl=SymbolInfoDouble(Symbols[i],SYMBOL_BID)-(SymbPt*PointsTral);
                     tp=PositionGetDouble(POSITION_TP);
                     Request.action=TRADE_ACTION_SLTP;
                     Request.symbol = Symbols[i];
                     Request.sl=NormalizeDouble(sl,digits);
                     Request.tp=NormalizeDouble(tp,digits);
                     Request.position=PositionGetInteger(POSITION_TICKET);
                     if(!OrderSend(Request,Result))
                        Alert("Ошибка Треллинга ",GetLastError());
                    }
                 }
              }

            if(PositionGetInteger(POSITION_TYPE) == 1)
              {
               if(SymbolInfoDouble(Symbols[i],SYMBOL_ASK) <= PriceOpen[i]-(SymbPt*PointsTral))
                 {
                  if(SymbolInfoDouble(Symbols[i],SYMBOL_ASK)<PositionGetDouble(POSITION_SL)-(SymbPt*PointsTral))
                    {
                     sl=SymbolInfoDouble(Symbols[i],SYMBOL_ASK)+(SymbPt*PointsTral);
                     tp=PositionGetDouble(POSITION_TP);
                     Request.action=TRADE_ACTION_SLTP;
                     Request.symbol = Symbols[i];
                     Request.sl=NormalizeDouble(sl,digits);
                     Request.tp=NormalizeDouble(tp,digits);
                     Request.position=PositionGetInteger(POSITION_TICKET);
                     if(!OrderSend(Request,Result))
                        Alert("Ошибка Треллинга ",GetLastError());
                    }
                 }
              }

           }
         else
           {
            Alert("Не удалось выделить оредер по символу. ", Symbols[i], " Ошибка ", GetLastError());
           }
         i++;
        }
     }
   return (1);
  }

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Тикет позиции. Уникальное число, которое присваивается каждой вновь открытой позиции. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Для нахождения ордера, которым была открыта...
 

Boa tarde!

Não consigo encontrar o erro. É uma paragem da Tralling. Se o atirar para a tabela com o guião, funciona. No testador de estratégia, devolve o erro 4756 (Não pode ser enviado para o servidor)

Por favor, ajudem-me!

int Tralling(int PointsTral=200)
  {
   MqlTradeRequest Reques;
   MqlTradeResult Result;
   int PosTot, i, digits;
   string Symbols;
   double SymbPt,sl,tp,
          PriceOpen;
   i=0;
   PosTot= PositionsTotal();
   if(PosTot>0)
     {
      while(i<PosTot)
        {
         Symbols = PositionGetSymbol(i);
         digits=(int)SymbolInfoInteger(Symbols,SYMBOL_DIGITS);
         if(PositionSelect(Symbols))
           {
            PriceOpen = PositionGetDouble(POSITION_PRICE_OPEN);
            SymbPt = SymbolInfoDouble(Symbols,SYMBOL_POINT);
            if(PositionGetInteger(POSITION_TYPE) == 0)
              {
               if(SymbolInfoDouble(Symbols,SYMBOL_BID) >= PriceOpen+(SymbPt*PointsTral))
                 {
                  if(SymbolInfoDouble(Symbols,SYMBOL_BID)>PositionGetDouble(POSITION_SL)+(SymbPt*PointsTral))
                    {
                     sl=SymbolInfoDouble(Symbols,SYMBOL_BID)-(SymbPt*PointsTral);
                     tp=PositionGetDouble(POSITION_TP);
                     Reques.action=TRADE_ACTION_SLTP;
                     Reques.symbol = Symbols;
                     Reques.position=PositionGetInteger(POSITION_TICKET);
                     Reques.sl=NormalizeDouble(sl,digits);
                     Reques.tp=NormalizeDouble(tp,digits);
                     if(!OrderSend(Reques,Result))
                        Alert("Ошибка Треллинга ",GetLastError());
                    }
                 }
              }

            if(PositionGetInteger(POSITION_TYPE) == 1)
              {
               if(SymbolInfoDouble(Symbols,SYMBOL_ASK) <= PriceOpen-(SymbPt*PointsTral))
                 {
                  if(SymbolInfoDouble(Symbols,SYMBOL_ASK)<PositionGetDouble(POSITION_SL)-(SymbPt*PointsTral))
                    {
                     sl=SymbolInfoDouble(Symbols,SYMBOL_ASK)+(SymbPt*PointsTral);
                     tp=PositionGetDouble(POSITION_TP);
                     Reques.action=TRADE_ACTION_SLTP;
                     Reques.symbol = Symbols;
                     Reques.position=PositionGetInteger(POSITION_TICKET);
                     Reques.sl=NormalizeDouble(sl,digits);
                     Reques.tp=NormalizeDouble(tp,digits);
                     if(!OrderSend(Reques,Result))
                        Alert("Ошибка Треллинга ",GetLastError());
                    }
                 }
              }

           }
         else
           {
            Alert("Не удалось выделить оредер по символу. ", Symbols[i], " Ошибка ", GetLastError());
           }
         i++;
        }
     }

   return (1);
  }
 
Igor Makanu:

não foram planeados testes, apenas para avaliar as capacidades

OK, vamos considerar que, desta forma florida, você recusou, eu ofereci as fontes VS acima

Fez uma reclamação excepcional e não a conseguiu provar. Também não é a primeira vez que se afixa um dll, o que é proibido.

Não vejo o código fonte para reprodução.

 
Renat Fatkhullin:

Fez uma reclamação excepcional e não a conseguiu provar. Além disso, esta não é a primeira vez que publica uma dll, o que é proibido.

Não vejo o código fonte para reprodução.

O que mostra a exclusividade da declaração? Tudo o que vejo é que a medição do desempenho do antigo terminal deu muito bons resultados, imho, como se costuma dizer - uma coisa boa feita para as idades.

Verifiquei-o hoje no PC e obtive os mesmos resultados do MT4/MT5, verifiquei-o novamente no portátil, também não vi qualquer diferença, a elevada probabilidade de que no fundo de algum serviço Win10 "mastigou a unidade", não configurei o tempo de execução no portátil, Win configurou o tempo nocturno por defeito.

À noite ainda havia o desejo de compreender qual era a diferença, hoje num princípio - deixar funcionar, não vejo que o código fonte não faça sentido fazer comentários ou cortar partes para começar a esclarecer a situação ou a discussão, não o quero fazer.


Dos insectos da nova construção:

não é informação correcta no registo terminal:

2020.05.06 19:03:03.895 Terminal Windows 10 build 18363, Intel Core i3 M 380 @ 2.53GHz, 0 / 2 Gb memória, 149 / 237 Gb disco, IE 11, UAC, GMT+4

Ganhe gratuitamente 920 MB de 2,97 GB em gestor de tarefas, as construções anteriores tinham mais informações correctas do sistema