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
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
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?
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
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...