Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Um exame rápido sugere que deve funcionar. Mas você poderia melhorar a eficiência.
Pense em quantos objetos diferentes você desenhou em sua carta. Se você clicar em *qualquer* desses objetos, você vai percorrer cada ordem e tentar encontrar uma correspondência. Muitos objetos provavelmente não têm nada a ver com ordens. Isto é ineficiente.
É por isso que sugeri verificar o primeiro caracter de sparam para "#". Isto identifica automaticamente o objeto como sendo relacionado a uma ordem.
Além disso, não há necessidade de fazer loop através das ordens. O nome do objeto e/ou o texto do objeto já contém o número do bilhete. Então, extraia o número do bilhete de lá e feche o pedido.
Exemplo:
Você abre um pedido. É dado o bilhete número 12345
Criar um OBJ_BUTTON com o nome"#12345".
O código no OnChartEvent() seria algo assim (não compilado, não testado, tarde da noite...):
{
int ticket=(int)StringSubstr(sparam,1); // extract the ticket number
if(OrderSelect(ticket,SELECT_BY_TICKET)) // select the order
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,CLR_NONE)) // close the order
{
Print("# Error ",GetLastError());
}
}
}
Uau! Eu não sabia sobre isso.
Então, você mencionou duas vezes, e eu não descobri exatamente nada sobre isso.
Agora vou testá-lo por mim mesmo e trazê-lo para meu arquivo principal da EA.
Muito mais obrigado.
Eu uso OrderTicket() para outros objetos, agora eu vejo quando eu clico nesses objetos - ordem fechar.
Gostei do seu método, mas parece que ele influencia outros objetos.
Outro nome de objeto como este aqui é um deles.
Obrigado de antemão.
Eu uso OrderTicket() para outros objetos, agora eu vejo quando eu clico naquele objeto - ordem fechar.
Gostei do seu método, mas parece que ele influencia outros objetos.
Outro nome de objeto como este aqui é um deles.
Obrigado de antemão.
A solução mais elegante é mudar seu sistema de nomenclatura
No entanto, você ainda pode tirar o número do pedido. Depende apenas do formato exato do nome.
Mas antes de tudo isso, qual é o OBJPROP_TEXT do botão? Algum outro objeto tem o mesmo OBJPROP_TEXT?
A solução mais elegante é mudar seu sistema de nomenclatura
No entanto, você ainda pode tirar o número do pedido. Depende apenas do formato exato do nome.
Mas antes de tudo, o que é o OBJPROP_TEXT do botão? Algum outro objeto tem o mesmo OBJPROP_TEXT?
Sim! Eu sei que posso mudar os nomes dos objetos de botão ( também uso Prefixo ) se eu mudar os nomes dos botões, então eu poderia mudar muitas coisas, por exemplo, apagar sistema e outras coisas que estão todas ligadas umas às outras.
Abaixo estão os nomes de Botões e HLine.
"#"+IntegerToString(OrderTicket())+" -"+"Object Button"
( claro, nomes de objetos um pouco mais diferentes, mas o mesmo método )
Obrigado de antemão.
Mercado Fechado
Talvez eu tenha encontrado, mas não tenho certeza.
Se isto não for bom, por favor, me avise.
Obrigado de antemão.
//--- 2ª vez editado
Ei! cara!
Muito obrigado. Até agora, sem problemas. Funciona corretamente!
#Objetos de crossover - Abertos
Eu me deparei várias vezes com esta questão, às vezes passei, às vezes desisti, agora eu não gostaria de desistir mais uma vez.
Tenho 2 objetos " HLine e Button " que se cruzam, quero dizer, quando clico em um deles, ambos selecionados isto não é bom para mim. ( BUTTON Width = 20, HLINE Width = como você sabe )
P: Como posso fazer quando clico em BUTTON objeto HLINE não será selecionado enquanto eles se cruzam, por favor?
( Posso selecionar facilmente o objeto HLINE onde eles não se cruzam )
Obrigado de antemão.
( Estou trabalhando nisso, qualquer bom comentário seria melhor, por favor. )
#Lucro em Pips - Aberto |#Lucro em Pips - Fechado por enquanto - Eu resolvi
Sr. William- Eu uso seu " Pip, Point ... " códigos de cálculo.
Agora eu tento obter lucro no valor de pips com os códigos abaixo. Tenho 2 pedidos, um deles mostra corretamente ( OP_BUY ), o segundo não mostra corretamente - 399 - real 400 ( OP_SELL ).
P: Estou fazendo mal para ter lucro no cálculo de pips, por favor?
Agradecemos antecipadamente.
( no último dia, eu chequei fóruns em diferentes sites - isso não foi benéfico para mim )
Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste
MetaTrader 4 Build 574 com Linguagem MQL4 Atualizada e Mercado de Aplicações Lançado
whroeder1, 2014.01.27 14:11
Um exemplo surpreendente " se " de uma condição complexa do Sr. William.
Apenas obrigado!
Lutei nos últimos dois dias para consertar minha condição complexa de operador "se", mas não consigo resolver meu problema até encontrar acima um grande exemplo.
Por favor, alguém me ajude, eu realmente luto para resolver este problema.
#296
Obrigado de antemão.
O código abaixo às vezes funciona perfeitamente, às vezes não. Eu não consigo resolver este problema. Quando uso um único pedido, funciona perfeitamente, mas quando abro vários pedidos, esta função não funciona corretamente.
Ajude-me, por favor, e um pouco mais explica ( que o que está errado no código abaixo ) que seria melhor para mim.
( Agora, estou trabalhando nisso. )
{
ticketnumber=(int) StringSubstr(sparam,1);
if(OrderSelect(ticketnumber,SELECT_BY_TICKET))
{
if(StringFind(sparam,Button_1,0)>=0)
{
// ...
}
if(StringFind(sparam,Button_2,0)>=0)
{
//...
}
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if(Symbol()!=OrderSymbol()) continue;
update_1();
update_2();
update_3();
}
}
}
Obrigado de antemão.