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
Boa tarde.
Estou começando a escrever e a entender o código. Até agora, estou sobrecarregado.
Gostaria de começar a escrever uma ea usando o histograma MACD e quando a linha do triger cruzar acima e abaixo do histograma.
alguém tem uma simples sugestão de programa para começar a entender o código e deixá-lo correr para ver como ele funciona?
Obrigado - você
daniel
Trendline-Import from Excel/CSV=?
Olá, tenho escrito alguns scripts simples nos últimos dias, especialmente ObjectCreate (OBJ_TREND com Ray=1), é muito legal como isto funciona, mas como posso desenhar Objetos a partir de um arquivo csv pronto, onde tenho algum histórico Close-Data para minhas Close-Lines, porque quero ser capaz de apagar meu Template e importar os dados toda vez que precisar deles com um script,
alguém tem alguma idéia de como isso poderia funcionar?
O CSV tem uma data (sem tempo) & Valor de fechamento (eu não precisaria de mais dados para as Linhas)
e o Roteiro deve traçar uma linha a partir desta data com Ray=1 e personalizar a cor
talvez o script também possa verificar o gráfico aberto (símbolo) e pegar o arquivo csv correto, se um tiver mais de um ;-)
Por favor, qualquer um pode me ajudar
Erro para OrderDelete(OrderTicket())
Olá a todos!
Sou novo na programação MQL4, mas do outro lado conheço o C++.
Mas eu tenho alguns problemas com funções comerciais.
Este é o meu problema:
Eu crio uma ordem pendente com :
ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-5*Point,slippage,0,0,"",0,0,Green);
e em outro ponto do programa eu quero deletá-lo:
se (OrderSelect(ticket,SELECT_BY_TICKET)) OrderDelete(OrderTicket());
ERROR 4108! Por que ? O número do bilhete está correto, eu o imprimo.
Mas se eu usar :
se (OrderSelect(position, SELECT_BY_POS))OrderDelete(OrderTicket());
está OK!
Por que ?
Obrigado por seu apoio e pelo fórum.
Código para Encerrar EA ???
Olá a todos,
Estou à procura de um código que Terminará uma EA. Eu postei um pequeno martingale que escrevi. Tenho-o onde fechará todas as Ordens Pendentes e Abertas quando chegar a um Porcentagem de Saque de Conta. Eu também consegui fazer com que ele pare de negociar quando um Objetivo de Lucro Diário for alcançado. Ele começa a negociar novamente no dia seguinte. (Graças a quem escreveu a grade SWB, já que usei seu código).
Entretanto, eu gostaria que a EA terminasse quando ela atingisse uma determinada condição. Digamos, ele atinge o Deságio Percentual Máximo e fecha todas as ordens pendentes e posições abertas. Nesse ponto, eu quero que a EA termine por si mesma para não começar a negociar novamente até que eu retire a EA do gráfico e a coloque de volta.
Aqui está o EA. Qualquer sugestão ou ajuda é muito apreciada!!
Obrigado,
Joe
Precisa de ajuda no "'fim_do_programa' - parênteses desequilibrados à esquerda".
Olá, tenho trabalhado em um EA e continuo recebendo uma mensagem de erro ao compilar: "'fim_do_programa' - parêntese esquerda desequilibrada". Normalmente esta mensagem de erro está relacionada a um número desigual de parênteses esquerdo e direito. Entretanto, eu verifiquei meus códigos alto e baixo e descobri que tenho igual número de parênteses esquerdo e direito. Por isso, realmente me deixa louco que não consiga descobrir onde deu errado. Alguém pode verificar meus códigos e me dizer como corrigi-los? Obrigado, um milhão. Meus códigos estão afixados abaixo:
//+------------------------------------------------------------------+
//| Breakout.mq4 |
//| Pooh |
//| |
//+------------------------------------------------------------------+
#propriedade copyright "Pooh
#ligação de propriedade ""
//--- parâmetros de entrada
Exterior int LengthI=23;// para entrar no mercado
comprimento externo int LengthO=7;// para saída
Lotes duplos externos=0,1; // para tamanho do pedido
int exterior N1=14; //período para ATR
externo int NLots=1; //número de lotes de pedidos aumentados
//+------------------------------------------------------------------+
//| função de iniciação de especialista |
//+------------------------------------------------------------------+
int init()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização especializada |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{
//----
duplo HLong,LLong,HShort,LShort;
HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));
LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2)); HLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));
LShort=iLow(NULL,0,iLowest(NULL,0,1,ComprimentoI,2)); LLong=iLow(NULL,0,iLowest(NULL,0,1,ComprimentoI,2))
HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2)); HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));
int cnt, berço, bilhete, total;
total=OrdensTotal();
se (total<1)
{
se (iClose(NULL,0,1)>HLong)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);
se (bilhete>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("Pedido longo aberto : ",OrderOpenPrice()));
}
senão
Imprimir ("Erro de abertura de ordem longa : ",GetLastError());
devolução(0);
}
se (iClose(NULL,0,1)<LShort)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);
se (bilhete>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("Encomenda abreviada:",OrderOpenPrice());
}
else Print("Error opening SHORT order:",GetLastError()));
retornar(0);
}
retorno(0);
}
for(cnt=0;cnt<total;cnt++)
{ //10
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // posição longa é aberta
{
// deve ser fechado?
if(Bid<=Long)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);// posição de fechamento
retorno(0);
}
//modificar a parada de trilha
OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green);
retornar(0);
}
senão
{
if(Ask>==HShort)
{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);// posição de fechamento
retorno(0);
}
//modificar a parada de trilha
OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);
return(0);
}
}
}
//agrupar lotes de pedidos longos e curtos total
duplo LOrderLots=0;
duplo SOrderLots=0;
for(cnt=0,cnt<=total,cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)
LOrderLots=LOrderLots+OrderLots();
if(OrderSymbol()==Symbol()&&OrderType()==OP_SELLL)
SOrderLots=LOrderLots+OrderLots();
}
/aumento da ordem aberta
for(cot=0,cot<=total,cot++)
{ //1
//add posição para ordem longa
if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==verdadeiro) //se houver pedidos em aberto
{ if(OrderMagicNumber===123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- se a ordem aberta foi aberta pelo tipo pooh abd da EA é Longo
{ //3
for(int i=1;i<=15;i++)
{ if(Bid>=OrderOpenPrice()+i*0,5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0,5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4
{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5
se (bilhete>0)
{ //6
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("Pedido longo aberto : ",OrderOpenPrice()));
} //6
senão
Imprimir ("Erro de abertura de ordem longa : ",GetLastError());
intervalo;
} //5
} //4
retorno(0);
//add posição para ordem curta
if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELLL)
{ //7
for(int n2=1;n2<=15;n2++)
{ if(Ask(OrderOpenPrice()-(n2+1)*0,5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8
{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9
se (bilhete>0)
{ // 10
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("Pedido abreviado : ",OrderOpenPrice());
} // 10
senão
Imprimir ("Erro na abertura de ordem curta : ",GetLastError());
intervalo;
} //9
} //8
retorno(0);
} //7
} //3
} //2
} //1
retorno(0)
}
Necessita de um codificador para codificar um indicador simples
Eu preciso de alguém que codifique um indicador que faça isso:
Em um Fibonacci simples, usando apenas as linhas 0,50.100. Quando uma barra fecha acima de 50% ou abaixo de 50%, mas tendo a opção de escolher se estou procurando um fechamento acima ou abaixo, não os dois. Portanto, se eu estou procurando um fechamento abaixo de 50%, não quero que toda vez que ele fecha acima de 50 o alerta dispare. Quero que ele me alerte por um som e me envie um e-mail e/ou texto. Isto é possível? Obrigado!!
IMAGEM: http://tinypic.com/r/dhbu6v/5
Tentando codificar a lógica simples, incapaz!
Olá Fórum,
Creio que isto é muito simples de codificar para você que é bom o suficiente na MQL4, mas sou iniciante e tenho problemas, li todas as lições aqui, mas ainda não consegui entender
então eu quero fazer comércio automatizado
tamanho do lote 0,1
stoploss = 30 pips
meta de lucro 50 pips
par AUDUSD
Se (preço alto - preço baixo) < 60 pips entre 02:00 GMT e 10:00 GMT então vender AUDUSD a preço baixo - 5pips ou comprar AUDUSD a preço alto + 5pips, caso contrário não há comércio
Olá Fórum,
Creio que isto é muito simples de codificar para você que é bom o suficiente na MQL4, mas sou iniciante e tenho problemas, li todas as lições aqui, mas ainda não consegui entender
então eu quero fazer comércio automatizado
tamanho do lote 0,1
stoploss = 30 pips
meta de lucro 50 pips
par AUDUSD
Se (preço alto - preço baixo) < 60 pips entre 02:00 GMT e 10:00 GMT então vender AUDUSD a preço baixo - 5pips ou comprar AUDUSD a preço alto + 5pips, caso contrário não há comércio[lang=pl]Oi, acho que não é problema codificar esta EA, mas tenho dúvidas.
Quando você quer comprar/vender ? Você precisa de pedidos pendentes nos níveis baixo-5 alto+5?
cumprimentos,
Grzesiek[/lang]
[lang=pl]Oi, acho que não é problema codificar esta EA, mas tenho dúvidas.
Quando você quer comprar/vender ? Você precisa de pedidos pendentes nos níveis baixo-5 alto+5?
cumprimentos,
Grzesiek[/lang]Olá,
obrigado por ajudar
Sim, portanto, mais precisamente a faixa comercial AUDUSD (diferença entre preço alto e preço baixo) entre as 02:00 GMT e as 10:00 GMT (isto é muito importante em código) é inferior a 60 pips, portanto este é um sinal comercializável. Então você vende se os preços alcançarem o preço baixo (entre 02:00 e 10:00) - 5 pips e você compra se os preços alcançarem o preço alto + 5 pips.
exemplo
entre 02:00 e 10:00 GBPUSD o preço baixo era 1,6000, a alta era 1,6050, então se os preços alcançarem 1,5995 venda automaticamente e se o preço alcançar 1,6055 compra automaticamente colocando 30 pips stop loss order automaticamente e 50 pips take profit.
se você não tem tempo apenas me dê uma indicação de como começar, eu leio a lição, mas não tenho prática para fazer o trabalho
obrigado
Olá, tenho trabalhado em um EA e continuo recebendo uma mensagem de erro ao compilar: "'fim_do_programa' - parêntese esquerda desequilibrada". Normalmente esta mensagem de erro está relacionada a um número desigual de parênteses esquerdo e direito. Entretanto, eu verifiquei meus códigos alto e baixo e descobri que tenho igual número de parênteses esquerdo e direito. Por isso, realmente me deixa louco que não consiga descobrir onde deu errado. Alguém pode verificar meus códigos e me dizer como corrigi-los? Obrigado, um milhão. Meus códigos estão afixados abaixo:
//+------------------------------------------------------------------+
//| Breakout.mq4 |
//| Pooh |
//| |
//+------------------------------------------------------------------+
#propriedade copyright "Pooh
#ligação de propriedade ""
//--- parâmetros de entrada
Exterior int LengthI=23;// para entrar no mercado
comprimento externo int LengthO=7;// para saída
Lotes duplos externos=0,1; // para tamanho do pedido
int exterior N1=14; //período para ATR
externo int NLots=1; //número de lotes de pedidos aumentados
//+------------------------------------------------------------------+
//| função de iniciação de especialista |
//+------------------------------------------------------------------+
int init()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização especializada |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{
//----
duplo HLong,LLong,HShort,LShort;
HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));
LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2)); HLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));
LShort=iLow(NULL,0,iLowest(NULL,0,1,ComprimentoI,2)); LLong=iLow(NULL,0,iLowest(NULL,0,1,ComprimentoI,2))
HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2)); HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));
int cnt, berço, bilhete, total;
total=OrdensTotal();
se (total<1)
{
se (iClose(NULL,0,1)>HLong)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);
se (bilhete>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("Pedido longo aberto : ",OrderOpenPrice()));
}
senão
Imprimir ("Erro de abertura de ordem longa : ",GetLastError());
devolução(0);
}
se (iClose(NULL,0,1)<LShort)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);
se (bilhete>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("Encomenda abreviada:",OrderOpenPrice());
}
else Print("Error opening SHORT order:",GetLastError()));
retornar(0);
}
retorno(0);
}
for(cnt=0;cnt<total;cnt++)
{ //10
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // posição longa é aberta
{
// deve ser fechado?
if(Bid<=Long)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);// posição de fechamento
retorno(0);
}
//modificar a parada de trilha
OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green);
retornar(0);
}
senão
{
if(Ask>==HShort)
{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);// posição de fechamento
retorno(0);
}
//modificar a parada de trilha
OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);
return(0);
}
}
}
//agrupar lotes de pedidos longos e curtos total
duplo LOrderLots=0;
duplo SOrderLots=0;
for(cnt=0,cnt<=total,cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)
LOrderLots=LOrderLots+OrderLots();
if(OrderSymbol()==Symbol()&&OrderType()==OP_SELLL)
SOrderLots=LOrderLots+OrderLots();
}
/aumento da ordem aberta
for(cot=0,cot<=total,cot++)
{ //1
//add posição para ordem longa
if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==verdadeiro) //se houver pedidos em aberto
{ if(OrderMagicNumber===123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- se a ordem aberta foi aberta pelo tipo pooh abd da EA é Longo
{ //3
for(int i=1;i<=15;i++)
{ if(Bid>=OrderOpenPrice()+i*0,5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0,5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4
{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5
se (bilhete>0)
{ //6
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("Pedido longo aberto : ",OrderOpenPrice()));
} //6
senão
Imprimir ("Erro de abertura de ordem longa : ",GetLastError());
intervalo;
} //5
} //4
retorno(0);
//add posição para ordem curta
if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELLL)
{ //7
for(int n2=1;n2<=15;n2++)
{ if(Ask(OrderOpenPrice()-(n2+1)*0,5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8
{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9
se (bilhete>0)
{ // 10
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("Pedido abreviado : ",OrderOpenPrice());
} // 10
senão
Imprimir ("Erro na abertura de ordem curta : ",GetLastError());
intervalo;
} //9
} //8
retorno(0);
} //7
} //3
} //2
} //1
retorno(0)
}[lang=pl]Olá, houve poucos erros, dois ") desequilibrados" na função OrderMagicNumer que você deve usar () no final. Na função for loop você deve usar ";" ao invés de ",".
Se você precisar encontrar parênteses desequilibrados, recomendo o Notepad ++ [/lang].