Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 583

 

Olá, me ajude aqui. O robô comercial, EA, Expert Advisor não está funcionando. Eu baixei tudo o que era possível e queria verificar como tudo funciona. Achei meu depósito muito pequeno, mas minha conta demo é a mesma. Pensei que tinha um pequeno depósito, mas o mesmo em uma conta demo.

 
Lilia.solomko:

Olá, me ajude aqui. O robô comercial, EA, Expert Advisor não está funcionando. Eu baixei tudo o que era possível e queria verificar como tudo funciona. Achei meu depósito muito pequeno, mas minha conta demo é a mesma. Eu pensava que meu depósito era pequeno, mas o mesmo na minha conta demo.

Como você sabia que o robô não fazia comércio? Você se certificou de que todas as condições exigidas pela estratégia comercial foram cumpridas a fim de abrir a posição? Ou você simplesmente colocou o robô e ele não abriu imediatamente o comércio?

 
Lilia.solomko:

Olá, me ajude aqui. O robô comercial, EA, Expert Advisor não está funcionando. Eu baixei tudo o que era possível e queria verificar como tudo funciona. Achei meu depósito muito pequeno, mas minha conta demo é a mesma. Pensei que tinha um pequeno depósito, mas o mesmo em uma conta demo.

Eu não sei o que diz nas duas guias?


 
Por favor, ajude-me a escrever uma função: fechar pedidos de um lote maior para um lote menor (corda Símbolo, tipo int, pedidos de mão bool, int Magic)
Isto é, seleção do símbolo, tipo, se as ordens manuais são levadas em conta, número mágico.
 
Tigerfreerun:
Por favor, ajude-me a escrever uma função: fechar pedidos de um lote maior para um lote menor (corda Símbolo, tipo int, pedidos de mão bool, int Magic)
Isto é, seleção do símbolo, tipo, se as ordens manuais são levadas em conta, número mágico.

Sim, ele está pronto para ser usado.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 11.12.2008                                                     |
//|  Описание : Закрытие позиций в порядке сортировки по размерам лотов.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        (    ""       - любой символ,      |
//|                                             NULL      - текущий символ)    |
//|    op - операция                        (    -1       - любая позиция)     |
//|    mn - MagicNumber                     (    -1       - любой магик)       |
//|    sd - Направление сортировки лотов    (MODE_ASCEND  - возрастание,       |
//|                                          MODE_DESCEND - убывание)          |
//+----------------------------------------------------------------------------+
void ClosePosBySortLots(string sy="", int op=-1, int mn=-1, int sd=MODE_DESCEND) {
  double a[][2];                  // Массив лотов и тикетов
  int    i, k=OrdersTotal();      // Счётчик и количество ордеров
  int    p=0;                     // Количество позиций

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            p++;
            ArrayResize(a, p);
            a[p-1][0]=OrderLots();
            a[p-1][1]=OrderTicket();
          }
        }
      }
    }
  }

  // вдруг позиций нету, тогда и закрывать нечего
  if (p>0) {
    ArraySort(a, WHOLE_ARRAY, 0, sd);
    for (i=0; i<p; i++) {
      if (OrderSelect(a[i][1], SELECT_BY_TICKET)) {
        // проверим незакрытость на всякий случай,
        // может какая-то позиция уже закрылась по стопу/тейку
        if (OrderCloseTime()==0) ClosePosBySelect();
      }
    }
  }
}
 
Alekseu Fedotov:

Sim, está pronto para ir.

Tentei usá-lo, por alguma razão não funciona.
Onde nesta função está o fechamento em si, tanto quanto posso ver, existe uma referência a outra função?
 
Tigerfreerun:
Tentei usá-lo, por alguma razão não funciona.
Onde está o fechamento em si nesta função, até onde posso ver que há uma referência a outra função?

Sim, há uma função ClosePosBySelect() completa lá, não apenas o envio de uma ordem comercial sem verificação de status e resultados.

A busca no site lhe dará um link para a função ClosePosBySelect() da kim

 
Tigerfreerun:
Tentei usá-lo, por alguma razão não funciona.
Onde nesta função está o fechamento em si, tanto quanto posso ver, existe uma referência a outra função?

No cabeçalho desta função há um endereço de website, vá baixar todas as bibliotecas,

Funciona muito bem.

 

Eu desenho barras horizontais. O indicador corretamente, de acordo com as coordenadas coloca linhas, mas em algum momento, em uma nova barra, uma linha é colocada em um preço arbitrário, consistindo de muitos segmentos de comprimentos diferentes, sobrepostos uns aos outros. O preço de ajuste "estrangeiro" não se ajusta a nenhuma condição. De onde eles vêm, como podem ser evitados?

if(Line)
  {
   n_++;
   Setline(n_,Time[b_u_pbu],High[b_u_pbu],Time[b_u_pbu1],High[b_u_pbu],clrLime);
  }
//
void Setline(int sh,datetime tm,double pr,datetime tm1,double pr1,color clr)
  {
   ObjectCreate("-"+sh,OBJ_TREND,0,tm,pr,tm1,pr1,clr);
   ObjectSet("-"+sh,7,STYLE_SOLID);
   ObjectSet("-"+sh,10,false);
   ObjectSet("-"+sh,6,clr);
   ObjectSet("-"+sh,8,2);
  }
 
bij:

Eu desenho barras horizontais. O indicador corretamente, de acordo com as coordenadas coloca linhas, mas em algum momento, em uma nova barra, uma linha é colocada em um preço arbitrário, consistindo de muitos segmentos de comprimentos diferentes, sobrepostos uns aos outros. O preço de ajuste "estrangeiro" não se ajusta a nenhuma condição. De onde eles vêm, como podem ser evitados?

Os nomes das linhas mudam e, portanto, a multiplicidade de linhas.

Nesses casos, é melhor incluir o horário de abertura do bar no nome da linha.

Razão: