![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Olá Trader.
Alguém pode me ajudar e sabe quais são os Indicadores que estão nestes dois arquivos .ex4?!
Com os melhores cumprimentos, oink!
Olá Trader.
Alguém pode me ajudar e sabe quais são os Indicadores que estão nestes dois arquivos .ex4?!
Com os melhores cumprimentos, oink!Sinais de alerta é um simples ziguezague feito para mostrar setas:
Obrigadomladen, eu conheço seu nome de cerca de 10000 Indikators! ;-)
Então eu procuro no Google o indicador zigzag+arrows.
O outro é indefinido?
Com os melhores cumprimentos, oink!
Obrigadomladen, eu conheço seu nome de cerca de 10000 Indikators! ;-)
Depois procuro no Google o indicador zig-zag+arrows.
O outro é indefinido?
Com os melhores cumprimentos, oink!Francamente, eu não consegui reconhecer o outro. Desculpe
Olá,
Eu não entendo porque esta e-A não funciona, não há nada no diário nem na guia de especialistas, mas não há nenhum comércio.
Obrigado de antemão.
Jo
externo int magicNum=200;
duplo TakeProfit externo = 50;
duplo externo Lots = 0,01;
duplo Exterior TrailingStop = 30;
//duplo externo MACDOpenLevel=3;
//externo duplo MACDCloseLevel=2;
duplo externo MATrendPeriod=5;
int start()
{
duplo MaCurrent,MaPrevious,MavPrevious;
duplo fechamento=iClose(Símbolo(),0,0);
double vclose=iClose(Símbolo(),0,1);
double vvclose=iClose(Symbol(),0,2);
// duplo MacdCurrent, MacdPrevious, SignalCurrent;
// duplo SignalPrevious, MaCurrent, MaPrevious;
// duplo RSIj,RSIv;
int cnt, ticket, total;
// verificações iniciais de dados
// é importante ter certeza de que o especialista trabalha com um
// gráfico e o usuário não cometeu nenhum erro na configuração externa
// variáveis (Lots, StopLoss, TakeProfit,
// TrailingStop) em nosso caso, nós verificamos TakeProfit
// em um gráfico de menos de 100 barras
if(Bars<100)
{
Impressão ("barras com menos de 100");
retornar(0);
}
if(TakeProfit<10)
{
Imprimir ("TakeProfit menos de 10");
retornar(0); // verificar TakeProfit
}
// para simplificar a codificação e acelerar o acesso
// os dados são colocados em variáveis internas
// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
// MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
// SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
// SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1); MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);
MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2);
duplo PlusHaut =High;
duplo PlusBas =Baixo;
duplo TiersHaut =PlusBas +((PlusHaut-PlusBas)*0,66);
duplo TiersBas =PlusBas +((PlusHaut-PlusBas)*0,33); duplo TiersBas =PlusBas +((PlusHaut-PlusBas)*0,33);
// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);
// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1);
total=OrdensTotal();
if(total<1)
{ // nenhuma ordem aberta identificada
if(AccountFreeMargin()<(1000*Lots))
{
Imprimir("Nós não temos dinheiro. Margem Livre = ", AccountFreeMargin());
devolução(0);
}
// verificar a possibilidade de posição longa (BUY)
se
// (RSIv30)
( MaCurrent >MaPrevious)
// && (MaPreviousvclose || vclose>vvvclose))
// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&
// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA",magicNum,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Imprimir("Pedido aberto : ",OrderOpenPrice());
}
else Print("Erro na abertura do pedido de compra : ",GetLastError());
retornar(0);
}
// verificar a possibilidade de uma posição curta (SELL)
// if (RSIv>70 && RSIj<70)
se ( MaCurrent <MaPrevious)
// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvvclose))
// (MacdCurrent>0 && MacdCurrentSignalPrevious &&
// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "MA",magicNum,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Imprimir("Pedido de venda aberto : ",OrderOpenPrice());
}
else Print("Erro na abertura do pedido de VENDA : ",GetLastError());
retornar(0);
}
retorno(0);
}
// é importante entrar no mercado corretamente,
// mas é mais importante sair corretamente...
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // verificar a posição aberta
OrderSymbol()==Symbol()) // verificar o símbolo
{
if(OrderType()==OP_BUY) // posição longa é aberta
{
// deve ser fechado?
// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&
// MacdCurrent>(MACDCloseLevel*Point))
// if (RSIv>70 && RSIj<70)
se ( MaCurrent <MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // posição fechada
retornar(0); // sair
}
// verificar a parada de trilha
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
retornar(0);
}
}
}
}
senão // ir para a posição curta
{
// deve ser fechado?
// if(MacdCurrentSignalCurrent &&
// MacdPrevious(MACDCloseLevel*Point))
se
// (RSIv30)
( MaCurrent >MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // posição fechada
retornar(0); // sair
}
// verificar a parada de trilha
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||| (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
retornar(0);
}
}
}
}
}
}
retorno(0);
}
// o fim.
Olá,
Eu não entendo porque esta e-A não funciona, não há nada no diário nem na guia de especialistas, mas não há nenhum comércio.
Obrigado de antemão.
Jo
externo int magicNum=200;
duplo TakeProfit externo = 50;
duplo externo Lots = 0,01;
duplo Exterior TrailingStop = 30;
//duplo externo MACDOpenLevel=3;
//externo duplo MACDCloseLevel=2;
duplo externo MATrendPeriod=5;
int start()
{
duplo MaCurrent,MaPrevious,MavPrevious;
duplo fechamento=iClose(Símbolo(),0,0);
double vclose=iClose(Símbolo(),0,1);
double vvclose=iClose(Symbol(),0,2);
// duplo MacdCurrent, MacdPrevious, SignalCurrent;
// duplo SignalPrevious, MaCurrent, MaPrevious;
// duplo RSIj,RSIv;
int cnt, ticket, total;
// verificações iniciais de dados
// é importante ter certeza de que o especialista trabalha com um
// gráfico e o usuário não cometeu nenhum erro na configuração externa
// variáveis (Lots, StopLoss, TakeProfit,
// TrailingStop) em nosso caso, nós verificamos TakeProfit
// em um gráfico de menos de 100 barras
if(Bars<100)
{
Impressão ("barras com menos de 100");
retornar(0);
}
if(TakeProfit<10)
{
Imprimir ("TakeProfit menos de 10");
retornar(0); // verificar TakeProfit
}
// para simplificar a codificação e acelerar o acesso
// os dados são colocados em variáveis internas
// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
// MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
// SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
// SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1); MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);
MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2);
duplo PlusHaut =High;
duplo PlusBas =Baixo;
duplo TiersHaut =PlusBas +((PlusHaut-PlusBas)*0,66);
duplo TiersBas =PlusBas +((PlusHaut-PlusBas)*0,33); duplo TiersBas =PlusBas +((PlusHaut-PlusBas)*0,33);
// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);
// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1);
total=OrdensTotal();
if(total<1)
{ // nenhuma ordem aberta identificada
if(AccountFreeMargin()<(1000*Lots))
{
Imprimir("Nós não temos dinheiro. Margem Livre = ", AccountFreeMargin());
devolução(0);
}
// verificar a possibilidade de posição longa (BUY)
se
// (RSIv30)
( MaCurrent >MaPrevious)
// && (MaPreviousvclose || vclose>vvvclose))
// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&
// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA",magicNum,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Imprimir("Pedido aberto : ",OrderOpenPrice());
}
else Print("Erro na abertura do pedido de compra : ",GetLastError());
retornar(0);
}
// verificar a possibilidade de uma posição curta (SELL)
// if (RSIv>70 && RSIj<70)
se ( MaCurrent <MaPrevious)
// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvvclose))
// (MacdCurrent>0 && MacdCurrentSignalPrevious &&
// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "MA",magicNum,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Imprimir("Pedido de venda aberto : ",OrderOpenPrice());
}
else Print("Erro na abertura do pedido de VENDA : ",GetLastError());
retornar(0);
}
retorno(0);
}
// é importante entrar no mercado corretamente,
// mas é mais importante sair corretamente...
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELLL && // verificar a posição aberta
OrderSymbol()==Symbol()) // verificar o símbolo
{
if(OrderType()==OP_BUY) // posição longa é aberta
{
// deve ser fechado?
// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&
// MacdCurrent>(MACDCloseLevel*Point))
// if (RSIv>70 && RSIj<70)
se ( MaCurrent <MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // posição fechada
retornar(0); // sair
}
// verificar a parada de trilha
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
retornar(0);
}
}
}
}
senão // ir para a posição curta
{
// deve ser fechado?
// if(MacdCurrentSignalCurrent &&
// MacdPrevious(MACDCloseLevel*Point))
se
// (RSIv30)
( MaCurrent >MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // posição fechada
retornar(0); // sair
}
// verificar a parada de trilha
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||| (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
retornar(0);
}
}
}
}
}
}
retorno(0);
}
// o fim.Funciona em meus testes de costas:
Oi mladen,
Quero fazer uma venda parcial de minha ordem de lucros com o mesmo valor que eu Variável "LossValue".
Tentei calcular os lotes nas seguintes etapas:
-Ler o lucro real do profitOrder
-Calcule o passo LucroPerLucro
-Calcule o Valor de Perda/ProfitPerLotstep em torno do resultado do lote para cima
-Mas se eu vender este Lotsize o valor do lucro é muito pequeno (acho que por causa do spread)
Qual é a forma correta de cálculo?
Aqui vai uma pergunta adicional.
Se eu fizer um fechamento parcial, o restante da posição é automaticamente optado pelo Corretor. Antes de dar à Posição um comentário para diferenciar essa Posição. Como posso reconhecê-la agora?
Aqui está uma pergunta adicional. Se eu fizer um fechamento parcial, então o resto da posição é automaticamente optado pelo Corretor. Antes de dar à Posição um comentário para diferenciar essa Posição. Como posso reconhecê-la agora?
sunshineh
Você não pode fazer nada
Somente o corretor pode alterar o campo de comentários de um pedido. Talvez um corretor mude o comentário na forma como ele diz algo como "de nnnn" onde nnnn é o número do bilhete anterior, mas na maioria dos casos eles não o fazem, então você fica sem nenhuma solução que possa identificar de forma única o pedido anterior em casos como esse
Obrigado mladen! Você tem uma solução para o meu posto antes com o cálculo do tamanho do lote de acordo com um valor definido como 100 EUR?