Como codificar? - página 118

 

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--)

 
matrixebiz:
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

 
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.

Hiachiever

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ça

 
matrixebiz:
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ça

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,

Hiachiever

 
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,

Hiachiever

Ok, 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?

 
matrixebiz:
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