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

 
artem artem #:

MakarFX, obrigado! Agora não há primeira ordem extra sem sinal, mas agora por alguma razão a primeira ordem de sinal (normal) está entrando 2 velas mais cedo)))) Anexei uma captura de tela do testador à minha mensagem, mas mesmo apesar desta primeira ordem - o mais importante está feito, muito obrigado mais uma vez) Com os mágicos pegaram, então farei uma variável externa e quando anexarei o explorador a um gráfico específico de um par de moedas, mudarei o número para cada par individualmente.

Vou ver a abertura.

Não é necessário mudar o magik, se o símbolo for controlado.

 
Nerd Trader #:

Eu já esqueci... e no início eu o fiz (é bom que eu o tranquei), mas o método de condição não me parecia confiável, eu queria algo mais óbvio para indicar uma ordem alterada.

Bem, você ainda precisa verificar as condições em cada novo tick, se ele não funcionou no tick anterior - ele mudará no novo tick.

E o processamento de erros deve ser feito.

 
Nerd Trader #:

Eu já havia esquecido... e o fiz no início (ainda bem que me comprometi), mas o caminho da condição parecia pouco confiável, eu queria algo mais óbvio para indicar uma ordem alterada.

//+------------------------------------------------------------------+
if(OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderTakeProfit(), 0))
   ObjectCreate(0,OrderTicket(),OBJ_ARROW_UP,0,Time[0],Bid);
//+------------------------------------------------------------------+
int NameObject()
  {
   int ticket=-1;
   for(int i=0;i<ObjectsTotal();i++)
     {
      ticket=StringToInteger(ObjectName(0,i,0));
     }
   return(ticket);
  }
//+----------------------------------------------------------------------------+
void GetTicketOrder()
  {
   int result=-1;
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
     {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
           {
            if(OrderType() == OP_BUY || OrderType() == OP_SELL)
              {
               if(OrderTicket() == NameObject())
                  {
                     делай все что хочешь
                  }
              }
           }
        }
     }
  }
 
EVGENII SHELIPOV moeda de depósito, toda a grade de ordem é fechada

Por favor, ajude-me a mudar o código para que haja pontos em vez de lucro. Obrigado.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в пунктах         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetProfitOpenPosInPoint(string sy="", int op=-1, int mn=-1) {
  double p;
  int    i, k=OrdersTotal(), pr=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 (mn<0 || OrderMagicNumber()==mn) {
          p=MarketInfo(OrderSymbol(), MODE_POINT);
          if (p==0) if (StringFind(OrderSymbol(), "JPY")<0) p=0.0001; else p=0.01;
          if (OrderType()==OP_BUY) {
            pr+=(MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p;
          }
          if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p;
          }
        }
      }
    }
  }
  return(pr);
}
 
artem artem #:

MakarFX, obrigado! Agora não há primeira ordem extra sem sinal, mas agora por alguma razão a primeira ordem de sinal (normal) está entrando 2 velas mais cedo)))) Anexei um screenshot do testador à minha mensagem, mas mesmo apesar desta primeira encomenda - o mais importante está feito, muito obrigado mais uma vez) Com os mágicos pegaram-no, então farei uma variável externa e quando anexar o espert a um determinado par de moedas, mudarei o número para cada par individualmente.

Qual período foi testado e qual foi o número de confirmações?
 
MakarFX #:

Makar, pelo que entendo, deveria ser tentado ao invés da função CalculiteProfit()

 
EVGENII SHELIPOV #:

Makar, pelo que entendo, deveria ser tentado ao invés da função CalculiteProfit()

sim

e mudá-lo

int op = GetProfitOpenPosInPoint("", -1, Magic ); 
 
MakarFX #:
Em que período você testou e qual foi o número de confirmações?

MakarFX, naquela captura de tela, que anexei, testado em EUR / USD - M 30 - todos os carrapatos - 01.08.21 a 03.09.21 - 26 pedidos foram (mas mudei a constante de 4 para 8, decidi olhar para um número maior de velas)

Se devolvermos a constante para 4 castiçais, então para o mesmo período - então 35 pedidos, mas o primeiro pedido também vem em 2 pedidos mais cedo

Arquivos anexados:
 
MakarFX #:

sim

e você o muda.

Makar, você pode me dizer se há apenas um pedido mínimo e máximo?

 
EVGENII SHELIPOV #:

Makar, você pode me dizer se há apenas um pedido mínimo e máximo?

Você quer dizer "mínimo e máximo" por bilhete ou preço?
Razão: