Ajuda na codificação - página 469

 

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!

Arquivos anexados:
 
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:

Arquivos anexados:
zz.gif  76 kb
 

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!

 
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.

 
Jovager:
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:

Arquivos anexados:
jo.gif  90 kb
 

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?

 
sunshineh:
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?