Ajuda na codificação - página 667

 
preciso de alguém que me ajude a transformar este crossover ema em um EA. abrir comprar quando a seta azul aparecer e vender quando a seta vermelha aparecer sair do comércio quando a vela ao lado da seta fechar. pls deixar o SL E TP ser ajustável e o MAs . eu só quero usá-lo para trocar a vela
 
dotmund:
preciso de alguém que me ajude a transformar este crossover ema em um EA. abrir comprar quando a seta azul aparecer e vender quando a seta vermelha aparecer sair do comércio quando a vela ao lado da seta fechar. pls deixar o SL E TP ser ajustável e o MAs . eu só quero usá-lo para trocar a vela
Verifique este post : https://www.mql5.com/en/forum/180648/page940
 
mladen:

Para o tempo da vela, é melhor usar algum indicador especializado para isso (como o anexo)

Quanto ao separador de período: já é nmc mas você pode querer usar o anexo (deve ser mais leve na cpu)

Muito obrigado. Estou tentando acrescentar a opção de "BarsLimit", mas não tive sucesso. Poderia me ajudar, por favor? Muito obrigado pelo seu tempo.
Arquivos anexados:
 
Entropy:
Muito obrigado. Estou tentando acrescentar a opção de "BarsLimit", mas não tive sucesso. Poderia me ajudar, por favor? Muito obrigado pelo seu tempo.

Entropia

Aqui está uma versão com essa opção adicionada

Arquivos anexados:
 

Hello mladen você pode me ensinar a resolver a declaração .

Isto é o que eu recebo o aviso .

declaration of 'MinLots' hides global declaration at line 93    
declaration of 'MaxLots' hides global declaration at line 94    
declaration of 'Magic' hides global declaration at line 118     
void CalculateMM()
{
   double MinLots=MarketInfo(Symbol(),MODE_MINLOT);
   double MaxLots=MarketInfo(Symbol(),MODE_MAXLOT);
   Lots=AccountFreeMargin()/100000*RiskPercent;
   Lots=MathMin(MaxLots,MathMax(MinLots,Lots));
   if(MinLots<0.1)Lots=NormalizeDouble(Lots,2);
   else
   {
     if(MinLots<1)Lots=NormalizeDouble(Lots,1);
     else Lots=NormalizeDouble(Lots,0);
   }
   if(Lots<MinLots)Lots=MinLots;
   if(Lots>MaxLots)Lots=MaxLots;
   return;



int CloseBuyOrders(int Magic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY)
      {
       ClTicket= OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}

int CloseBuyOrdersHiddenTP(int Magic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+TakeProfit*Point))
      {
        ClTicket=OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}

Obrigado .

 
stevenpun:

Hello mladen você pode me ensinar a resolver a declaração .

Isto é o que eu recebo o aviso .



Obrigado .

Primeiro isto :

void CalculateMM()
{
   double tMinLots=MarketInfo(Symbol(),MODE_MINLOT);
   double tMaxLots=MarketInfo(Symbol(),MODE_MAXLOT);
   Lots=AccountFreeMargin()/100000*RiskPercent;
   Lots=MathMin(tMaxLots,MathMax(tMinLots,Lots));
   if(tMinLots<0.1)Lots=NormalizeDouble(Lots,2);
   else
   {
     if(tMinLots<1)Lots=NormalizeDouble(Lots,1);
     else Lots=NormalizeDouble(Lots,0);
   }
   if(Lots<tMinLots)Lots=tMinLots;
   if(Lots>tMaxLots)Lots=tMaxLots;
   return;

e isto

int CloseBuyOrders(int tMagic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==tMagic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY)
      {
       ClTicket= OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}

int CloseBuyOrdersHiddenTP(int tMagic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==tMagic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+TakeProfit*Point))
      {
        ClTicket=OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}
 

Olá Mladen,

Você se importaria comigo com este código, senhor, sobre o que precisa ser consertado?

Além disso, quando o prazo for maior, É possível mudar de

====> 1Min ~ 30 Min ==> a cada 10 pips

====> 1 Hora ======> a cada 50 pips

====> 4 Horas, Diariamente ======> a cada 100 pips

====> Semanal, Mensal ====> a cada 1000 pips

Os retângulos são desejados em vez de linhas senhor.

#janela_do_cartão_indicador de propriedade

#define ONDA_BEGINS 0

#define ONDA_CONTAINS 1



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

//| Função de inicialização do indicador personalizado |

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

int init()

{

//---- indicadores


//----

retorno(0);

}

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

//| Função de desinicialização de indicador personalizada |

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

int deinit()

{

//----

para (int ix = 0; ix < nLines; ix++) // apagar minhas linhas horizontais

{

ObjectDelete("tensLines "+ix);

}


//----

retorno(0);

}

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

//| Função de iteração de indicador personalizada |

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

int start()

{

int nLines = 40; // Número total de linhas a desenhar

Intervalo de linha dupla = 0,0010; // Intervalo entre linhas

norma duplaPreço = NormalizarDuplo(Fechar[1],3); // Preço atual é arredondado para o "10" mais próximo


para (int ix = 0; ix < nLines; ix++) // Número de vezes que o loop span

{

if(ObjectFind("tensLines "+ix) < 0)

ObjectCreate("tensLines "+ix, OBJ_HLINE, 0, 0, normPreço+((ix-(nLines/2))*lineInterval)); // Coloque metade acima e metade abaixo do preço atual


else ObjectSet("tensLines "+ix, OBJPROP_PRICE1, normPreço+((ix-(nLines/2))*lineInterval));

ObjectSet("tensLines "+ix,OBJPROP_COLOR,DarkSlateGray); // Faça as linhas parecerem melhores

}

//----

retorno(0);

}

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


void ObjectNameDeleteAll(string name, int where=ONDA_BEGINS, int type=EMPTY)

{

for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--)

{

string on = ObjectName(iObj);

int iPos = StringFind(on, nome);

se (iPos < 0) continuar;

if (iPos > 0 && where == ONDA_BEGINS) continua;

if (type == EMPTY) ObjectDelete(on);

else if (type === ObjectType(on)) ObjectDelete(on);

}

}




//---

 
murnathan32:

Olá Mladen,

Você se importaria comigo com este código, senhor, sobre o que precisa ser consertado?

Além disso, quando o prazo for maior, É possível mudar de

====> 1Min ~ 30 Min ==> a cada 10 pips

====> 1 Hora ======> a cada 50 pips

====> 4 Horas, Diariamente ======> a cada 100 pips

====> Semanal, Mensal ====> a cada 1000 pips

Os retângulos são desejados em vez de linhas senhor.

#janela_do_cartão_indicador de propriedade

#define ONDA_BEGINS 0

#define ONDA_CONTAINS 1



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

//| Função de inicialização do indicador personalizado |

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

int init()

{

//---- indicadores


//----

retorno(0);

}

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

//| Função de desinicialização de indicador personalizada |

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

int deinit()

{

//----

para (int ix = 0; ix < nLines; ix++) // apagar minhas linhas horizontais

{

ObjectDelete("tensLines "+ix);

}


//----

retorno(0);

}

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

//| Função de iteração de indicador personalizada |

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

int start()

{

int nLines = 40; // Número total de linhas a desenhar

Intervalo de linha dupla = 0,0010; // Intervalo entre linhas

norma duplaPreço = NormalizarDuplo(Fechar[1],3); // Preço atual é arredondado para o "10" mais próximo


para (int ix = 0; ix < nLines; ix++) // Número de vezes que o loop span

{

if(ObjectFind("tensLines "+ix) < 0)

ObjectCreate("tensLines "+ix, OBJ_HLINE, 0, 0, normPreço+((ix-(nLines/2))*lineInterval)); // Coloque metade acima e metade abaixo do preço atual


else ObjectSet("tensLines "+ix, OBJPROP_PRICE1, normPreço+((ix-(nLines/2))*lineInterval));

ObjectSet("tensLines "+ix,OBJPROP_COLOR,DarkSlateGray); // Faça as linhas parecerem melhores

}

//----

retorno(0);

}

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


void ObjectNameDeleteAll(string name, int where=ONDA_BEGINS, int type=EMPTY)

{

for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--)

{

string on = ObjectName(iObj);

int iPos = StringFind(on, nome);

se (iPos < 0) continuar;

if (iPos > 0 && where == ONDA_BEGINS) continua;

if (type == EMPTY) ObjectDelete(on);

else if (type === ObjectType(on)) ObjectDelete(on);

}

}




//---

Tente assim

#property indicator_chart_window

#define  ONDA_BEGINS   0

#define  ONDA_CONTAINS 1


    int nLines = 40;                                   // Number of total line to draw

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

//| Custom indicator initialization function                         |

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

int init()

  {

//---- indicators


//----

   return(0);

  }

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

//| Custom indicator deinitialization function                       |

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

int deinit()

  {

//----

    for (int ix = 0; ix < nLines; ix++) // delete my horizontal lines

      {

      ObjectDelete("tensLines"+ix);

      }


//----

   return(0);

  }

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

//| Custom indicator iteration function                              |

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

int start()

  {


   double lineInterval = 0.0010;                      // Interval between lines

   double normPrice = NormalizeDouble(Close[1],3);    // Current price is rounded to nearest "10"


   for (int ix = 0; ix < nLines; ix++)                // Loop span number of times

      {

      if(ObjectFind("tensLines"+ix) < 0) 

         ObjectCreate("tensLines"+ix, OBJ_HLINE, 0, 0, normPrice+((ix-(nLines/2))*lineInterval));    // Place half above and half below the current price


      else ObjectSet("tensLines"+ix, OBJPROP_PRICE1, normPrice+((ix-(nLines/2))*lineInterval));

      ObjectSet("tensLines"+ix,OBJPROP_COLOR,DarkSlateGray);      // Make the lines look better

      }

 

//----

   return(0);

  }

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


void ObjectNameDeleteAll(string name, int where=ONDA_BEGINS, int type=EMPTY)

{

    for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--)

    {

        string on   = ObjectName(iObj);

        int    iPos = StringFind(on, name);

        if (iPos < 0)                         continue;

        if (iPos > 0 && where == ONDA_BEGINS) continue;

        if      (type == EMPTY)         ObjectDelete(on);

        else if (type == ObjectType(on)) ObjectDelete(on);

    }

}



 
ei caras querendo contratar alguém para escrever algum código em python para mim, dispostos a pagar por algum trabalho ou se alguém o faz de graça isso é legal demais rs. mas é só me ligar quando quiser e me avisar se alguém puder me ajudar, mal entrarei em mais detalhes assim que eu tiver a atenção de alguém. estará nas bandas de Bollinger principalmente com alguns outros indicadores. obrigado por toda a ajuda caras!
 
mladen:

Tente assim

Uau. Você é o homem. Obrigado mladen pelas bênçãos.

Mais um pedido. Você pode fazer a grade em retângulos como o anexo/pic abaixo. Por exemplo, 10 pips por retângulo. Faça o retângulo projetar o futuro.

Sinto que é mais fácil para os olhos do que a grade padrão. E leva meio segundo para ver para quantos pips você está olhando.

    ObjectCreate("Rect02", OBJ_RECTANGLE, 0, Time[0], Bid, Time[Bars], (Bid+0.0010) ); //make bar above cur price
      ObjectSet("Rect02", OBJPROP_COLOR, Silver );
      }
//================= Move the Rect with new ticks/candles ===========================
   
   else {
      ObjectMove("Rect01", 0, Time[0], WindowPriceMin()*0.95);
      ObjectMove("Rect02", 0, Time[0], Bid); 

}

Arquivos anexados: