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

 
Taras Slobodyanik:

- Veja a época do último bar
- somar tudo o que foi fechado neste bar
- subtrair do saldo atual

e assim por diante, um bar de cada vez.

Você não pode fazer isso sem aritmética? Talvez você pudesse escrever algum tipo de função definida pelo usuário?

 
novichok2018:
Provavelmente não coloquei minha pergunta corretamente, uma vez que as respostas estão fora do tópico. Não me interessa se as posições fecharam ou não, e não estou interessado no valor de um tick. Preciso saber qual era o saldo da conta no momento do fechamento de 1, 2, 3 barras de um determinado símbolo para comparação. As posições nestas barras foram abertas e fechadas, incluindo posições em outros símbolos: algumas posições foram fechadas no lado positivo, algumas foram fechadas no lado negativo, algumas ainda não foram fechadas, portanto o saldo mudou. Eu preciso conhecer os valores específicos. Obrigado.

não há funções padrão, assim como não há busca através do fórum ou de qualquer outra forma

No testador, você pode simular a seguinte situação: ao negociar usando vários Expert Advisors, você não pode saber qual era o equilíbrio naquele momento. É claro que você pode tentar contar as ordens que foram abertas, e depois procurar por um tempo em que não havia ordens abertas no histórico do terminal ... E o resultado final não significa que tudo será levado em conta

no testador você pode facilmente simular esta situação - descreva no escopo global uma variável e verifique a condição no OnTick if(OrderTotal()==0) StartBalance = AccountBalance();

e então, ao abrir os pedidos no testador, você tem o valor inicial de saldo.... Você pode adicionar a cada barra o valor dos pedidos de lucro, você pode adicionar estes valores a uma matriz ou lista


Mas se você quiser usar este código para uma conta com vários Expert Advisors, você tem que formular sua tarefa não como uma busca do saldo n-bars atrás, mas como um lucro total das ordens abertas; você não escreve nenhuma ordem aberta, você abre uma ordem - comece a adicionar lucro a cada barra à matriz. Isso significa que você está procurando uma oportunidade de mudar a lógica de seu TS não em conexão com o saldo, mas com o lucro da ordem aberta e/ou o lucro da ordem fechada no histórico do terminal por um período (dia, hora?)

 
Igor Makanu:

não há funções padrão, assim como não há busca através do fórum ou de qualquer outra forma

No testador, você pode simular a seguinte situação: ao negociar usando vários Expert Advisors, você não pode saber qual era o equilíbrio naquele momento. É claro que você pode tentar contar as ordens que foram abertas, e depois procurar por um tempo em que não havia ordens abertas no histórico do terminal ... E o resultado final não significa que tudo será levado em conta

no testador você pode facilmente simular esta situação - descreva no escopo global uma variável e verifique a condição no OnTick if(OrderTotal()==0) StartBalance = AccountBalance();

e então, ao abrir os pedidos no testador, você tem o valor inicial de saldo.... Você pode adicionar a cada barra o valor dos pedidos de lucro, você pode adicionar estes valores a uma matriz ou lista


Mas para trabalhar com este código em uma conta com vários EAs, a tarefa não deve ser procurar o saldo n-bars atrás, mas sim somar o lucro total das ordens abertas, sem ordens abertas, ordem aberta - comece a registrar o lucro em cada barra da matriz. Isso significa que você está procurando a possibilidade de mudar a lógica de seu TS não relacionada ao saldo, mas ao lucro das ordens abertas e/ou lucro das ordens fechadas no histórico do terminal por um período (dia, hora?)

Entendido. Obrigado pela resposta detalhada.

 

Olá! Como obter os parâmetros de entradaDEPOIS de criar uma alça indicadora técnica que foi criada usando iCustom.

Por exemplo

iCustom(NULL,0, "name_indicator",1,2,3) - como obter os parâmetros de entrada 1,2 e 3?

 
Olá, você poderia me dizer como descobrir a porcentagem de saque atual?
 
nalyk:
Olá, você poderia me dizer como descobrir a porcentagem de saque atual?

Manter uma conta de patrimônio líquido

 
nalyk:
Olá, você poderia me dizer como descobrir a porcentagem de saque atual?
double drawdown = AccountProfit()*100/AccountBalance();
 

É possível aplicar um modelo a uma estrutura e uma classe para declarar variáveis de um tipo de modelo dentro delas, a fim de mais tarde trabalhar com essas variáveis e referir-se a elas? Eu tentei isso com uma estrutura.

templ(T)struct A
{
  T val;
  int ind;
};

Ela compila, mas não permite atribuir um nome à estrutura.

 
Olá! Ajude-me a fazer o seguinte:
É necessário fazer um lucro-alvo para cada posição aberta no mercado, mas não total, mas separado!
Exemplo: EURUSD abriu e tem um lucro-alvo de $1 em suas configurações, e assim que chegou a ele, a posição fechou por si só, só ela!
Cada par de moedas deve funcionar por si só, não pelo lucro total!

Encontrei o código para o lucro total para todos os pares:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в валюте депозита |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
  double p=0;
  int    i, k=OrdersTotal();

  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+=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(p);
}
ajude a refazer para cada par de moedas separadamente......Obrigado a você!
 
ponochka:
Olá! Por favor, ajude-me a fazer o seguinte:
É necessário fazer um lucro alvo para cada posição aberta no mercado, mas não total, mas separado!
Exemplo: EURUSD abriu e tem um lucro alvo de $1 em suas configurações e assim que chegou a ele, a posição fechou por si só, apenas aquela!
Cada par de moedas deve funcionar por si só, não pelo lucro total!

Encontrei o código de lucro total para todos os pares:
ajude a refazer para cada par de moedas separadamente......Obrigado a você!

Passe no primeiro parâmetro desta função a corda com seu par e ele só contará com os lucros deste par.

Passe no segundo parâmetro desta função o tipo de operação (compra ou venda) e contará apenas com lucro nesta operação.

E o número mágico também. Esta é uma função universal.

Razão: