[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
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);
}
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.
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())
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á:
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...
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
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.
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 .
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.
Como posso saber se uma ordem desencadeou uma parada móvel e colocar novas ordens quando a parada móvel foi acionada?
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:
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á:
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.
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.
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
e analisar o fato da formação de uma nova barra, qualquer instrumento, período.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...
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 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
Seria interessante fazer o controle universal do novo bar. A propósito - tudo está lá para isso