[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 605
Como você o silencia? Conduzido até os joelhos brancos. Há muitas janelas de ferramentas (33). Não há EAs. Só meio e Zup. Não consigo descobrir de onde ele canta. Imploro-lhe que ajude. Serviço, os eventos têm sido. As cruzes sobre os eventos não ajudam. Ainda está cantando, o bastardo.
Técnica: starling pode sentar-se no peru ))))
Procurei no código - sem alertas em nenhum lugar! O que fazer?
Como posso atribuir valores diferentes a uma variável definida globalmente no decorrer da execução ao chamar funções diferentes e salvá-las?
Preciso atribuir certos valores à variável Parte, que é definida globalmente, para o fechamento parcial de uma posição, e passá-la como parâmetro para a função que executa o fechamento parcial da ordem. Esta variável é um divisor simples. Em outras palavras, se o valor inicialmente ajustado para 1, o lote é dividido por 1 e a posição inteira é fechada. Quando as condições comerciais mudam, esta variável recebe novos valores e pode ser igual a, digamos, 1,5 ou 2, então o lote de posição é dividido por este número, e o fechamento parcial é realizado. A chamada de função com passagem de parâmetro se parece com este literalmente:
// На глобальном уровнеdoublePart = 1; // на сколько разделить лот для частичного закрытия //..........void ClosePartPosBySelect(double Part) // Объявление функции// ... тру-ля-ля ... тело функции ...ll=NormalizeLot((OrderLots()/Part)); // рассчёт лота внутри функции// ... дальнейший код ф-ции ...//--------- Вызов функции частичного закрытия ---------// Происходит из тела этой функцииvoid TrailingPositionsTLE(int MAGIC, int CloseMethod, double Part, int LastTrailing)
// таким образом:if (CloseMethod==1)
ClosePartPosBySelect(Part);
Portanto, apesar do fato de que quando a função é chamada ...
TrailingPositionsTLE(561, 1, 2, 1);
... FecharMétodo = 1 (fechamento parcial) é definido e Parte = 2 é explicitamente especificado, a função passa seu valor inicial = 1 que foi definido globalmente ao invés do valor da Parte especificado no curso do programa (por exemplo, 2)...
artmedia70: Quando as condições comerciais mudam, esta variável recebe novos valores e pode ser igual, digamos, 1,5 ou 2, então o lote da posição é dividido por este número e um fechamento parcial é realizado.
Bem, quando as condições comerciais mudarem, então mude sua variável Peça. Ou você os tem em outro EA? Então esta variável tem que ser lida o tempo todo, ou seja
Bem, quando as condições comerciais mudarem, então mude sua variável Peça. Ou você os tem em outro EA? Então esta variável tem que ser lida o tempo todo, ou seja
int init()
{
.....
GlobalVariableSet("Part0",Part);
.....
}
int start()
{
...
Part=StrToInteger(GlobalVariableGet("Part0"));
...
}
Não, a variável está na mesma EA. Ela é definida globalmente e as funções podem usá-la, mas seu valor, se alterado dentro das funções, não é devolvido às funções externas. Portanto, as funções vêem seu valor como definido inicialmente. Se eu não a defino em nível global, então as funções se encaixam na variável não resolvida...
Quando você passa uma variável para uma função através de seu parâmetro, a variável é passada por valor, o que significa que a mudança da variável na própria função não fará com que ela seja sobregravada. Tente passá-lo por referência inserindo um "&" na frente do nome do parâmetro
void simple(string &s){
// ^// спец сим. & перед именем переменной задает передачу по ссылке, а не по значению//
}
artmedia70: Como tornar possível atribuir valores diferentes a uma variável definida globalmente em tempo de execução ao chamar funções diferentes e salvá-las?
de duas maneiras
1. adicionar um ampersant à função onde o valor é alterado,
por exemplo, função void ( double& Part ){}
então, quando um valor dentro da função é alterado, o novo valor retornará ao local de chamada
2. remover a variável da lista de parâmetros da função, já que a variável é definida globalmente, seu valor pode ser alterado em qualquer lugar do código sem passá-la como parâmetro...
Mas para evitar confusão, a 1ª variante é melhor, para não pensar o que é esta variável, pois pode haver mais de uma variável definida globalmente (e dentro de uma função)...
Já dei uma olhada no correio, a resposta já foi dada.
Como você o silencia? Conduzido até os joelhos brancos. Há muitas janelas de ferramentas (33). Não há EAs. Só meio e Zup. Não consigo descobrir de onde ele canta. Imploro-lhe que ajude. Serviço, os eventos têm sido. As cruzes sobre os eventos não ajudam. Ainda está cantando, o bastardo.
Técnica:
starling pode sentar-se no peru ))))
Procurei no código - sem alertas em nenhum lugar! O que fazer?
Procurei no código - sem alertas em nenhum lugar! O que fazer?
Confira em PlaySound().
Preciso atribuir certos valores à variável Parte, que é definida globalmente, para o fechamento parcial de uma posição, e passá-la como parâmetro para a função que executa o fechamento parcial da ordem. Esta variável é um divisor simples. Em outras palavras, se o valor inicialmente ajustado para 1, o lote é dividido por 1 e a posição inteira é fechada. Quando as condições comerciais mudam, esta variável recebe novos valores e pode ser igual a, digamos, 1,5 ou 2, então o lote de posição é dividido por este número, e o fechamento parcial é realizado. A chamada de função com passagem de parâmetro se parece com este literalmente:
Portanto, apesar do fato de que quando a função é chamada ...
... FecharMétodo = 1 (fechamento parcial) é definido e Parte = 2 é explicitamente especificado, a função passa seu valor inicial = 1 que foi definido globalmente ao invés do valor da Parte especificado no curso do programa (por exemplo, 2)...
Como posso derrotar isto? Obrigado...
Bem, quando as condições comerciais mudarem, então mude sua variável Peça. Ou você os tem em outro EA? Então esta variável tem que ser lida o tempo todo, ou seja
int init()
{
.....
GlobalVariableSet("Part0",Part);
.....
}
int start()
{
...
Part=StrToInteger(GlobalVariableGet("Part0"));
...
}
Bem, quando as condições comerciais mudarem, então mude sua variável Peça. Ou você os tem em outro EA? Então esta variável tem que ser lida o tempo todo, ou seja
int init()
{
.....
GlobalVariableSet("Part0",Part);
.....
}
int start()
{
...
Part=StrToInteger(GlobalVariableGet("Part0"));
...
}
Quando você passa uma variável para uma função através de seu parâmetro, a variável é passada por valor, o que significa que a mudança da variável na própria função não fará com que ela seja sobregravada.
Tente passá-lo por referência inserindo um "&" na frente do nome do parâmetro
Procurei no código - sem alertas em nenhum lugar! O que fazer?
Na guia "Eventos", desmarque a caixa "Permitir".
Olá Prezados Profissionais.
Eu realmente gostaria de escrever um EA que abrisse dois pedidos de Venda e Compra ao mesmo tempo.
Depois de um certo número de pontos (parâmetro lim), a ordem de perda seria fechada,
e um rentável será fechado quando o preço tiver caído abaixo do preço máximo desde que a ordem foi aberta
(uma espécie de parada virtual de trilha).
Em agonia eu criei isto, mas não funciona... não funciona
Por favor, sugira algo
Como tornar possível atribuir valores diferentes a uma variável definida globalmente em tempo de execução ao chamar funções diferentes e salvá-las?
de duas maneiras
1. adicionar um ampersant à função onde o valor é alterado,
por exemplo, função void ( double& Part ){}
então, quando um valor dentro da função é alterado, o novo valor retornará ao local de chamada
2. remover a variável da lista de parâmetros da função, já que a variável é definida globalmente, seu valor pode ser alterado em qualquer lugar do código sem passá-la como parâmetro...
Mas para evitar confusão, a 1ª variante é melhor, para não pensar o que é esta variável, pois pode haver mais de uma variável definida globalmente (e dentro de uma função)...
Já dei uma olhada no correio, a resposta já foi dada.
mas seu valor, alterado dentro das funções, não é devolvido a funções externas.
Mostrar a função em si.
Se for nulo ClosePartPosBySelect(peça dupla), mude para
void ClosePartPosBySelect()