Como codificar? - página 34

 

Precisa de ajuda para editar parte da EuroX2_sl EA .......

Olá a todos os programadores,

Eu sou novo no comércio forex e também sou novo neste fórum. A primeira vez que estou aprendendo são 10 pontos 3, então, EuroX2_sl, ampliado de 10 pontos 3 EA script. Depois de fazer alguns testes, para mim este EA é bastante bom para novatos como eu para aprender. Quando teste para frente, ele abriu bem a Posição Aberta, mas não fechou a Posição como eu preciso (mesmo eu já condicionado) quando o mercado se inverte ou quando a tendência muda. Talvez, algo esteja errado com o código ( porque' eu não sou um programador ) e acho que preciso da ajuda de qualquer um de vocês para resolvê-lo. Poderia, por favor, verificar qual parte pode estar errada?

Acho que a posição OPEN está bem, pois dá lucro, mas o problema é com a POSIÇÃO FECHADA, pois não FECHADA ( COMPRAR ou VENDER ) mesmo quando o indicador existe e isto faz com que as perdas flutuantes sejam bastante.......

Qualquer pessoa que soubesse disso, por favor, me ajude a editar este código.......

O código como eu fiz é :

-------- parte do script da EuroX2_sl estendido de 10 pontos 3 como eu acho que é para a posição próxima -------

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

// é 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

OrderType()<=OP_BUY &&

OrderType()>=OP_SELL &&

OrderType()>=OP_BUY &&

OrderSymbol()==Symbol()) // verificar o símbolo

{

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

if(OrderType()==OP_BUY) // posição longa é aberta

{

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

//+ CONDIÇÃO PARA POSIÇÃO PRÓXIMA

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

//+--------------- FECHAR POSIÇÃO DE COMPRA ----------------------------

se ( Stoch_M15_Cu < Stoch_Sig_M15_Cu )

//+ principal estocástico < sinal estocástico

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

{

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);

}

}

}

}

//+--------------- FECHAR POSIÇÃO DE VENDA --------------------------------

senão // ir para a posição curta

{ //+ NÃO REMOVER

if(OrderType()==OP_SELL) // posição curta é aberta

{

}

// deve ser fechado?

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

se ( Stoch_M15_Cu > Stoch_Sig_M15_Cu )

//+ stochastic main > stochastic signal

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

{

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+Poi nt*TrailingStop,OrderTakeProfit(),0,Red);

retornar(0);

}

}

}

}

}

}

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

Obrigado,

fxgroup

 

Quais são os melhores indicadores semanais/diários

Esta pergunta poderia ser dirigida a comerciantes experientes.

Quais são os indicadores confiáveis (já testados) que poderiam nos dar uma idéia sobre o movimento de tendência principal durante:

1- Semana futura

2- Dia futuro (ou dia seguinte)

Sabendo que eu não estou pedindo níveis de entrada B/S.

Nota: Uma vez definida a direção do movimento para a próxima semana, acho que podemos construir uma base para quando entrar.

Obrigado

 

pergunta mql

Código:

// se abrimos posições, cuidamos deles

// com a modificação da perda de carga

cnt=OrdensTotal();

while(cnt>=0)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed===False)

{

Imprimir("Ticket ",OrderTicket()," modificado");// por que está escrito aqui antes de modificar os pedidos(como eu o entendo)?

se (OrderType()==OP_SELL)

{

se (TrailingStop>0)

{

if ((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))

{

if (OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple);

retorno(0);

Olá a todos, alguém poderia me explicar porque :Imprimir("Ticket ",OrderTicket()," modificado"); é escrito antes de modificar o pedido. Como eu entendi, ele imprimirá"bilhete de pedido modificado" mesmo que não tenha sido modificado. É um pedaço de código terminador.

Obrigado.

 
Flytox:
Código:

// se abrimos posições, cuidamos deles

// com a modificação da perda de carga

cnt=OrdensTotal();

while(cnt>=0)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed===False)

{

Imprimir("Ticket ",OrderTicket()," modificado");// por que está escrito aqui antes de modificar os pedidos(como eu o entendo)?

se (OrderType()==OP_SELL)

{

se (TrailingStop>0)

{

if ((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))

{

if (OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple);

retorno(0);

Olá a todos, alguém poderia me explicar porque :Imprimir("Ticket ",OrderTicket()," modificado"); é escrito antes de modificar o pedido. Como eu entendi, ele imprimirá "bilhete de pedido modificado" mesmo que não tenha sido modificado. É um pedaço de código terminador.

Obrigado.

Você está certo, deve ser escrito após a modificação ou a mensagem deve ser: "Trying to modify order : ",OrderTicket()

 

obrigado Kalenzo, estou aprendendo mql e seus artigos e respostas são muito úteis, obrigado mais uma vez.

 

Talvez seja suficiente se você fizer as quatro edições a seguir:

1. Comente a linha 102, para ser

//IsTrade = True;[/PHP]

2. Change blank line 104 to be

if ( Bid > OrderOpenPrice() - GAP * Point ) IsTrade = true;

3. Change blank line 120 to be

[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;

4. Adicione a variável "GAP" (extern int), que é o número definido de pips onde o "hedge" deve entrar.

No entanto, alguém já havia assinalado antes, em algum lugar neste fórum, que não se pode realmente "sebe" no mesmo símbolo; é praticamente o mesmo que tomar a perda. Talvez seja melhor aceitar a perda e depois voltar quando o preço se inverter novamente....

 
ralph.ronnquist:
Talvez seja suficiente se você fizer as quatro edições a seguir:

1. Comente a linha 102, para ser

//IsTrade = True;[/PHP]

2. Change blank line 104 to be

if ( Bid > OrderOpenPrice() - GAP * Point ) IsTrade = true;

3. Change blank line 120 to be

[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;

4. Adicione a variável "GAP" (extern int), que é o número definido de pips onde o "hedge" deve entrar.

No entanto, alguém já havia assinalado antes, em algum lugar neste fórum, que você não pode realmente "se proteger" no mesmo símbolo; é praticamente o mesmo que assumir a perda. Talvez seja melhor assumir a perda e depois voltar quando o preço se inverter novamente....

Não ajudou. E, para ser mais específico, o que eu estou realmente querendo que minha EA faça é o seguinte:

A EA entrará em uma operação de compra/venda com base em certas condições. Uma vez que o negócio inicial é entrado, às vezes pode levar de três a cinco dias até que finalmente feche no takeprofit. Enquanto isso, durante esse período de três a cinco dias, pode haver várias oportunidades comerciais na direção oposta. Quero que a EA aproveite essas oportunidades enquanto deixa o comércio original aberto, porque eventualmente fechará com lucro. Essas oportunidades comerciais adicionais na direção oposta à do comércio original serão tecnicamente uma cobertura contra o comércio original, mesmo que eventualmente também se fechem com lucro. Para ser claro, porém, eu ainda quero que a EA tenha apenas um comércio aberto na mesma direção. Portanto, o máximo de negócios abertos ao mesmo tempo seria uma compra e uma venda.

Espero que isto ajude!

Obrigado por sua resposta.

 

Hmm; eu não experimentei sua EA, mas ao ler a lógica, parece-me que a única coisa que impede uma venda posterior após uma compra é que "IsTrade" é verdade. (Exceto que não abrirá uma Venda ao mesmo tempo em que abre uma Compra)

Portanto, se você quiser que a lógica Sell se aplique incondicionalmente, eu teria pensado que minha edição (1) apenas -- esqueça 2-4 -- faria o truque. Ou removeria a lógica "IsTrade".

Embora haja a lógica subordinada com "TickCheck" e "BarCount", que impede outro comércio no mesmo tick ou no mesmo bar, mas presumo que você queira que isso se aplique ainda.

É claro que não posso dizer muito sobre a parte da sinalização, que você omitiu. Por exemplo, se levantar um "Sell_Signal" leva em conta o "BuyOrders", então há mais o que fazer.

 

Fazer Intersting de codificação

Antes de pressionar VOLTAR, você poderia me ajudar, por favor?

Sou novo em indicadores de codificação, mas sei como codificar EA's. Não 100%, mas bom o suficiente.

De qualquer forma, eu estava me perguntando se alguém gentil me ajudaria.

Por favor, me explique cada linha e me dê um exemplo.

p.s. É uma parte de um código para MACD:

int start()

{

int limit;//what does Limit equal,0?

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++)//i<0?

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

//---- signal line counted in the 2-nd buffer

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

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//---- done

return(0);

}

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

Eu ficaria muito feliz se alguém ou mais pessoas me ajudassem, e me dessem dicas de indicadores de codificação, ou algo do tipo.

Obrigado,

Dan.

 

Como executar um roteiro dentro de um EA?

Hi,

Eu gostaria de saber como executar um roteiro em diretório de roteiros dentro de um EA.

Se (condição verdadeira)

{

Executar Roteiro;

}

Thx de antemão

Cumprimentos

Jimmy