![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
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.
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
2. Change blank line 104 to be
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....
Talvez seja suficiente se você fizer as quatro edições a seguir:
1. Comente a linha 102, para ser
2. Change blank line 104 to be
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.![](https://c.mql5.com/forextsd/smiles/face.png)
De qualquer forma, eu estava me perguntando se alguém gentil me ajudaria.
Por favor, me explique cada linha e me dê um exemplo.![](https://c.mql5.com/forextsd/smiles/confused_smile.png)
p.s. É uma parte de um código para MACD:
{
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.![](https://c.mql5.com/forextsd/smiles/face.png)
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