Scriverò un EA gratuitamente - pagina 156

 
Valeriy Yastremskiy #:

Se volete guardare nel tester, potete rimuovere il test per un tempo successivo a quello effettivo. Questo è in OnInit. E non ricordo se in 4ka nel tester una richiesta di tempo restituirà esattamente il tempo del tester. Penso che restituisca l'ora corrente, quindi nel tester ci sono solo ordini in una volta e basta. Anche la richiesta dell'ora locale darà l'ora locale corrente.

È nel 5k nel tester un emulatore di ambiente completo.

Grazie per il chiarimento

 
Il precedente, purtroppo, non andava bene. Dopo aver dato un'occhiata più da vicino al codebase, ho trovato quasi esattamente ciò di cui ho bisogno

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


Per favore, aiutatemi a fare delle correzioni. Questo EA non chiude con forza gli ordini aperti. Vorrei poter impostare il tempo di chiusura forzata insieme al tempo di impostazione dei limiti.
Ho bisogno di TP e trall per ottimizzarli. Un trall, in modo che tutti i limiti sarebbero stati chiusi in modo piccolo ma raccogliere il rumore notturno.
Советник по стратегии "Возврат".
Советник по стратегии "Возврат".
  • www.mql5.com
Ночной скальпер. EURUSD H1.
 
Salve. Chi può aiutare con un EA per MT4. Ho bisogno di un EA senza trucchi per seguire gli ordini inseriti manualmente (con o senza magia). Se un ordine viene chiuso su uno stop loss, l'EA aprirà un nuovo ordine nella stessa direzione con il lotto, SL e TP specificati.Se un ordine viene chiuso su un take profit, l'EA aprirà un nuovo ordine nella direzione opposta con il lotto, SL e TP specificati. Forse ci sono delle soluzioni già pronte, io non sono riuscito a trovare nulla. Molte grazie in anticipo.
 
Anton Yakovlev:
Se hai una buona strategia e sei disposto a condividerla, posso scrivere un EA.
Ciao, ho bisogno di un indicatore che funzioni sulla base dei movimenti delle candele (pattern). è possibile scriverlo, quanto e come passare la tua richiesta.
 
Ciao!
Puoi scrivere un consulente pips per mt4
Strategia :
Imposta 2 ordini buy limit/sell limit diversamente diretti a distanza X l'uno dall'altro con stop, take, trawl.
Per esempio:
Se il prezzo colpisce uno dei limiti e chiude questo ordine in stop o take, il limite opposto viene cancellato e vengono impostati nuovamente 2 limiti diversamente diretti.
Parametri EA:
Lotto
Fermare
Prendi
Reti a strascico
Limitare la spaziatura
Magia
Scivolamento
 
Ivan Bielyi #:
Impostazione di 2 ordini limite di acquisto/vendita diversamente diretti con un limite di spread su

Come posso limitare lo spread sugli ordini limite?

 
Evgeny Belyaev #:

E come si può limitare lo spread sui limitatori?

Voglio dire, se lo spread è più alto di 5 pip, per esempio, allora non piazzare ordini pendenti, ma se è un problema troppo grande, puoi saltare questo parametro.
 
Ivan Bielyi #:
Voglio dire che se lo spread è superiore a 5 punti allora non dovremmo piazzare ordini pendenti, ma se è molto problematico, possiamo saltare questo parametro.

Qual è il punto? Non saranno eseguiti ora (sono limiti). E quando arriva il momento di eseguire, lo spread sarà completamente diverso.

 
Evgeny Belyaev #:

Qual è il punto? Non saranno eseguiti ora (sono limiti). E quando arriva il momento di eseguire, lo spread sarà completamente diverso.

Muto, quindi esattamente senza questo parametro)))
 
Daniil Osipov #:
Cosa prende come base e quanto è complesso l'algoritmo.

Determina la tendenza della media mobile

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