Escreverei um conselheiro sem custos - página 156

 
Valeriy Yastremskiy #:

Se quiser assistir no testador, pode remover o teste por um tempo mais tarde do que o tempo real. Isto está no OnInit. E não me lembro se em 4ka no testador um pedido de tempo irá devolver exactamente o tempo do testador. Acho que vai devolver a hora actual, por isso, no testador só se fazem encomendas de uma só vez e pronto. O pedido de hora local também dará a hora local actual.

Está nos 5k no testador um emulador de ambiente completo.

Obrigado pelo esclarecimento

 
O anterior, infelizmente, não cabia. Após um olhar mais atento à base de códigos, encontrei quase exactamente o que preciso


//+------------------------------------------------------------------+
//|                                                    i`lbeback.mq4 |
//|                                Copyright ? 2011, AM2 && Tiburond |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright ? 2011, AM2 && Tiburond"
#property link      "http://www.forexsystems.biz"

#define MAGIC  20110406

extern int  StopLoss    = 1300;   //???????? ??????
extern int  StartHour   = 21;     //??? ?????? ????????(???????????? ?????)
extern int  Distance    = 250;    //?????????? ?? ???? ??? ????????? ??????
extern int  Step        = 50;     //??? ????????? ???????
extern int  Count       = 4;      //?????????? ??????????????? ???????
extern int  Expiration  = 4;      //????? ????????? ??????
extern double  Lots     = 1;      //???
extern bool  MM         = true;   //?????????? ???????????????
extern double  TSP      = 5;      //????
extern bool  BU         = true;   //?????????? ?????? ??????? ? ????????? ? ??????? ???
extern int  BUHour      = 2;      //??? ????? ??????? ??????? ??????? ? ?????????

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int  init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int  deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int  start()
  {
   int  b=0,s=0,res;
   datetime  expiration = TimeCurrent()+3600*Expiration;
   double  BuyPrice=fND(Open[0]-Distance*Point);
   double  SellPrice=fND(Open[0]+Distance*Point);  
   for (int  i=OrdersTotal()-1;i>=0;i--)
     {
      if (OrderSelect(i, SELECT_BY_POS))
        {  
         if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
         if (OrderType()==OP_BUYLIMIT) b++;
         if (OrderType()==OP_SELLLIMIT) s++;
        }  
     }
   if (Hour()>BUHour && Hour()<StartHour && AllProfit()>0) ClosePositions();
   if (Hour()>BUHour && DayOfWeek() == 5) ClosePositions();  
   if (Hour()==StartHour && b<1 && DayOfWeek() != 5)
   for(i=1;i<=Count;i++)
    {
     {              
      res=OrderSend(Symbol(),OP_BUYLIMIT,fLots(),fND(Ask-(Distance*Point+i*Step*Point)),3,fND(BuyPrice-StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Blue);      
      Sleep(3000);
      if(res<0)
         {
            Print("??????: ",GetLastError());
         } else {
            RefreshRates();
         }    
     }
    }
        
   if (Hour()==StartHour && s<1 && DayOfWeek() != 5)
   for(i=1;i<=Count;i++)
    {  
     {              
      res=OrderSend(Symbol(),OP_SELLLIMIT,fLots(),fND(Bid+(Distance*Point+i*Step*Point)),3,fND(SellPrice+StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Red );
      Sleep(3000);
      if(res<0)
         {
            Print("??????: ",GetLastError());
         } else {
            RefreshRates();
         }    
     }
    }    
//----  
   return(0);
  }
//+------------------------------------------------------------------+
double  fND(double  d, int  n=-1)
  {  
   if (n<0) return(NormalizeDouble(d, Digits));
   return(NormalizeDouble(d, n));
  }
//+------------------------------------------------------------------+
double  fLots()
  {
   double  lot=Lots;
   double  lot_min =MarketInfo( Symbol(), MODE_MINLOT  );
   double  lot_max =MarketInfo( Symbol(), MODE_MAXLOT  );
   if (MM)
     {
      double  lot_step =MarketInfo( Symbol(), MODE_LOTSTEP );
      double  lotcost =MarketInfo( Symbol(), MODE_TICKVALUE );      
      double  dollarsPerPip=0.0;

      lot = AccountFreeMargin()*TSP/100.0;
      dollarsPerPip=lot/StopLoss;
      lot=fND(dollarsPerPip/lotcost, 2);      
      lot=fND(lot/lot_step, 0) * lot_step;
     }
   if (lot<lot_min) lot=lot_min;
   if (lot>lot_max) lot=lot_max;
   return(lot);
  }
//+------------------------------------------------------------------+
void  ClosePositions()
  {
   if(BU)
   for (int  i=OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol())
       {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
          {
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
          }
         Sleep(1000);
      }
    }
  }
//+------------------------------------------------------------------+
double  AllProfit()
  {
   double  Profit = 0;
   for (int  i=OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MAGIC) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) Profit += OrderProfit();
    }
   return (Profit);
  }
//+------------------------------------------------------------------+


Por favor, ajude-me a fazer correcções. Esta EA não fecha à força as ordens abertas. Gostaria que, juntamente com o tempo de fixação de limites, pudéssemos também definir a hora do seu fecho forçado.
Precisamos de TP e trall para os optimizar. Um centro comercial, para que todos os limites fossem fechados de uma forma pequena, mas que recolhessem o ruído da noite.
Советник по стратегии "Возврат".
Советник по стратегии "Возврат".
  • www.mql5.com
Ночной скальпер. EURUSD H1.
 
Olá. Quem pode ajudar com um EA para MT4. Preciso de uma EA sem qualquer truque para seguir encomendas feitas manualmente (com ou sem magia). Se uma ordem for fechada com um stop loss, a EA abrirá uma nova ordem na mesma direcção com o lote especificado, SL e TP.Se uma ordem for fechada com um take profit, a EA abrirá uma nova ordem na direcção oposta com o lote especificado, SL e TP. Talvez haja algumas soluções prontas, não consegui encontrar nada. Muito obrigado de antemão.
 
Anton Yakovlev:
Se tiver uma boa estratégia e estiver disposto a partilhá-la, posso escrever um EA.
Olá, preciso de um indicador que funcione com base nos movimentos das velas (padrão). é possível escrevê-lo, quanto e como passar o seu pedido.
 
Olá!
Pode escrever um conselheiro pips para mt4
Estratégia :
Estabelecer 2 ordens de limite de compra/venda de forma diferente a X distância uma da outra com paragem, tomada, arrasto.
Por exemplo:
Se o preço atingir qualquer um dos limites e fechar esta ordem na paragem ou tomada, o limite oposto é cancelado e 2 limites dirigidos de forma diferente são novamente estabelecidos.
Parâmetros EA:
Lote
Parar
Tomar
Rede de arrasto
Espaçamento Limite
Magia
Slippage
 
Ivan Bielyi #:
Estabelecendo 2 ordens de limite de compra/venda de forma diferente com um limite de spread em

Como posso limitar a propagação de ordens de limite?

 
Evgeny Belyaev #:

E como se pode limitar a propagação de limitadores?

Quer dizer, se o spread for superior a 5 pips, por exemplo, então não faça encomendas pendentes, mas se for demasiado problemático, pode saltar este parâmetro.
 
Ivan Bielyi #:
Quero dizer que se o spread for superior a 5 pontos então não devemos colocar ordens pendentes, mas se for muito problemático, podemos saltar este parâmetro.

Qual é o objectivo? Não serão executados agora (são limites). E quando chegar o momento de executar, a propagação será completamente diferente.

 
Evgeny Belyaev #:

Qual é o objectivo? Não serão executados agora (são limites). E quando chegar o momento de executar, a propagação será completamente diferente.

Mudo, então exactamente sem este parâmetro))))
 
Daniil Osipov #:
O que é preciso como base e quão complexo é o algoritmo.

Determina a tendência média móvel

TrendUp := MAvg[1]>TrendUp[1] ? max(Up,TrendUp[1]) : Up
Razão: