Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 400

 
khorosh:


Obrigado, Yuri.
Vou tentar usar seu código, mas mais tarde, pois ele precisa ser desmontado e entender o princípio do trabalho.
O passo acima descrito não é difícil, então terei que desmontar cada função personalizada do Sr. "N", e isto tem o mais alto grau de complexidade, respectivamente, levará muito tempo, de 3 a 10 horas (como dizem: - Um dia -).

Vou finalizar meu código, é "meu habitat" e não há nada para estudar nele.

Mais uma vez, obrigado, Yuri.




borilunad:
1 - Ele não pode fazer nada! 2 - Só quer ser escrito para! 3 - É inútil explicar! 4 - Sem lógica alguma! 5 - Um incorrigível perdedor!

1 - Relativamente, sim.
2 - Ajudou-me a entender a situação.
3 - Não inútil de forma alguma.
4 - Devido ao fato de que você responde - sim.
5 - Terminou o semestre com cinco B's, todas as outras notas - A's.

Você quebrou as regras do fórum, assim como eu quebrei.
Agora sua conta é digna de um aviso, minha conta é digna de uma proibição.

Por favor, desculpem as ações irracionais (respondendo às críticas).
 
Link_x:

Obrigado, Yuri.
Vou tentar usar seu código, mas mais tarde, pois preciso desmontá-lo e entender o princípio de operação.
O passo acima descrito não é difícil, então terei que desmontar cada função personalizada do Sr. "N", e isto tem o mais alto grau de complexidade, respectivamente, levará muito tempo, de 3 a 10 horas (como dizem: - Um dia -).

Vou finalizar meu código, é "meu habitat" e não há nada para estudar nele.

Mais uma vez, obrigado, Yuri.






Você não precisa entrar no código de cada função para começar. Basta entender os parâmetros utilizados na função, sua finalidade e uso. Na verdade, eu mesmo não entrei nas entranhas de cada função. Só me aprofundei nele quando tive que mudá-lo de alguma forma. Quer dizer, você usa com sucesso telefones celulares, computadores e televisores, sem saber seus esquemas exatos e como eles funcionam, mas isso não o impede de usá-los para seus próprios fins. Neste caso, o principal é saber como utilizar estas funções. Todas as funções e suas funções são descritas aqui . Você aprenderá como utilizá-los a partir dos testes, que são dados para cada função. Você se tornará um programador mais rápido se você seguir este caminho. Mas reinventar sua própria bicicleta é um caminho longo e improdutivo. Construir um especialista - de acordo com sua versão - é como construir uma casa sem materiais de construção. Você mesmo tem que inventar tudo. É muito mais rápido construir uma casa quando há blocos de construção (funções).
 

Boa tarde!

Você poderia me informar se a função AccountEquity() faz um pedido ao terminal ou ao corretor?

A pergunta é motivada pela suposição de que chamar esta função a cada tick pode irritar o corretor (especialmente ao executar a EA em vários gráficos ao mesmo tempo) e conseqüentemente bloquear a conta?

 
yan720:

Boa tarde!

Você pode me dizer, a função AccountEquity() faz um pedido ao terminal ou ao corretor?

A pergunta é causada pela suposição de que a chamada desta função em cada carrapato pode irritar o corretor (especialmente ao executar a EA em vários gráficos simultaneamente) e conseqüentemente bloquear a conta?


Sim para o corretor, é claro))))

O terminal não se importa.... Dar-lhe-á os últimos dados conhecidos...

 
vadynik:
A questão é se devemosou não passar a Magia para a função.

Isto pode ser compreendido se você souber para que serve o feiticeiro. É necessário que a EA consiga distinguir suas próprias ordens das ordens de outra EA ou das ordens abertas manualmente. Se você tiver várias ordens de compra e houver diferentes mágicos ou ordens manuais (sem um mágico) entre eles, o mágico é necessário para a função. Em geral, seria melhor definir um magik como parâmetro para que uma função universalize suas funções. Por exemplo, deve ser ajustado para -1 por padrão.

double BuystopPrice(int Magic = -1)
{
double Price=0;
  for (int i=OrdersTotal()-1; i>=0; i--) 
     {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
          if(OrderMagicNumber()==Magic && OrderType()==OP_BUYSTOP)
          {
           Price = OrderOpenPrice();
          break;
          }
        }
     }
    return(Price);
}

Na verdade, uma vez que o código de sua função determina o preço de fixação da primeira ordem de compra-parada apenas no loop, o loop em si não é, em princípio, necessário.

 
khorosh:
Não é necessário entrar no código de cada função para começar. Basta entender os parâmetros que são utilizados na função, sua finalidade e uso. Na verdade, eu mesmo não entrei nas entranhas de cada função. Só me aprofundei nele quando tive que mudá-lo de alguma forma. Acredito que você usa com sucesso telefones celulares, computadores e televisores, sem conhecer seus esquemas exatos e como eles funcionam, mas isso não o impede de usá-los para seus próprios fins. Neste caso, o principal é saber como utilizar estas funções. Todas as funções e suas funções são descritas aqui . Você aprenderá como utilizá-los a partir dos testes, que são dados para cada função. Você se tornará um programador mais rápido se você seguir este caminho. Mas reinventar sua própria bicicleta é um caminho longo e improdutivo. Construir um especialista - de acordo com sua versão - é como construir uma casa sem materiais de construção. Você mesmo tem que inventar tudo. É muito mais rápido construir uma casa quando há blocos de construção (funções).


Você é um homem sábio, capaz de explicar e mudar de idéia, se necessário. :)
Dito isto, agradeço-lhe novamente.

Nesse caso, deixo a construção de uma casa com organóides de células eucarióticas e uso materiais de construção comuns para sua construção.
 

Por favor, verifique duas funções para detectar erros nelas.

A essência do primeiro: deve calcular um lote necessário para sair do sorteio após fechar uma grade de ordens (aberta na margem), se o preço passar um certo número de pontos (TP-points) na direção certa.

A essência da segunda: deve fechar a metade das ordens da grade, começando pela mais antiga.

double FindRightLot (int otype) // функция поиска лота, необходимого для выхода из просадки после 
                               //закрытия сетки ордеров
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble ((OrderOpenPrice()-Bid)*OrderLots()/TP,2); 
           if (Lot>0)
           {
              TotalLot= NormalizeDouble (TotalLot+Lot,2);
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble ((Ask-OrderOpenPrice())*OrderLots()/TP,2);
           if (Lot>0)
           {
            TotalLot= NormalizeDouble (TotalLot+Lot,2);
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }
//+------------------------------------------------------------------+

void CloseHalfOrders (int otype)// ф-ция закрытия половины ордеров сетки
{
  int count = 0;
  for (int i = 0; i<= OrdersTotal(); i++)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         { 
           if (count<CountTrades(OP_BUY)/2 && CountTrades(OP_BUY)>3 )
           
             OrderClose(OrderTicket(),OrderLots(),Bid,0,Black);
             count++;
           
         }
       
       
         else if (otype == OP_SELL)
         {
           if (count<CountTrades(OP_SELL)/2 && CountTrades(OP_SELL)>3)
           
           OrderClose(OrderTicket(),OrderLots(),Ask,0,Black);
           count++;
           
         }
       }
     }
   }
   
 }
 
Pessoal, vocês não podem fazer isso... Podem ir direto para a MQL5, mas toda a POSIÇÃO está aberta lá....
 
yan720:


Você pode me dizer se AccountEquity() consulta o terminal ou o corretor?

para o terminal
 
vadynik:


Eu posso não estar perguntando exatamente, quero dizer se a função verá um magik que é definido em uma variável global

ou deveria ser passado para uma função, embora eu suspeite que não deveria, já que é global

Se estiver em uma variável global, sim, estará. Mas a função deve ter versatilidade e funcionar com mais de um assistente, e para isso é melhor passá-la como um parâmetro de função.