Tinha este problema, resolvido através da busca de um computador na rede. Não no ambiente da rede, ela aparece através da busca. Um insecto de algum tipo.
P.S. Ou o problema das mãos tortas. ))) Verifique o rastreador e o ping para onde vão os pacotes.
Bom dia! Se você tem um minuto, veja o que está errado aqui, tudo vai bem nos testes, eu coloco em um gráfico real, eu sento e espero, mas não coloca ordens pendentes! Novamente eu começo a testar, ele compra... Erro 130
Sim, eu mesmo pensei assim... Mas o fato é que, 64 vê todos na rede, 32 vê apenas 32. WTF???
sub: Poderia estar relacionado ao fato de que somente a área de trabalho (32) está nesta rede via cabo RG45, e todas as outras via wireless?
aproximadamente
Andrei, você precisa convidar meu filho, ele virá até você e preparará tudo.
ZS. Estou falando sério, a política é de configurar o roteamento corretamente também. Mas, IMHO, você tem que fazer isso localmente, não há nenhum estudante por perto?
Muito obrigado, coloque RefreshRates(); funcionou, mas somente no computador onde eu copiei para outro terminal, os dados são totalmente diferentes ... e para pior, pode ser?
Estes dados são necessários para calcular a diferença entre as ordens de compra e venda.
Vamos assumir que um pedido de compra com um volume de 0,09 lotes e dois pedidos de venda com um volume total de 0,11 lotes foram abertos, a diferença entre eles será de 0,09-0,11=-0,02, ou se possível a diferença entre seus valores.
Boa tarde. Minha pergunta é a seguinte. No livro MQL4.community, na seção "Standard Functions" (Funções Padrão) da seção "String Functions and Data Conversion Functions" (Funções de Conversão de Dados e Funções de String), é dado o seguinte exemplo de strings.mq4 Expert Advisor (dado na íntegra do livro)
//--------------------------------------------------------------------// strings.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --externint Quant_Bars=100; // Количество баровdatetime Time_On;
string Prefix ="Paint_";
//--------------------------------------------------------------- 2 --int init() // Спец. функция init()
{
int Ind_Bar; // Индекс бара
Time_On=Time [Quant_Bars]; // Время первого раскрашенногоfor(Ind_Bar=Quant_Bars-1; Ind_Bar>=0; Ind_Bar--)// Цикл по барам
{
Create(Ind_Bar,1); // Нарисуем тонкую линию
Create(Ind_Bar,2); // Нарисуем толстую линию
}
WindowRedraw(); // Перерисовка изображения return; // Выход из init()
}
//--------------------------------------------------------------- 3 --int start() // Спец. функция start
{
datetime T1, T2; // 1 и 2 координаты времениint Error,Ind_Bar; // Код ошибки и индекс бараdouble P1, P2; // 1 и 2 координата ценыcolor Col; // Цвет созданного объекта//--------------------------------------------------------------- 4 --for(int Line=1; Line<=2; Line++) // Цикл по видам линий
{
string Nom_Lin =Line + "_"; // Строка с номером линии// string Nom_Lin = DoubleToStr(Line,0)+"_";// Можно и такfor(Ind_Bar=0; ;Ind_Bar++) // Цикл по барам
{
//--------------------------------------------------------------- 5 --datetime T_Bar= Time[Ind_Bar];// Время открытия бараif (T_Bar < Time_On) break; // Заграничные не раскрашиваемstring Str_Time=TimeToStr(T_Bar); // Строка со временемstring His_Name=Prefix+Nom_Lin+Str_Time;// Имя объекта//--------------------------------------------------------------- 6 --
T1=ObjectGet(His_Name,OBJPROP_TIME1);// Запрос коорд. t1
Error=GetLastError(); // Получение кода ошибкиif (Error==4202) // Если объекта нет :(
{
Create(Ind_Bar,Line); // Вызов ф-ии создания объектаcontinue; // На следующую итерацию
}
//--------------------------------------------------------------- 7 --
T2 =ObjectGet(His_Name,OBJPROP_TIME2); // Запрос коорд. t2
P1 =ObjectGet(His_Name,OBJPROP_PRICE1);// Запрос коорд. p1
P2 =ObjectGet(His_Name,OBJPROP_PRICE2);// Запрос коорд. p1
Col=ObjectGet(His_Name,OBJPROP_COLOR); // Запрос цветаif(T1!=T_Bar || T2!=T_Bar || // Не те координаты или цвет:
(Line==1 && (P1!=High[Ind_Bar] || P2!= Low[Ind_Bar])) ||
(Line==2 && (P1!=Open[Ind_Bar] || P2!=Close[Ind_Bar])) ||
(Open[Ind_Bar] Close[Ind_Bar] && Col!=Red) ||
(Open[Ind_Bar]==Close[Ind_Bar] && Col!=Green) )
{
ObjectDelete(His_Name); // Удаляем объект
Create(Ind_Bar,Line); // Создаём правильный объект
}
//--------------------------------------------------------------- 8 --
}
}
WindowRedraw(); // Перерисовка изображения return; // Выход из start()
}
//--------------------------------------------------------------- 9 --int deinit() // Спец. функция deinit()
{
string Name_Del[1]; // Объявление массиваint Quant_Del=0; // Количество удаляемых объектовint Quant_Objects=ObjectsTotal(); // Cтолько всего ВСЕХ объектовArrayResize(Name_Del,Quant_Objects);// Необходимый размер массиваfor(int k=0; k<=Quant_Del; i++) // Удаляем объекты с именами,.. ObjectDelete(Name_Del[i]); // .. имеющимися в массивеreturn; // Выход из deinit()
}
//-------------------------------------------------------------- 10 --int Create(int Ind_Bar, int Line) // Пользовательская функция..
{ // ..создания объектаcolor Color; // Цвет объектаdatetime T_Bar=Time [Ind_Bar]; // Время открытия бараdouble O_Bar=Open [Ind_Bar]; // Цена открытия бараdouble C_Bar=Close[Ind_Bar]; // Цена закрытия бараdouble H_Bar=High [Ind_Bar]; // Максимальная цена бараdouble L_Bar=Low [Ind_Bar]; // Минимальная цена бараstring Nom_Lin =Line + "_"; // Строка - номер линии// string Nom_Lin = DoubleToStr(Line,0)+"_";// Можно и такstring Str_Time=TimeToStr(T_Bar); // Строка - время откр. string His_Name=Prefix+Nom_Lin+Str_Time;// Имя созаваемого объектif (O_Bar < C_Bar) Color=Blue; // Выбор цвета в зависимости..if (O_Bar >C_Bar) Color=Red; // .. от характеристик бараif (O_Bar ==C_Bar) Color=Green;
switch(Line) // Тонкая или толстая линия
{
case1: // Тонкая линияObjectCreate(His_Name,OBJ_TREND,0,T_Bar,H_Bar,T_Bar,L_Bar);
break; // Выход из switchcase2: // Толстая линияObjectCreate(His_Name,OBJ_TREND,0,T_Bar,O_Bar,T_Bar,C_Bar);
ObjectSet( His_Name, OBJPROP_WIDTH, 3);// Стиль
}
ObjectSet( His_Name, OBJPROP_COLOR, Color); // ЦветObjectSet( His_Name, OBJPROP_RAY, false); // ЛучObjectSetText(His_Name,"Объект создан экспертом",10);// Описаниеreturn; // Выход из польз. ф-ии
}
//-------------------------------------------------------------- 11 –
No final da subseção Função StringSubstr entre parênteses é dada a seguinte frase: "separadamente devemos observar que no primeiro para loop (minha nota: deve ser deinit() pois não há outra maneira de apagar objetos) não podemos apagar objetos, pois neste caso, após cada deleção, o número total de objetos e sua numeração será alterada, de modo que alguns nomes de objetos serão pulados". Mas na citada EA não há nenhum segundo para o loop. Além disso, a variável Quant_Del definida na função deinit() antes do for loop é inicializada com zero, enquanto a variável i não foi definida em nenhum lugar antes do for loop.
for(int k=0; k<=Quant_Del; i++) // Удаляем объекты с именами,.. ObjectDelete(Name_Del[i]); // .. имеющимися в массиве
acontece que o especialista acima omitiu apenas trivialmente várias linhas de programa.
Então a primeira pergunta é a seguinte: foi realmente uma omissão trivial de várias linhas ou é um programa tão complicado que um novato não consegue entender seu significado sem ajuda externa?
Além disso... No mesmo capítulo da mesma seção, há um link para o mesmo Expert Advisor (no arquivo anexo) antes do texto citado que, ao ser clicado, abre o mesmo Expert Advisor no MetaElitor. Mas o texto deste Expert Advisor é diferente: a função deinit()deinit()aqui se parece com isto
//--------------------------------------------------------------- 9 --int deinit() // Спец. функция deinit()
{
string Name_Del[1]; // Объявление массиваint Quant_Del=0; // Количество удаляемых объектоint Quant_Objects=ObjectsTotal(); // Cтолько всего ВСЕХ объектовArrayResize(Name_Del,Quant_Objects);// Необходимый размер массиваfor(int k=0; k<Quant_Objects; k++) // По количеству объектов
{
string Obj_Name=ObjectName(k); // Запрашиваем имя объектаstring Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 симif (Head==Prefix) // Найден объект, ..
{ // .. начинающийся с Paint_
Quant_Del=Quant_Del+1; // Колич имён к удалению
Name_Del[Quant_Del-1]=Obj_Name;//Запоминаем имя удаляемого
}
}
for(int i=0; i<=Quant_Del; i++) // Удаляем объекты с именами,.. ObjectDelete(Name_Del[i]); // .. имеющимися в массивеreturn; // Выход из deinit()
}
//-------------------------------------------------------------- 10 --
Então, se "combinar"a frase "Separadamente, note que você não pode excluir objetos no primeiro para loop, porque neste caso o número total de objetos e sua numeração mudará após cada exclusão, e alguns nomes de objetos serão pulados como resultado" Etextodeinit() função da última variante, tenho a segunda pergunta:
Pergunta. Por que não posso apagar objetos no primeiro para loop colocando a função ObjectDelete(Object_Name) dentro da declaração if...? Algo parecido:
int deinit() // Спец. функция deinit()
{
int Quant_Objects=ObjectsTotal(); // Cтолько всего ВСЕХ объектовfor(int k=0; k<Quant_Objects; k++) // По количеству объектов
{
string Obj_Name=ObjectName(k); // Запрашиваем имя объектаstring Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 симif (Head==Prefix) // Если найден объект, …
{ // ... начинающийся с Paint_,ObjectDelete(Obj_Name); // … то его и удаляем
} //конец if
} //конец forreturn; // Выход из deinit()
} //конец deinit//-------------------------------------------------------------- 10 --
Por que depois de cada eliminação "... O número total de objetos vai mudar"...? Porque neste caso, a variável Quant_Objects, que determina o número total de objetos, obtém seu valor igual a ObjectsTotal(), FORWARD the for loop?
P.S. Obrigado antecipadamente pela resposta, a fim de não desperdiçar o fórum.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Tinha este problema, resolvido através da busca de um computador na rede. Não no ambiente da rede, ela aparece através da busca. Um insecto de algum tipo.
P.S. Ou o problema das mãos tortas. ))) Verifique o rastreador e o ping para onde vão os pacotes.
Bom dia! Se você tem um minuto, veja o que está errado aqui, tudo vai bem nos testes, eu coloco em um gráfico real, eu sento e espero, mas não coloca ordens pendentes! Novamente eu começo a testar, ele compra... Erro 130
Sim, eu mesmo pensei assim... Mas o fato é que, 64 vê todos na rede, 32 vê apenas 32. WTF???
sub: Poderia estar relacionado ao fato de que somente a área de trabalho (32) está nesta rede via cabo RG45, e todas as outras via wireless?
aproximadamente
Andrei, você precisa convidar meu filho, ele virá até você e preparará tudo.
ZS. Estou falando sério, a política é de configurar o roteamento corretamente também. Mas, IMHO, você tem que fazer isso localmente, não há nenhum estudante por perto?
Sim, eu mesmo pensei assim... Mas o fato é que, 64 vê todos na rede, 32 vê apenas 32. WTF???
sub: Poderia estar relacionado ao fato de que somente a área de trabalho (32) está nesta rede via cabo RG45, e todas as outras via wireless?
Sobre o direito:
Como retirar o volume de pedidos de venda e compra em aberto, ou melhor ainda, seu valor?
Como retirar o volume de pedidos de venda e compra em aberto, ou melhor ainda, seu valor?
Como você quer calcular o volume de pedidos de venda ou compra em aberto?
OrderLot() você quer resumir?
Ou conseguir um preço de equilíbrio?
Estes dados são necessários para calcular a diferença entre as ordens de compra e venda.
Vamos assumir que um pedido de compra com um volume de 0,09 lotes e dois pedidos de venda com um volume total de 0,11 lotes foram abertos, a diferença entre eles será de 0,09-0,11=-0,02, ou se possível a diferença entre seus valores.
Boa tarde. Minha pergunta é a seguinte. No livro MQL4.community, na seção "Standard Functions" (Funções Padrão) da seção "String Functions and Data Conversion Functions" (Funções de Conversão de Dados e Funções de String), é dado o seguinte exemplo de strings.mq4 Expert Advisor (dado na íntegra do livro)
... continuou...
No final da subseção Função StringSubstr entre parênteses é dada a seguinte frase: "separadamente devemos observar que no primeiro para loop (minha nota: deve ser deinit() pois não há outra maneira de apagar objetos) não podemos apagar objetos, pois neste caso, após cada deleção, o número total de objetos e sua numeração será alterada, de modo que alguns nomes de objetos serão pulados". Mas na citada EA não há nenhum segundo para o loop. Além disso, a variável Quant_Del definida na função deinit() antes do for loop é inicializada com zero, enquanto a variável i não foi definida em nenhum lugar antes do for loop.
acontece que o especialista acima omitiu apenas trivialmente várias linhas de programa.
Então a primeira pergunta é a seguinte: foi realmente uma omissão trivial de várias linhas ou é um programa tão complicado que um novato não consegue entender seu significado sem ajuda externa?
Além disso... No mesmo capítulo da mesma seção, há um link para o mesmo Expert Advisor (no arquivo anexo) antes do texto citado que, ao ser clicado, abre o mesmo Expert Advisor no MetaElitor. Mas o texto deste Expert Advisor é diferente: a função deinit()deinit()aqui se parece com isto
Então, se "combinar" a frase "Separadamente, note que você não pode excluir objetos no primeiro para loop, porque neste caso o número total de objetos e sua numeração mudará após cada exclusão, e alguns nomes de objetos serão pulados como resultado" E texto deinit() função da última variante, tenho a segunda pergunta:
Pergunta. Por que não posso apagar objetos no primeiro para loop colocando a função ObjectDelete(Object_Name) dentro da declaração if...? Algo parecido:
Por que depois de cada eliminação "... O número total de objetos vai mudar"...? Porque neste caso, a variável Quant_Objects, que determina o número total de objetos, obtém seu valor igual a ObjectsTotal(), FORWARD the for loop?
P.S. Obrigado antecipadamente pela resposta, a fim de não desperdiçar o fórum.