FAQ: Se seu pedido abrir, verifique a abertura, e se abrir, você pode abrir o segundo pedido com um cheque...
Escrevi duas funções que abrem de forma diferente dependendo da situação e vou verificar no final de cada uma delas (acho que serão uma função separada) o que e quantas ordens estão abertas e quais ordens não serão atendidas e serão reabertas.
Se você é um especialista na área de posicionamento da EA em termos de câmbio, talvez esteja interessado em saber mais sobre ela e usá-la em seu robô comercial. Gostaria de reiterar meus agradecimentos (desculpe pela falta de detalhes).
Surgiu um problema. Não consigo encontrar a função que retorna o tamanho da posição "agregada" de um determinado instrumento! Procurei em todo o fórum, incluindo a filial do I.KIM,https://www.mql5.com/ru/forum/131859 - há - funções diferentes para muitos, exceto para aquele que eu preciso!
Por exemplo, se houver várias "compras" abertas em EUR, você pode aconselhar como determinar seu valor total?
GetLot(EURUSD, OP_BUY, magia)
double GetLot(string sy="", int op=-1, int mn=-1) {// возвращает сувокупный размер поз.
double l=-1;
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=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
I = ------ ???????????
------ ????????????
}
}
}
}
}
}
return(l);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает сумму лотов открытых позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+double GetAmountLotFromOpenPos(string sy="", int op=-1, int mn=-1) {
double l=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=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
l+=OrderLots();
}
}
}
}
}
}
return(l);
}
Eu não preciso levar em conta locs. Ou melhor, aqui está como:
O que eu preciso é disto. Se houver várias posições abertas de Venda e Compra, preciso remover as posições do balcão (de compensação), portanto - para permanecer apenas em uma direção.
Eu queria primeiro calcular a soma de todas as "baías", depois a soma de todas as "vendas". Depois disso, encontrar a diferença (isto é, cujo tamanho total é maior). E essa "diferença" deve ser deixada no mercado, - e todos os opostos devem ser removidos!
Então, esta função GetAmountLotFromOpenPos não vai funcionar aqui? Por exemplo, se eu definir
Eu não preciso levar em conta locs. Ou melhor, aqui está como:
O que eu preciso é disto. Se houver várias posições abertas de Venda e Compra, preciso remover as posições do balcão (de compensação), portanto - para permanecer apenas em uma direção.
Eu queria primeiro calcular a soma de todas as "baías", depois a soma de todas as "vendas". Depois disso, encontrar a diferença (isto é, cujo tamanho total é maior). E essa "diferença" deve ser deixada no mercado, - e todos os opostos devem ser removidos!
Então, esta função GetAmountLotFromOpenPos não vai funcionar aqui? Por exemplo, se eu definir
GetAmountLotFromOpenPos(EURUSD,OP_SELLL, -1)
-Não devolverá a quantidade total de lotes de todas as posições de Venda?
Se seu pedido abrir, verifique a abertura, e se abrir, você pode abrir o segundo pedido com um cheque...
Escrevi duas funções que abrem de forma diferente dependendo da situação e vou verificar no final de cada uma delas (acho que serão uma função separada) o que e quantas ordens estão abertas e quais ordens não serão atendidas e serão reabertas.
Se você é um especialista na área de posicionamento da EA em termos de câmbio, talvez esteja interessado em saber mais sobre ela e usá-la em seu robô comercial. Gostaria de reiterar meus agradecimentos (desculpe pela falta de detalhes).
Bom dia.
Surgiu um problema. Não consigo encontrar a função que retorna o tamanho da posição "agregada" de um determinado instrumento! Procurei em todo o fórum, incluindo a filial do I.KIM,https://www.mql5.com/ru/forum/131859 - há - funções diferentes para muitos, exceto para aquele que eu preciso!
Por exemplo, se houver várias "compras" abertas em EUR, você pode aconselhar como determinar seu valor total?
GetLot(EURUSD, OP_BUY, magia)
Pergunta esclarecida! Uma função foi descoberta:
Como isso está errado? Então o que essa função retorna?
"Retorna a soma de muitas posições em aberto " - não é isso que diz?
https://www.mql5.com/ru/code/9394
"Retorna a soma de muitas posições em aberto" - não é isso que diz?
Eu não preciso levar em conta locs. Ou melhor, aqui está como:
O que eu preciso é disto. Se houver várias posições abertas de Venda e Compra, preciso remover as posições do balcão (de compensação), portanto - para permanecer apenas em uma direção.
Eu queria primeiro calcular a soma de todas as "baías", depois a soma de todas as "vendas". Depois disso, encontrar a diferença (isto é, cujo tamanho total é maior). E essa "diferença" deve ser deixada no mercado, - e todos os opostos devem ser removidos!
Então, esta função GetAmountLotFromOpenPos não vai funcionar aqui? Por exemplo, se eu definir
GetAmountLotFromOpenPos(EURUSD,OP_SELLL, -1)
-Não devolverá a quantidade total de lotes de todas as posições de venda?
-não me devolverá a soma dos lotes de todas as posições de venda?
Eu não preciso levar em conta locs. Ou melhor, aqui está como:
O que eu preciso é disto. Se houver várias posições abertas de Venda e Compra, preciso remover as posições do balcão (de compensação), portanto - para permanecer apenas em uma direção.
Eu queria primeiro calcular a soma de todas as "baías", depois a soma de todas as "vendas". Depois disso, encontrar a diferença (isto é, cujo tamanho total é maior). E essa "diferença" deve ser deixada no mercado, - e todos os opostos devem ser removidos!
Então, esta função GetAmountLotFromOpenPos não vai funcionar aqui? Por exemplo, se eu definir
GetAmountLotFromOpenPos(EURUSD,OP_SELLL, -1)
-Não devolverá a quantidade total de lotes de todas as posições de Venda?
No caso geral:
SummLot = GetAmountLotFromOpenPos("0", OP_BUY, MagicNumber)- GetAmountLotFromOpenPos("0", OP_SELLL, MagicNumber);