Je rédigerai un conseiller gratuitement - page 156

 
Valeriy Yastremskiy #:

Si vous voulez regarder dans le testeur, vous pouvez supprimer le test pour une heure ultérieure à l'heure réelle. C'est dans OnInit. Et je ne me souviens pas si dans 4ka dans le testeur une demande de temps retournera exactement le temps du testeur. Je pense qu'il renverra l'heure actuelle, donc dans le testeur il y a juste des commandes en une fois et c'est tout. La demande de l'heure locale donnera également l'heure locale actuelle.

C'est dans le 5k dans le testeur un émulateur d'environnement complet.

Merci pour la clarification

 
La précédente, malheureusement, ne convenait pas. Après avoir examiné de plus près la base de code, j'ai trouvé presque exactement ce dont j'ai besoin

https://www.mql5.com/ru/code/10236.

//+------------------------------------------------------------------+
//|                                                    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);
  }
//+------------------------------------------------------------------+


S'il vous plaît, aidez-moi à faire des corrections. Cet EA ne ferme pas de force les ordres ouverts. J'aimerais pouvoir définir l'heure de fermeture forcée en même temps que l'heure de fixation des limites.
J'ai besoin de TP et de trall pour les optimiser. Un trall, de sorte que toutes les limites seraient fermées de manière modeste mais collecter le bruit nocturne.
Советник по стратегии "Возврат".
Советник по стратегии "Возврат".
  • www.mql5.com
Ночной скальпер. EURUSD H1.
 
Bonjour. Qui peut vous aider avec un EA pour MT4. J'ai besoin d'un EA sans trucage pour suivre les ordres passés manuellement (avec ou sans magie). Si un ordre est fermé sur un stop loss, l'EA ouvre un nouvel ordre dans la même direction avec le lot, le SL et le TP spécifiés.Si un ordre est fermé sur un take profit, l'EA ouvre un nouvel ordre dans la direction opposée avec le lot, le SL et le TP spécifiés. Il existe peut-être des solutions toutes faites, mais je n'ai rien trouvé. Merci d'avance.
 
Anton Yakovlev:
Si vous avez une bonne stratégie et que vous êtes prêt à la partager, je peux écrire un EA.
Bonjour, j'ai besoin d'un indicateur qui fonctionne sur la base des mouvements des bougies (pattern). est-il possible de l'écrire, combien et comment passer votre demande.
 
Bonjour !
Pouvez-vous écrire un conseiller pips pour mt4
Stratégie :
Placez 2 ordres d'achat limite/vente limite dirigés différemment à une distance X l'un de l'autre avec stop, take, trawl.
Par exemple :
Si le prix atteint l'une des limites et ferme cet ordre au stop ou à la prise, la limite opposée est annulée et 2 limites dirigées différemment sont à nouveau fixées.
Paramètres de l'EA :
Lot
Stop
Prenez
Chalut
Espacement des limites
Magie
Dérapage
 
Ivan Bielyi #:
Mise en place de 2 ordres limites d'achat/vente dirigés différemment avec une limite de spread sur

Comment limiter le spread sur les ordres à cours limité ?

 
Evgeny Belyaev #:

Et comment limiter l'écart sur les limiteurs ?

Je veux dire que si le spread est supérieur à 5 pips, par exemple, il ne faut pas passer d'ordres en attente, mais si cela pose trop de problèmes, vous pouvez ignorer ce paramètre.
 
Ivan Bielyi #:
Je veux dire que si l'écart est supérieur à 5 points, nous ne devrions pas placer d'ordres en attente, mais si c'est très problématique, nous pouvons ignorer ce paramètre.

Quel est l'intérêt ? Ils ne seront pas exécutés maintenant (ce sont des limites). Et lorsque le moment sera venu de l'exécuter, la répartition sera complètement différente.

 
Evgeny Belyaev #:

Quel est l'intérêt ? Ils ne seront pas exécutés maintenant (ce sont des limites). Et lorsque le moment sera venu de l'exécuter, la répartition sera complètement différente.

Idiot, alors exactement sans ce paramètre))))
 
Daniil Osipov #:
Ce qu'il prend comme base et la complexité de l'algorithme.

Détermine la tendance de la moyenne mobile

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