Como codificar? - página 106

 

Isso funciona pelo preço. Ele está querendo encontrar o mais alto e o mais baixo de um idiota.

Lux

 

Olá,

Você pode tentar isto :

....

int highest=0, lowest=0, bar=WindowBarsPerChart();

for(int shift=0;shift<bar;shift++)

{

double indie=iCustom(.........,shift);

if(highest<indie) highest=indie;

if(lowest==0) lowest=indie;

if(lowest>indie) lowest=indie;

}

.....

nota: este código também calcula a vela aberta atual, se você quiser calcular apenas a vela fechada, use shift=1.

Espero que isto ajude,

Ardie

 
:: iBarShift encontrará para você a barra que começa naquele dia/hora... ou também a barra final para aquele dia:hora... (depende do tempo ou gráfico que você deseja começar a encontrar sua alta/baixa).

int iBarShift( símbolo de corda, int tempo, data/hora, bool exato=falso)

a seguir...

:: use essas posições de barra para encontrar os resultados do iHighest e iLowest

int iHighest( símbolo de corda, int timeframe, int tipo, int count=WHOLE_ARRAY, int start=0)

int iLowest( símbolo de cordel, int timeframe, int tipo, int count=WHOLE_ARRAY, int start=0)

:: resultados e feito , não use nenhum loop nisto!

 

Atualize programticamente o indicador de repintura

Olá,

Estou procurando uma maneira de atualizar um indicador de repintura para cada x minutos.

A única maneira de atualizá-lo atualmente, é clicar no indicador no gráfico e depois clicar em "ok". Podemos automatizá-lo com o código MQL4?

Encontrei algo no site da codersguru, Programmatically Refresh your charts | www.metatrader.info, mas parece que não está funcionando para mim. Ou alguém já tentou e obteve um resultado diferente (funcionando)?

Obrigado.

 

Desculpe pelo meu inglês.

Quero que a condição de contagem de vezes seja verdadeira apenas uma vez por barra. Computador somar muitas vezes por barra. O que eu faço de errado?

 
IngvarDagmar:
Desculpe pelo meu Englsih. Quero que a condição de número de vezes seja válida apenas uma vez por barra. Computador somar muitas vezes por barra. O que eu faço de errado?

Use uma função como esta...

bool NewBar() {

static datetime LastTime = 0;

if (Time[0] != LastTime) {

LastTime = Time[0];

return (true);

} else

return (false);

}

[/php]

Then put an if statement round your main code, like...

[php]

if(NewBar() == true){

// do the main processing here

}

A esperança que ajuda.

Lux

 

Foi simpático da sua parte, Lux.

Eu encontrei isto:

Processar cada barra apenas uma vez - Fórum MQL4

Automatizado 2008.01.15 18:54 Você poderia executar seu código logo no primeiro sinal de uma nova barra ( ou seja, logo após o fechamento da barra anterior ).

Aqui está uma função que retornará VERDADEIRA se uma nova barra tiver acabado de se formar:

// Esta função retorna VERDADEIRA logo no primeiro tick de uma barra, ou seja, logo após a barra anterior ter acabado de ser fechada

bool NewBar()

{

if(PreviousBarTime<Time[0])

{

PreviousBarTime = Tempo[0];

return(true);

}

retorno(falso); // no caso de - caso contrário a declaração não seja executada

} você precisa declarar a data/hora PreviousBarTime no início de sua EA...

então em seu código você poderia simplesmente usar

se ( NewBar() )

{

...... código você precisa ser executado depois que uma barra for fechada aqui ....

} obrigado

automatedfx@gmail.com

---------------------------------------------------

Notei que você usou STATIC... Procurei... qual é a vantagem de usar STATIC versus uma variável global?

 

entrada múltipla ea

por favor, ajude. gostaria de encontrar ou precisar de ajuda para criar uma ea com os seguintes parâmetros de entrada. quatro entradas comerciais separadas, cada uma com número de lotes, stop loss, trailing stop, break even, e objetivo de lucro. as negociações serão abertas ao clicar no botão de consultor especializado.

obrigado

 

Precisa de ajuda na opção de parada de trilha

Encontrei esta EA no fórum da MQL4, uma EA bastante interessante.

Alguém poderia ajudar a adicionar uma opção de parada móvel que pode definir a parada móvel somente após o valor de lucro que eu definir?

themastermind2.mq4

Arquivos anexados:
 

Olá a todos...

tenho um problema com a EA que escrevi... na verdade, a EA baseada no indicador MACD... quando a MACD se tornar como 'n' forma, abrir poste Sell, e quando a MACD se tornar como 'u' forma, a EA abrirá Buy...

o problema é que a EA não abriu nenhum post... depois que eu também fiz algum backtest, não há nenhum post aberto por esta EA... alguém pode me ajudar a encontrar o que há de errado com o código?

aqui está o código...

extern double TakeProfit = 20;

extern double Lots = 0.1;

extern double StopLoss = 20;

extern double MagicNumber = 17384;

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

double MacdBuffer1[];

double MacdBuffer2[];

double MacdBuffer3[];

double MacdBuffer4[];

double MacdBuffer5[];

double MacdBuffer6[];

double MacdBuffer7[];

double MacdBuffer8[];

int init()

{

//----

//SetIndexBuffer(0, lag1_buffer);

//SetIndexBuffer(1, lag2_buffer);

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd counted in the 1-st buffer

for(int i=0; i<limit; i++)

MacdBuffer1=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

MacdBuffer2=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-1)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-1);

MacdBuffer3=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+1)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+1);

MacdBuffer4=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-2)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-2);

MacdBuffer5=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+2)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+2);

MacdBuffer6=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-3)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-3);

MacdBuffer7=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+3)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+3);

/*Alert( "MacdBuffer7 =",MacdBuffer7);

Alert( "MacdBuffer5 =",MacdBuffer5);

Alert( "MacdBuffer3 =",MacdBuffer3);

Alert( "MacdBuffer1 =",MacdBuffer1);

Alert( "MacdBuffer2 =",MacdBuffer2);

Alert( "MacdBuffer4 =",MacdBuffer4);

Alert( "MacdBuffer6 =",MacdBuffer6);*/

//----

int ticket_buy, ticket_sell, total;

total=OrdersTotal();

//MACD become 'u' shape

if (MacdBuffer7>MacdBuffer5&&MacdBuffer5>MacdBuffer3&&MacdBuffer3>MacdBuffer1

&&MacdBuffer1<MacdBuffer2&&MacdBuffer2<MacdBuffer4&&MacdBuffer4<MacdBuffer6)

{

if (total < 1) {

ticket_buy=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"scalp 1 min - buy",MagicNumber,0,Green);

if(ticket_buy>0)

{

if(OrderSelect(ticket_buy,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

} else {

}

}

//MACD become 'n' shape

if(MacdBuffer7<MacdBuffer5&&MacdBuffer5<MacdBuffer3&&MacdBuffer3<MacdBuffer1

&&MacdBuffer1>MacdBuffer2&&MacdBuffer2>MacdBuffer4&&MacdBuffer4>MacdBuffer6)

{

if (total < 1) {

ticket_sell=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"scalp 1 min - sell",MagicNumber,0,Red);

if(ticket_sell>0)

{

if(OrderSelect(ticket_sell,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

} else {

}

}

//----

return(0);

}

//+------------------------------------------------------------------+

espero que alguém possa me ajudar a resolver o problema... eu não sou bom em programação de códigos... obrigado...

Razão: