[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 47

 
Tiken123:

Se você conhece a função para calcular o saldo total de perda de posições FECHADAS por SL e o saldo total de operações lucrativas OPEN, escreva.

O cálculo do saldo de perdas deve começar a partir do último valor máximo de depósito

Sua pergunta é um pouco parecida com a anterior, por isso eu afinei um pouco a função da resposta anterior. Confesso que não o testei, mas deve funcionar. As variáveis lucro e perda declaradas em nível global devem mostrar o lucro e perda total respectivamente para as posições fechadas.

Se você precisar fazer isso também para pedidos abertos, acrescente um segundo para o loop para selecioná-los não na história, mas de acordo com o critério OrdersTotal(): for(int n=1; n<=OrdersTotal(); n+++)

E somar os valores obtidos às mesmas variáveis lucro e perda .

//+----------------------------------------------------------------------------+
// Прибыльно или убыточно закрылся последний ордер, и возврат типа такого ордера
int fHistory(){
  profit = 0; loss = 0;
  for(int i=OrdersHistoryTotal(); i >= 0; i--){               // Выборка в истории
     if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){    // Если есть следующий в истории
        if(OrderMagicNumber()!=magN) continue;                // Ордера не нашего эксперта

        if(OrderProfit() > 0 ) profit = profit+OrderProfit(); // Если прибыль по посл.ордеру - суммируем

        if(OrderProfit() < 0 ) loss = loss + OrderProfit();   // Если убыток по посл.ордеру - суммируем

     }
  }
  return(-1);
}
 
Twilight:

Por exemplo, eu preciso saber se um limite de compra pendente foi acionado e se foi, a que preço, e então definir um novo limite.

Se houver uma ordem do tipo OP_BUYLIMIT em cada tic usando a função OrderType(), quando este tipo desaparecer, significa que a ordem foi aberta e se tornou OP_BUY. Todos os 6 tipos estão listadosaqui. Usando a função OrderOpenPrice(), você pode descobrir a que preço o pedido foi aberto.
 
Twilight:

Como posso saber se uma ordem desencadeou uma parada móvel e colocar novas ordens quando a parada móvel foi acionada?

Você pretendia fechar o pedido ou modificá-lo?
Se fechado, você precisa saber se ele acabou de fechar? Ou fechou com um Stop Loss ? (Pode fechar em TakeProfit e OrderClose() ou OrderCloseBy())
 

Aqui está minha nova função de controle de barras:

bool IsNewBar()
{
  if(bartime != iTime(Symbol(),i_trading_TF,0))
  {
    bartime = iTime(Symbol(),i_trading_TF,0);
    return(true);
  }
  
  return(false);
}

onde, i_trading_TF é uma variável declarada globalmente externa. Assim, quando coloco meu Expert Advisor em um gráfico, posso definir o valor desta variável na janela pop-up e assim definir o período de tempo da abertura da barra a ser controlada.

Vi uma função semelhante em um Expert Advisor, mas com um parâmetro formal no cabeçalho da função. Aqui está:

bool IsNewBar(int i_trading_TF)
{
  if(bartime != iTime(Symbol(),i_trading_TF,0))
  {
    bartime = iTime(Symbol(),i_trading_TF,0);
    return(true);
  }
  
  return(false);
}

O período de tempo é passado através do parâmetro de função. Entretanto, se a variáveli_trading_TF é declarada em nível global, não acho que faça sentido passá-la através de um parâmetro formal, uma vez que sua visibilidade não é limitada.

Favor comentar sobre este ponto.

A primeira opção também funciona para mim, mas é estranho que alguns programadores tenham o hábito de encher com parâmetros formais até mesmo aquelas funções em que eu mesmo não o faria.

 
pu6ka:
Em cada tick, monitorar a presença de um pedido com tipo OP_BUYLIMIT usando a função OrderType(), quando este tipo desaparece, significa que o pedido se abriu e se tornou tipo OP_BUY. Todos os 6 tipos estão listadosaqui. Usando a função OrderOpenPrice(), você pode descobrir a que preço o pedido foi aberto.
Não tem que ser. Pode ser morto manualmente. Ao contrário, é necessário memorizar o bilhete do pedido; assim que encontrarmos a ausência do pedido com este bilhete e a aparência de uma posição no mercado com o mesmo bilhete - então sim, ele é acionado...
 
hoz:

Aqui está minha nova função de controle de barras:

onde, i_trading_TF é uma variável declarada globalmente externa. Assim, quando coloco meu Expert Advisor em um gráfico, posso definir o valor desta variável na janela pop-up e assim definir o tempo de abertura da barra que eu quero controlar.

Vi uma função semelhante em um consultor especializado, mas com um parâmetro formal no cabeçalho da função. Aqui está:

O período de tempo é passado através do parâmetro de função. Entretanto, se a variáveli_trading_TF é declarada em nível global, não acho que faça sentido passá-la através de um parâmetro formal, uma vez que sua visibilidade não é limitada.

Favor comentar sobre este ponto.

A primeira opção também funciona para mim, mas é estranho que alguns programadores tenham o hábito de encher com parâmetros formais até mesmo aquelas funções em que eu mesmo não o faria.

Faz sentido se a EA analisa vários quadros e uma nova barra deve ser formada em cada quadro.

Isso não é tudo, vamos adicionar o nome do instrumento aos parâmetros transferidos

bool IsNewBar(string Symb,int i_trading_TF)
{
  if(bartime != iTime(Symb,i_trading_TF,0))
  {
    bartime = iTime(Symb,i_trading_TF,0);
    return(true);
  }
  
  return(false);
}
e analisar o fato da formação de uma nova barra, qualquer instrumento, período.
 
artmedia70:
Não necessariamente. Também pode ser morto manualmente. Ao contrário, é preciso lembrar o bilhete da ordem pendente; assim que uma ordem pendente com esse bilhete for encontrada em falta e uma posição no mercado com o mesmo bilhete aparecer, então sim, ela é acionada...

Sim, isso é mais correto. Mas podemos verificar a idéia no testador dessa forma. Para rastrear quatro tipos de pedidos pendentes, precisamos de 4 variáveis adicionais para rastrear os carrapatos. Embora se houver mais de um pendente para um tipo, então você deve definitivamente introduzir uma variável para bilhetes.
 
r772ra:

Faz sentido se a EA analisa vários quadros e cada quadro necessita do fato de formar uma nova barra.

Isso não é tudo, vamos adicionar o nome do instrumento aos parâmetros

e analisar o fato da formação de uma nova barra, qualquer símbolo, período.

Você acha que é razoável "envolver" um símbolo no "mecanismo de busca de uma nova barra"? :)))
 
TarasBY:
Você acha apropriado "envolver" um símbolo no "mecanismo para encontrar uma nova barra"???? :)))

Seria interessante fazer um controle universal do novo bar. A propósito - tudo está lá para isso
 
Vinin:

Seria interessante fazer o controle universal do novo bar. A propósito - tudo está lá para isso
Você está falando de "considerar" e DC?! ;)
Razão: