![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
para CEHansen
Hi,
Dentro disso, para onde você leva as barras uma a uma você tem que usar a variável i em todos os lugares em vez de Corrente. A corrente não é inicializada, portanto é 0.
A maneira mais fácil de ver isso é colocada dentro do para no início disto:
Corrente = i;
As setas aparecerão. Também não esqueça de usar um valor maior para Sto_Lookback. Mabe 100.1000 ou algo parecido.
P.S Use para fazer o for assim é melhor do meu ponto de vista.
para (int i = Sto_Lookback; i >0; i--){
...
}
Porque esta é a forma normal de "barras" que chegam a 0 é a última. Isso o pouparia de alguns outros problemas mais tarde. (por exemplo - repintura). Apenas um pensamento.
Obrigado,
Victor
Oscilador de Volume Klinger
Pesquisei isto, parece ser um indicador interessante.
No entanto, ele depende em parte do volume, que não está realmente disponível no Forex.
Grande Seja
Ordem Modificar Erro 1
Nas minhas costas, continuo recebendo o ocasional "OrderModify error1". Pelo que posso perceber, significa que não há mudança, ou seja, os argumentos OrderModify() são os mesmos que os parâmetros correspondentes da ordem modificada.
Isto pode ser devido à questão da dupla comparação.
A pergunta é: como posso resolver este problema?
Esta é a área que eu acredito que está causando o problema:
if (Order === SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
se (!EachTickMode) BarCount = Bars;
IsTrade = Falso;
continuar;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(Bid - OrderOpenPrice() >= Ponto * MoveStopWhenPrice) {
if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Ponto * MoveStopTo, OrderTakeProfit(), 0, Vermelho);
se (!EachTickMode) BarCount = Bars;
continuar;
}
}
}
// Parada de trilha
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Ponto * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
se (!EachTickMode) BarCount = Bars;
continuar;
}
}
}
{} else {
//Close
//+------------------------------------------------------------------+
//| Início do Sinal (Sair de Venda) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Fim do sinal (Sair de Venda) |
//+------------------------------------------------------------------+
if (Order === SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
se (!EachTickMode) BarCount = Bars;
IsTrade = Falso;
continuar;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() > OrderOpenPrice() - Ponto * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Ponto * MoveStopTo, OrderTakeProfit(), 0, Vermelho);
se (!EachTickMode) BarCount = Bars;
continuar;
}
}
}
// Parada de trilha
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Ponto * TrailingStop)) {
if((OrderStopLoss() > (Pergunte + Ponto * TrailingStop)) ||| (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
se (!EachTickMode) BarCount = Bars;
continuar;
}
}
}
}
}
}
Pergunta de código
O que significa i++ ou i... na codificação?
Por exemplo: para (int i=5; i>0; i--)
O que significa i++ ou i-- na codificação?por exemplo: para (int i=5; i>0; i--)
É uma mão curta em langauges com base em C para incrementar ou diminuir uma variável baseada em número.
Por exemplo, em Visual Basic você teria que escrever.
i = i + 1 para incrementar a variável i.
Entretanto, em C, você pode simplesmente escrever i++.
Espero que isto ajude.
Hiachiever
É uma mão curta em langauges com base em C para incrementar ou diminuir uma variável baseada em números.
Por exemplo, em Visual Basic você teria que escrever.
i = i + 1 para incrementar a variável i.
Entretanto, em C, você pode simplesmente escrever i++.
Espero que isto ajude.
HiachieverObrigado,
então se eu colocar if (int i=6; i>0; i++)
ele "loopará" ou continuará verificando o valor até 6 no máximo? não tenho certeza se isso está certo. E se eu usar i...? Por favor, esclareça
Obrigado,
então se eu colocar if (int i=6; i>0; i++)
ele "loopará" ou continuará verificando o valor até 6 no máximo? não tenho certeza se isso está certo. E se eu usar i...? Por favor, esclareçaMatrixebiz,
se você quiser começar às 6 e voltar a 0, então use i...
(int i=6; i>0; i--)
Isto começará em 6, decrescendo por 1 em cada laço durante o tempo I > 0.
Se você quiser incluir 0, use i>=0.
Abraço,
Hiachiever
Matrixebiz,
se você quiser começar às 6 e voltar a 0, então use i...
(int i=6; i>0; i--)
Isto começará em 6, decrescendo por 1 em cada laço durante o tempo I > 0.
Se você quiser incluir 0, use i>=0.
Abraço,
HiachieverOk, então se eu colocar if (int i=6; i>0; i++)
então começará às 6 então , começará de novo incrementando 1, 2, 3 ... 6, correto?
Ok, então se eu colocar if (int i=6; i>0; i++)então começará a 6 então , começará de novo incrementando 1, 2, 3 ... 6, correto?
Não exatamente se o que você está querendo fazer lá é terminar às 6 horas.
O código, neste caso, seria
Para (int i=1; i<=6; i++)
Isto começará com 1 e terminará com 6 incrementos de 1 em cada laço.
Abraço,
Hiachiever