[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 46 1...394041424344454647484950515253...652 Novo comentário ilunga 2011.08.04 08:26 #451 rustein: onde está exatamente a pergunta? Warstein 2011.08.04 08:27 #452 ilunga: onde está exatamente a pergunta? https://www.mql5.com/ru/forum/115354/page78 ilunga 2011.08.04 08:31 #453 rustein: h ttps://www.mql5.com/ru/forum/115354/page78no código que você deu, se houver apenas 1 ordem, o laço for(;Cnt>=0;Cnt--) { RefreshRates(); OrderSelect(Cnt,SELECT_BY_POS); if(OrderMagicNumber()==Magic) { TotalOpenOrders++; } } A primeira vez será uma tentativa de selecionar uma ordem que não existe Warstein 2011.08.04 08:35 #454 ilunga: no código acima, se houver apenas 1 ordem, o laço A primeira vez será uma tentativa de selecionar uma ordem que não existe Obrigado, vou corrigi-lo por mim mesmo. --- 2011.08.04 08:37 #455 artmedia70: O terminal entrou em profunda reflexão, depois de cerca de 15 minutos eu o matei. nada... Eu a teria matado sem esperar um minuto. Дмитрий 2011.08.04 08:44 #456 PapaYozh: Imediatamente antes de usar o Ask and Bid, execute o RefreshRates() Experimentei-o, nada muda Função de envio de pedidos, tudo parece ser padrão int OpenPosition(string AdvisorName,int Position,int Magic,double Lots,double StopLoss){ int N; int Сount = 5; int Slippage = (CalculateSpread() * 2); string PeriodString = GetPeriod(Period()); if(Position == OP_BUY){double Price = NormalizeDouble(Ask,Digits); string OrderName = " - Покупка по рынку"; string ErrorName = "Ошибка открытия ордера на покупку"; string CriticalErrorName = "Невозможно открыть ордер на покупку"; string MailCriticalErrorName = "Ошибка открытия"; color Arrow = Gold;} if(Position == OP_SELL){Price = NormalizeDouble(Bid,Digits); OrderName = " - Продажа по рынку"; ErrorName = "Ошибка открытия ордера на продажу"; CriticalErrorName = "Невозможно открыть ордер на продажу"; MailCriticalErrorName = "Ошибка открытия"; Arrow = YellowGreen;} while(IsTradeContextBusy() || !IsTradeAllowed()){int Interval = MathRand()+1000; Print("Торговый поток занят. Повторная проверка через "+DoubleToStr((Interval/1000),0)+" сек"); Sleep(Interval);} RefreshRates(); while(N < Сount){RefreshRates(); int Ticket = OrderSend(Symbol(),Position,Lots,Price,Slippage,StopLoss,0,AdvisorName+ OrderName,Magic,0,Arrow); if(Ticket > 0){if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)){int Flag = 1; PlaySound("recharge.wav"); break;}} else{Flag = 0; int PRM = GetLastError(); string ERR = Error(PRM,"OrderSend()"); ErrorProcessing(AdvisorName+" "+PeriodString,ErrorName+" "+PRM+" ("+ Error(PRM,"OrderSend()")+")","","OrderSend()"); N++; Sleep(5000);} if(N == Сount){ErrorProcessing(AdvisorName+" "+PeriodString,CriticalErrorName, MailCriticalErrorName+" "+PRM+" ("+Error(PRM,"OrderSend()")+")","OrderSend()");}} return(Flag);} PapaYozh 2011.08.04 09:06 #457 Dimoncheg: Experimentei-o, nada muda. Função de envio de pedidos, tudo parece ser padrão Primeiro você atualiza os preços com a função RefreshRates() e armazena o preço requerido em Preço. Em seguida, você executa Sleep(Intervalo) e, neste momento, as citações mudam. Depois disso, você chama OrderSend() com a citação do ano anterior. O que você espera em resposta? [ARQUIVO!] Qualquer pergunta de MQL4 Relógio de Tempo A diferença Cauchy é Дмитрий 2011.08.04 10:53 #458 PapaYozh: Primeiro você atualiza os preços com a função RefreshRates() e armazena o necessário em Preço. Em seguida, você executa o Sleep(Intervalo), e nesse momento as citações mudam. E depois disso, você chama OrderSend() com a citação do ano anterior. O que você espera em resposta? Erro meu, me modernizei um pouco no lugar errado, agora tirei o preço da função OpenPosition("Sovetneg",OP_BUY,NormalizeDouble(Ask,Digits),Magic,SlowlyIncreasingLots(0.2),MultiStop(OP_BUY,StopLoss)); A função em si é agora int OpenPosition(string AdvisorName,int Position,double Price,int Magic,double Lots,double StopLoss){ int N; int Сount = 5; int Slippage = (CalculateSpread() * 2); string PeriodString = GetPeriod(Period()); if(Position == OP_BUY){ string OrderName = " - Покупка по рынку"; string ErrorName = "Ошибка открытия ордера на покупку"; string CriticalErrorName = "Невозможно открыть ордер на покупку"; string MailCriticalErrorName = "Ошибка открытия"; color Arrow = Gold;} if(Position == OP_SELL){ OrderName = " - Продажа по рынку"; ErrorName = "Ошибка открытия ордера на продажу"; CriticalErrorName = "Невозможно открыть ордер на продажу"; MailCriticalErrorName = "Ошибка открытия"; Arrow = YellowGreen;} while(IsTradeContextBusy() || !IsTradeAllowed()){int Interval = MathRand()+1000; Print("Торговый поток занят. Повторная проверка через "+DoubleToStr((Interval/1000),0)+" сек"); Sleep(Interval);} while(N < Сount){RefreshRates(); int Ticket = OrderSend(Symbol(),Position,Lots,Price,Slippage,StopLoss,0,AdvisorName+ OrderName,Magic,0,Arrow); if(Ticket > 0){if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)){int Flag = 1; PlaySound("recharge.wav"); break;}} else{Flag = 0; int PRM = GetLastError(); string ERR = Error(PRM,"OrderSend()"); ErrorProcessing(AdvisorName+" "+PeriodString,ErrorName+" "+PRM+" ("+ Error(PRM,"OrderSend()")+")","","OrderSend()"); N++; Sleep(5000);} if(N == Сount){ErrorProcessing(AdvisorName+" "+PeriodString,CriticalErrorName, MailCriticalErrorName+" "+PRM+" ("+Error(PRM,"OrderSend()")+")","OrderSend()");}} return(Flag);} Parece agora mesmo? Delf 2011.08.04 11:03 #459 Olá. Você pode me dizer o que significa tipo===4? e tipo===5 no seguinte trecho: double ma=iMA(Symbol(),PERIOD_D1,21,0,MODE_SMA,PRICE_CLOSE,0); for(int k=1; k<=OrdersTotal(); k++) bool select=OrderSelect(k-1,SELECT_BY_POS); if(select) { int type=OrderType(); int ticket=OrderTicket(); if (Bid<ma && type===4) OrderDelete(ticket); if (Bid>ma && type====5) OrderDelete(ticket); } Entendo que as condições para a eliminação de pedidos, por mãe, são claras, mas juntos como ? Obrigado. [ARCHIVE] Any rookie question, Qualquer pergunta de novato, Quaisquer perguntas de recém-chegados PapaYozh 2011.08.04 11:11 #460 Dimoncheg: Isso não parece agora mesmo? Não, não é. Ficou ainda pior :) Entenda, RefreshRates() atualiza os valores das variáveis Ask e Bid pré-definidas, você está usando o valor uma vez armazenado na variável Price. 1...394041424344454647484950515253...652 Novo comentário
onde está exatamente a pergunta?
h ttps://www.mql5.com/ru/forum/115354/page78
no código que você deu, se houver apenas 1 ordem, o laço
A primeira vez será uma tentativa de selecionar uma ordem que não existe
no código acima, se houver apenas 1 ordem, o laço
A primeira vez será uma tentativa de selecionar uma ordem que não existe
O terminal entrou em profunda reflexão, depois de cerca de 15 minutos eu o matei.
Eu a teria matado sem esperar um minuto.
Imediatamente antes de usar o Ask and Bid, execute o RefreshRates()
Experimentei-o, nada muda
Função de envio de pedidos, tudo parece ser padrão
Experimentei-o, nada muda.
Função de envio de pedidos, tudo parece ser padrão
Primeiro você atualiza os preços com a função RefreshRates() e armazena o preço requerido em Preço.
Em seguida, você executa Sleep(Intervalo) e, neste momento, as citações mudam.
Depois disso, você chama OrderSend() com a citação do ano anterior.
O que você espera em resposta?
Primeiro você atualiza os preços com a função RefreshRates() e armazena o necessário em Preço.
Em seguida, você executa o Sleep(Intervalo), e nesse momento as citações mudam.
E depois disso, você chama OrderSend() com a citação do ano anterior.
O que você espera em resposta?
A função em si é agora Parece agora mesmo?Erro meu, me modernizei um pouco no lugar errado, agora tirei o preço da função
Olá.
Você pode me dizer o que significa tipo===4?
e tipo===5
no seguinte trecho:
double ma=iMA(Symbol(),PERIOD_D1,21,0,MODE_SMA,PRICE_CLOSE,0);
for(int k=1; k<=OrdersTotal(); k++)
bool select=OrderSelect(k-1,SELECT_BY_POS);
if(select)
{
int type=OrderType();
int ticket=OrderTicket();
if (Bid<ma && type===4)
OrderDelete(ticket);
if (Bid>ma && type====5)
OrderDelete(ticket);
}
Entendo que as condições para a eliminação de pedidos, por mãe, são claras, mas juntos como ?
Obrigado.
Isso não parece agora mesmo?
Não, não é. Ficou ainda pior :)
Entenda, RefreshRates() atualiza os valores das variáveis Ask e Bid pré-definidas, você está usando o valor uma vez armazenado na variável Price.