[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 582
A última função publicada pela Kim, GetPotentialLossInCurrency (https://forum.mql4.com/ru/11287/page107), leva em conta apenas os pedidos em aberto:
Tentei ampliar um pouco, incluindo nele as ordens pendentes (simplesmente adicionando outros tipos): mas as ordens pendentes não são levadas em conta. Eles são contados de maneira diferente? A documentação não diz nada sobre esta....
As ordens pendentes não têm "perda potencial total de posições em aberto na moeda do depósito".
A função GetPotentialLossInCurrency() retorna a perda potencial total de posições em aberto na moeda de depósito.
Refere-se a posições no mercado. Pressione F1 sobre estas funções de mercado, releia as informações cuidadosamente:
tv=MarketInfo(OrderSymbol(), MODE_TICKVALUE);
if (OrderType()==OP_BUY) {
pl+=(OrderOpenPrice()-OrderStopLoss())/po*OrderLots()*tv;
}
if (OrderType()==OP_SELL) {
pl+=(OrderStopLoss()-OrderOpenPrice())/po*OrderLots()*tv;
}
pl+=OrderCommission()+OrderSwap();
Pergunta aos programadores: em um novo bar, o Expert Advisor verifica se o pedido em euro está vivo (por exemplo), se não - faz um novo negócio, se sim - deixa tudo como está. coloca tal condição:
for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:int Tip=OrderType(); // Тип ордераif(OrderSymbol()!="EURUSD"||Tip>1){continue;}else{// Не наш ордерRefreshRates();
double point5 =MarketInfo("EURUSD", MODE_POINT);//Запрос Pointdouble bid5 =MarketInfo("EURUSD", MODE_BID); // Запрос значения Biddouble ask5 =MarketInfo("EURUSD", MODE_ASK); // Запрос значения Askdouble SL5 = NormalizeDouble(bid5+(Stop*point5), MarketInfo("EURUSD", MODE_DIGITS));
double TP5 = NormalizeDouble(bid5-(Profit*point5), MarketInfo("EURUSD", MODE_DIGITS));
double SL5v = NormalizeDouble(bid5-(Stop*point5), MarketInfo("EURUSD", MODE_DIGITS));
double TP5v = NormalizeDouble(bid5+(Profit*point5), MarketInfo("EURUSD", MODE_DIGITS));
if ((iVolume("EURUSD",Period(),4)) > (iVolume("EURUSD",Period(),1))) {
ticket=OrderSend("EURUSD",OP_SELL,lot_EUR,bid5,Slip,0,0);// Открытие SellOrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),SL5,TP5 ,0,CLR_NONE);
{Alert (GetLastError());} // Сообщение об ошибке
}else{ticket=OrderSend("EURUSD",OP_BUY,lot_EUR,ask5,Slip,0,0); // Открытие BUYOrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),SL5v,TP5v ,0,CLR_NONE);
{ Alert (GetLastError());} // Сообщение об ошибке
}}
} // Конец анализа орд.
} // Конец перебора орд.
Esta é uma pergunta para os programadores: em um novo bar, a EA verifica se o pedido EUR está vivo (por exemplo, se não estiver, abre um novo negócio, se estiver, deixa tudo como está. Eu estabeleci tal condição:
Mas o código não funciona. Onde está o erro?
Veja o que acontece se houver uma dúzia de pedidos e o seu for o sétimo (por exemplo)
ilunga: se você tiver apenas 1 em sua EA, você pode simplesmente lembrar seu bilhete e verificar cada vez que ele for fechado ou não, sem passar por todas as ordens
Muito obrigado pela recomendação, eu quase descobri, só não lembro se o pedido é acionado, então o bilhete tem valor -10?
As ordens pendentes não têm "perda potencial total de posições abertas na moeda de depósito".
A função GetPotentialLossInCurrency() retorna a perda potencial total de posições em aberto na moeda de depósito.
Refere-se a posições no mercado. Pressione F1 sobre estas funções de mercado e releia as informações cuidadosamente:
Entendo muito bem que a função GetPotentialLossInCurrency() está falando de posições em aberto. Tenho uma pergunta: por que as ordens pendentes também não podem ser contabilizadas?
A documentação:
doubleOrderOpenPrice( )
Возвращает цену открытия для выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().
doubleOrderStopLoss( )
Возвращает значение цены закрытия позиции при достижении уровня убыточности (stop loss) для текущего выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().
Em nenhum lugar diz que OrderOpenPrice e/ou OrderStopLoss se aplicam somente a pedidos abertos.
A última função publicada pela Kim, GetPotentialLossInCurrency (https://forum.mql4.com/ru/11287/page107), leva em conta apenas os pedidos em aberto:
Tentei ampliar um pouco, incluindo nele as ordens pendentes (simplesmente adicionando outros tipos): mas as ordens pendentes não são levadas em conta. Eles são contados de maneira diferente? A documentação não diz nada sobre esta....As ordens pendentes não têm "perda potencial total de posições em aberto na moeda do depósito".
A função GetPotentialLossInCurrency() retorna a perda potencial total de posições em aberto na moeda de depósito.
Refere-se a posições no mercado. Pressione F1 sobre estas funções de mercado, releia as informações cuidadosamente:
Asordens pendentes não têm "perda potencial total de posições abertas na moeda de depósito".
A função GetPotentialLossInCurrency() retorna a perda potencial total de posições em aberto na moeda de depósito.
Estamos falando de posições no mercado. Pressione F1 sobre estas funções de mercado, releia as informações cuidadosamente:
Pergunta aos programadores:
em um novo bar, o Expert Advisor verifica se o pedido em euro está vivo (por exemplo), se não - faz um novo negócio, se sim - deixa tudo como está.
coloca tal condição:
Mas o código não funciona. Onde está o erro?
Esta é uma pergunta para os programadores:
em um novo bar, a EA verifica se o pedido EUR está vivo (por exemplo, se não estiver, abre um novo negócio, se estiver, deixa tudo como está.
Eu estabeleci tal condição:
Mas o código não funciona. Onde está o erro?
Veja o que acontece se houver uma dúzia de pedidos e o seu for o sétimo (por exemplo)
Verifique o primeiro - não é o nosso.
Verifique o segundo, não é o nosso.
...
verifique o sétimo - o nosso
verifique a oitava, não é a nossa.
...
A idéia é que quando você abre um monte de pedidos em um par, você pode fechar todos os pedidos sobrepostos em um único movimento.
Modificar/eliminar pedido--->tipo---->Fechar pedidos sobrepostos
Elimina as ordens sobrepostas. Existe tal função na MQL?
Oops, encontrei-o:https://forum.mql4.com/ru/4822
veja o que acontece se houver uma dúzia de pedidos e o seu for o sétimo (por exemplo)
verifique a primeira - não é a nossa.
Verifique o segundo, não é o nosso.
...
verifique o sétimo - o nosso
verifique o oitavo, não é nosso, defina a ordem
...
Há apenas uma ordem em aberto neste par. Eu só verifico o símbolo EURUSD dado, mas não devo ter definido a condição corretamente.
if(OrderSymbol()!="EURUSD"||Tip>1){continuar;}else{
precisamos se(OrderSymbol()= Symbol("EURUSD"){
Há apenas um pedido em aberto para este par. Estou verificando apenas o símbolo EURUSD dado, mas devo ter colocado a condição de forma errada
if(OrderSymbol()!="EURUSD"||Tip>1){continuar;}else{
necessidade if(OrderSymbol()= Símbolo("EURUSD"){
se você tiver apenas 1 em sua EA, você pode simplesmente lembrar seu bilhete e verificar cada vez que ele for fechado ou não, sem passar por todas as ordens
Muito obrigado pela recomendação, eu quase descobri, só não lembro se o pedido é acionado, então o bilhete tem valor -10?
As ordens pendentes não têm "perda potencial total de posições abertas na moeda de depósito".
A função GetPotentialLossInCurrency() retorna a perda potencial total de posições em aberto na moeda de depósito.
Refere-se a posições no mercado. Pressione F1 sobre estas funções de mercado e releia as informações cuidadosamente:
Entendo muito bem que a função GetPotentialLossInCurrency() está falando de posições em aberto. Tenho uma pergunta: por que as ordens pendentes também não podem ser contabilizadas?
A documentação:
Em nenhum lugar diz que OrderOpenPrice e/ou OrderStopLoss se aplicam somente a pedidos abertos.
Muito obrigado pela recomendação, eu quase descobri, só não consigo lembrar se o pedido é acionado, o bilhete leva um valor de -10?