Ajuda na codificação - página 212

 
zoroxzyad:
ican usar lwma então se eu quiser que o período seja 30 no casco o que devo colocar na tabela dois ma ou apenas um com o quanto o período não sou bom em matemática e muito obrigado ao homem pelo seu esforço

zoroxzyad

Você não pode usar apenas a média móvel. Você deve usar a fórmula do correio antes de

 

Algum manual para o novo metatrader 4 ainda?

Ou será que eles alguma vez farão um?

 
techmac:
Qualquer manual para o novo metatrader 4 ainda?ou eles alguma vez farão um?

Que eu saiba, não. Suponho que haverá alguns (em algum momento de desenvolvimento)

 

Mladen, anexado é um indicador que você modificou para exibir sinais cruzados no gráfico principal.

Este código é da nova versão...

arrUp[CB] = EMPTY_VALUE;

arrDn[CB] = EMPTY_VALUE;

state[CB] = state[CB+1];

if (TrendBuffer[CB]>LoBuffer[CB]) state[CB] = 1;

if (TrendBuffer[CB]<LoBuffer[CB]) state[CB] = -1;

if (state[CB]!=state[CB+1])

{

if (state[CB]== 1) arrUp[CB] = Low[CB] -iATR(NULL,0,10,CB)/2.0;

if (state[CB]==-1) arrDn[CB] = High[CB]+iATR(NULL,0,10,CB)/2.0;

}

Existe uma maneira fácil de explicar como este código insere os sinais?

Obrigado.

Arquivos anexados:
 
michaelB:
Mladen, anexado é um indicador que você modificou para exibir sinais cruzados no gráfico principal.

Este código é da nova versão...

arrUp[CB] = EMPTY_VALUE;

arrDn[CB] = EMPTY_VALUE;

state[CB] = state[CB+1];

if (TrendBuffer[CB]>LoBuffer[CB]) state[CB] = 1;

if (TrendBuffer[CB]<LoBuffer[CB]) state[CB] = -1;

if (state[CB]!=state[CB+1])

{

if (state[CB]== 1) arrUp[CB] = Low[CB] -iATR(NULL,0,10,CB)/2.0;

if (state[CB]==-1) arrDn[CB] = High[CB]+iATR(NULL,0,10,CB)/2.0;

}

Existe uma maneira fácil de explicar como este código insere os sinais?

Obrigado.

Michael

Procura uma cruz de valores em dois amortecedores: TrendBuffer e LoBuffer. Marca qual é o estado atual dos dois : se TrendBuffer > LoBuffer define o estado como 1 e se TrendBuffer < LoBuffer define o estado como -1.

Agora, quando o estado da barra atual é diferente do estado da barra anterior, isso significa que há uma cruz. E então ele desenha e seta no gráfico

 

Também professor problemático novamente, por favor coloque este indicador convertido em indicadores MT4, obrigado!

colorbars_hlc.mq5

Arquivos anexados:
 
mladen:
Michael

Ele está procurando uma cruz de valores em dois amortecedores: TrendBuffer e LoBuffer. Marca qual é o estado atual dos dois : se TrendBuffer > LoBuffer define o estado como 1 e se TrendBuffer < LoBuffer define o estado como -1.

Agora, quando o estado da barra atual é diferente do estado da barra anterior, isso significa que há uma cruz. E então ela desenha e seta no gráfico

OK, isso explica o TrendBuffer e LoBuffer.

Mas como funcionam o arrUp e o arrDn?

Por que os sinais aparecem em certas velas, e não em todas as velas.

Obrigado novamente.

 
michaelB:
OK, isso explica a TrendBuffer e LoBuffer.

Mas como funcionam o arrUp e o arrDn?

Por que os sinais aparecem em certas velas, e não em todas as velas.

Mais uma vez, obrigado.

michael

imagine uma seqüência como esta (1 quando TrendBuffer > LoBuffer, -1 quando TrendBuffer < LoBuffer)

11111111-1-1-1-1-1-1-1-111111111

As flechas devem ser desenhadas somente quando 1 se torna -1 ou quando -1 se torna 1 (quando o "estado" muda). É por isso que existe uma linha que verifica isso (esta linha : se (estado[CB] !=estado[CB+1]) ). Portanto, quando o estado muda, a seta é desenhada, caso contrário, a seta não precisa ser desenhada de forma alguma

 

Hey mladen,

Espero que você tenha tempo tão perto do final do ano.

O código abaixo tem relação com a última pergunta feita a mim. Ele segue 0,8 pips para um pedido após o objetivo de 2 pips a mais.

Mas como posso mudá-lo para que ele verifique todos os pedidos e trilhas para eles individualmente?

Muito obrigado! Ótimo trabalho que você faz aqui.

int start()

{

//----

if (OrdersTotal() == 0) {

isStopLoss = false;

}

for(int i=0; i<=OrdersTotal(); i++) {

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {

continue;

}

if(OrdersTotal() == 0) {

continue;

}

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(isStopLoss == true) {

if(OrderType() == OP_BUY) {

if(iClose(Symbol(), 0, 0) >= (OrderOpenPrice()+inProfitStopLoss*Point)) { // Zieht bei 2.0 Pips nach! - 200 = 2.0 Pips

if(isTrailing == true) {

if(iClose(Symbol(), 0, 0) >= (lastStopLoss+trailingStop)) {

OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss+trailingStop), 0,0,0);

lastStopLoss = OrderStopLoss();

//isTrailing = true;

continue;

}

}

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+inProfitStopLoss*Point,0,0,0);

if(OrderStopLoss() >= OrderOpenPrice()) {

isTrailing = true;

}

lastStopLoss = OrderStopLoss();

}

} else if(OrderType() == OP_SELL) {

if(iClose(Symbol(), 0, 0) <= (OrderOpenPrice()-inProfitStopLoss*Point)) {

if(isTrailing == true) {

if(iClose(Symbol(), 0, 0) <= (lastStopLoss-trailingStop)) {

OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss-trailingStop), 0,0,0);

lastStopLoss = OrderStopLoss();

//isTrailing = true;

continue;

}

}

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-inProfitStopLoss*Point,0,0,0); // 200 ursprünglich

if(OrderStopLoss() <= OrderOpenPrice()) {

isTrailing = true;

}

lastStopLoss = OrderStopLoss();

}

}

lastStopLoss = OrderStopLoss();

continue;

}

if(OrderType() == OP_BUY) {

isStopLoss = true;

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-initialStopLoss*Point,0,0,0);

} else if(OrderType() == OP_SELL) {

isStopLoss = true;

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+initialStopLoss*Point,0,0,0);

}

lastStopLoss = OrderStopLoss();

}

//----

return(0);

}
 
arroganzmaschine:
Hey mladen,

Espero que você tenha tempo tão perto do final do ano.

O código abaixo tem relação com a última pergunta feita a mim. Ele segue 0,8 pips para um pedido após o objetivo de 2 pips a mais.

Mas como posso mudá-lo para que ele verifique todos os pedidos e trilhas para eles individualmente?

Muito obrigado! Ótimo trabalho que você faz aqui.

int start()

{

//----

if (OrdersTotal() == 0) {

isStopLoss = false;

}

for(int i=0; i<=OrdersTotal(); i++) {

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {

continue;

}

if(OrdersTotal() == 0) {

continue;

}

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(isStopLoss == true) {

if(OrderType() == OP_BUY) {

if(iClose(Symbol(), 0, 0) >= (OrderOpenPrice()+inProfitStopLoss*Point)) { // Zieht bei 2.0 Pips nach! - 200 = 2.0 Pips

if(isTrailing == true) {

if(iClose(Symbol(), 0, 0) >= (lastStopLoss+trailingStop)) {

OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss+trailingStop), 0,0,0);

lastStopLoss = OrderStopLoss();

//isTrailing = true;

continue;

}

}

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+inProfitStopLoss*Point,0,0,0);

if(OrderStopLoss() >= OrderOpenPrice()) {

isTrailing = true;

}

lastStopLoss = OrderStopLoss();

}

} else if(OrderType() == OP_SELL) {

if(iClose(Symbol(), 0, 0) <= (OrderOpenPrice()-inProfitStopLoss*Point)) {

if(isTrailing == true) {

if(iClose(Symbol(), 0, 0) <= (lastStopLoss-trailingStop)) {

OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss-trailingStop), 0,0,0);

lastStopLoss = OrderStopLoss();

//isTrailing = true;

continue;

}

}

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-inProfitStopLoss*Point,0,0,0); // 200 ursprünglich

if(OrderStopLoss() <= OrderOpenPrice()) {

isTrailing = true;

}

lastStopLoss = OrderStopLoss();

}

}

lastStopLoss = OrderStopLoss();

continue;

}

if(OrderType() == OP_BUY) {

isStopLoss = true;

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-initialStopLoss*Point,0,0,0);

} else if(OrderType() == OP_SELL) {

isStopLoss = true;

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+initialStopLoss*Point,0,0,0);

}

lastStopLoss = OrderStopLoss();

}

//----

return(0);

}

arroganzmaschine

Verifique a forma como as paradas de arrasto são gerenciadas na EA a partir deste post: https: //www.mql5.com/en/forum/181334. Acho que ela pode ajudá-lo, pois tem todos os elementos (incluindo a verificação de erros) necessários para lidar com a perda das paradas de reboque.