[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 60
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
aqui está a transferência de parâmetros por referência, faça um roteiro como este:
a guia Expert mostrará o seguinte registro: 2012.04.08 11:19:35 teste EURUSD,M5: func = 100, res = 10
e tentar responder à pergunta por que atribuímos res = 999; e o registro recebeu res = 10
Você pode me dizer como conectar as bibliotecas? Eles estão presentes nos arquivos mqh, mas quando copiam, eles dão
strlib.mqh' - não pode abrir o arquivo do programa
aqui está a transferência de parâmetros do link, faça um roteiro como este:
a guia Expert mostrará a seguinte entrada: 2012.04.08 11:19:35 teste EURUSD,M5: func = 100, res = 10
E tente responder à pergunta por que atribuímos res = 999; mas no registro temos res = 10
Aqui está minha explicação:
A função de impressão chama a função func. do usuário. O parâmetro res=999 é passado para a função func. Quando a função func em si é avaliada, o parâmetro a=10 é usado. O valor a*10=100 é passado de volta para o lugar onde a função func é chamada. Como acabamos com res=10, deduzo disso que passar um parâmetro por referência significa o seguinte: você pode passar QUALQUER valor do tipo relevante (neste caso, res=999) na função chamada (neste caso, no func), mas a própria função já será avaliada com esse valor (ou seja(ou seja, em nosso caso com a=10), que será inicializada dentro da própria função (que em um caso particular também pode coincidir com o valor passado para a função chamada, ou seja, neste caso, para o func). E ao transferir o valor calculado na função (neste caso, para func) de volta para a string de chamada da função, a variável (neste caso, res) já terá um valor diferente do que antes, ou seja, o valor que recebeu quando o func da função foi calculado (ou seja, neste caso, res=10). Assim: ao passar um parâmetro para uma função por referência, dentro de uma função avaliada, o valor do parâmetro pode mudar, e ainda, após o valor calculado ser retornado na cadeia de chamada da função, este parâmetro terá um valor MODIFICADO (em um caso particular, o mesmo), que ele recebeu durante a avaliação da função chamada.
Eu acertei?
É isso mesmo.
Grosse danke schoen!!!
Por favor, me diga, quero fazer uma modificação no pedido, para que a EA altere o valor de stop-loss no momento que eu especificar, mas ela começa a trapacear.
aqui está meu código
int externo tp = 350; // lucro valor takeprofit
int externo sl = 400; // perda valor stoploss
int ticket;
int start()
{
//
if (OrdersTotal()==0 && Hour( )==2 && Minuto( )==0) // pedido abre às 2:00 horas hora do terminal
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,"",123,0,Red);
//
if (OrderTotal()==1 && Hour( )==3 && Minute( )==0) // aqui eu estabeleço a condição de que o pedido com o bilhete selecionado deve ser modificado às 3h00 hora do terminal. tempo.
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // aqui especifiquei a seleção do pedido, negociar
OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); // modificar o pedido com o ticket selecionado, a partir do preço da posição aberta, alterar o valor SL em pontos, TP deixado inalterado
}
//--
}
Há um problema durante os testes: o Expert Advisor começa a fazer muitas modificações inúteis no tempo, das 3 horas 00 minutos até 3 59 minutos. A EA está brincando e fazendo modificações a cada segundo! Por quê? O que há de errado com o código?
Por favor, me diga, quero fazer uma modificação no pedido, para que a EA mude o valor do stop loss no momento que eu especificar, mas ela começa a brincar.
aqui está meu código
int tp externo = 350; // valor de lucro
sl int externo = 400; // valor de stop loss
int ticket;
int start()
{
//----
se (OrderTotal()==0 && Hour( )==2 && Minute( )==0) // o pedido abre às 2:00 hora do terminal
ticket=OrderSend(Symbol(),OP_SELLL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,"",123,0,Red);
//----
se (OrderTotal()==1 && Hour( )==3 && Minute( )==0) // aqui eu especifiquei uma condição que o pedido com o bilhete selecionado deve ser modificado às 15h, de acordo com o horário do terminal.
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // aqui eu especifiquei a seleção do pedido, o comércio
OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); // modificar o pedido com o ticket selecionado, a partir do preço da posição aberta, alterar o valor do SL em pontos, deixar TP inalterado
}
//--
}
Ao testar, surge um problema: o Expert Advisor começa a fazer muitas modificações inúteis dentro do tempo, das 3 horas 00 minutos às 3 59 horas. O Expert Advisor está brincando e fazendo modificações a cada segundo! Por quê? O que há de errado com o código?
Por que em tempo..... no lucro!!!
Como escrever a função correta para modificar uma ordem aberta em uma conta ECN, onde você não pode colocar parada e lucro de uma vez, mas você tem que fazer isso através de modificação.
O problema é que algo está errado, por favor, ajude-me a encontrar o erro.
int externo tp = 350; // lucro valor takeprofit
int externo sl = 400; // perda valor stoploss
int ticket;
int start()
{
//----
if (OrdersTotal()==0 && Close[1]<Open[1] && High[1]<Bid) )==0) // encomenda abre em condições
ticket=OrderSend(Symbol(),OP_SELLL,1,Bid,0,0,0,0t,",123,0,Red);
//
if (OrderTotal()==1 ) // aqui eu defini uma condição que modifica uma ordem com uma única ordem selecionada.
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // aqui especifiquei a seleção do pedido, transações
OrderModify(ticket, OrderOpenPrice(), Ask+sl*Point,Ask-tp*Point,0,Blue); // modificar o pedido com o ticket selecionado, a partir do preço da posição aberta, alterar o valor SL em pontos, deixar TP inalterado
}
}
#include <strlib.mgh>
e substituir por:
#include <stdlib.mgh>
Pessoas, por favor expliquem de forma simples, o que é transferência de parâmetros por referência. Eu li a documentação, mas entendi apenas que é possível e após a identificação da variável é obrigatório colocar um modificador &. Seria ótimo se a explicação fosse acompanhada de um pequeno programa com explicações... Qual é a diferença entre os parâmetros habituais de passagem e os parâmetros de passagem por referência?