Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 221

 
penzacity:

J'ai trouvé sur le forum que cela est possible : https://www.mql5.com/ru/forum/141467.

Et où puis-je trouver un émulateur de tique ?

Il n'est donc pas possible d'implémenter l'émulation des tics le week-end avec MQL4 ???

C'est sur la page dont vous avez donné le lien dans votre message. Lisez-le attentivement.
 
artmedia70:
Juste sur cette page, dont le lien est indiqué dans votre message. Lisez-le plus attentivement.

Oui, j'étais stupide. J'ai juste besoin de start() ; démarrer en plus via init(){}...

int init(){start();}

...

void start(){...}

Merci, j'ai compris.

 
Yikes... Je suis tellement stupide)))) Vous ne comprenez pas, ne touchez pas aux fonctions init(), deinit() et start() en vain. Seulement de la manière dont les grandes méta-citations vous disent de le faire)))).
 
Comment puis-je échanger mes bonus contre de l'argent ?
 
Alexs65:
Comment puis-je échanger mes bonus contre de l'argent ?

Les bonus de qui ?
 

J'ai le code suivant :

extern datetime start = D'2013.10.17 23:59' ;

int start()

{

int b1=iBarShift(Symbol(),0,start,0) ;

double hb=iHigh(Symbol(),0,b1) ; //barre

double hb2=iHigh(Symbol(),0,b1-1) ; //barre de demain à partir de la date spécifiée

Pourriez-vous me dire comment mettre le jour d'hier à partir de la date spécifiée, car double hb3=iHigh(Symbol(),0,b1+1) ; ne fonctionne pas...

 

Salut à tous ! !! J'ai un EA qui ouvre des ordres contre le mouvement, comment changer ou conseiller où changer ? ???

chaîne GLOB_START ;

int init()
{
GLOB_START = "@" + DoubleToStr(ID,0) + "@" + "_start" ;
if !GlobalVariableCheck( GLOB_START )GlobalVariableSet(GLOB_START,TimeCurrent()) ;
retour(0) ;
}

int deinit()
{
switch( UninitializeReason() )
{
cas REASON_REMOVE : delete_glob ("@" + DoubleToStr(ID,0) + "@" ) ;
}
if ( IsTesting() )delete_glob ("@" + DoubleToStr(ID,0) + "@" ) ;
retour(0) ;
}

void delete_glob ( string c )
{
int i ;
for ( i = GlobalVariablesTotal()-1 ; i>= 0 ; i-- )if ( StringFind(GlobalVariableName(i),c) >= 0 )GlobalVariableDel(GlobalVariableName(i))
}

int start()
{
Commentaire(Info()) ;
int KOL_BUY = order_total(0) ;
int KOL_SELL = order_total(1) ;
double l ;

si ( order_total() == 0 )
{
ouvert(0,Lot,0,TP) ;
ouvert(1,Lot,0,TP) ;
}

si ( KOL_BUY == 0 && KOL_SELL != 0 )
{
ouvert(0,Lot,0,TP) ;
l = last_trade(1) ;
ouvert(1,l,0,0) ;
modify_orders(1) ;
}

si ( KOL_BUY != 0 && KOL_SELL == 0 )
{
ouvert(1,Lot,0,TP) ;
l = last_trade(0) ;
ouvert(0,l,0,0) ;
modify_orders(0) ;
}

retour(0) ;
}

string Info()
{
int i ;
double buff_1 = 0, buff_2 = 0, buff_3 = 0 ;
chaîne de caractères res = "\n" ;

for( i = OrdersHistoryTotal() - 1 ; i >= 0 ; i-- )
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ;
if( OrderMagicNumber() == ID )
{
si ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,0) )buff_1 += OrderProfit() ;
si ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,1) && OrderOpenTime() < iTime(NULL,PERIOD_D1,0) )buff_2 += OrderProfit() ;
si ( OrderOpenTime() >= GlobalVariableGet(GLOB_START) )buff_3 += OrderProfit() ;
}
}

res = res + "Profit dans la devise de dépôt pour " + TimeToStr(iTime(NULL,PERIOD_D1,0)) + " + DoubleToStr(buff_1,0) + "\n" + "\n" ;
res = res + "Bénéfice en devise de dépôt pour " + TimeToStr(iTime(NULL,PERIOD_D1,1)) + " + DoubleToStr(buff_2,0) + "\n" + "\n" ;
res = res + "Profit dans la devise de dépôt total :" + DoubleToStr(buff_3,0) + "\n" ;
retour(res) ;
}

void modify_orders( int type )
{
int i ;
datetime time_last = 0, time_first = TimeCurrent() ;
double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_POINT), op_pr_last, op_pr_first, level ;

for( i = OrdersTotal() - 1 ; i >= 0 ; i-- )
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
if( OrderMagicNumber() == ID && OrderType() == type )
{
si ( OrderOpenTime() > time_last )
{
op_pr_last = OrderOpenPrice() ;
time_last = OrderOpenTime() ;
}
si ( OrderOpenTime() < time_first )
{
op_pr_first = OrderOpenPrice() ;
time_first = OrderOpenTime() ;
}
}
}


si ( type == 0 )level = op_pr_last + MathAbs(op_pr_last-op_pr_first) * (SL/100) ;
si ( type == 1 )niveau = op_pr_last - MathAbs(op_pr_last-op_pr_first) * (SL/100) ;

for( i = OrdersTotal() - 1 ; i >= 0 ; i -- )
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
if( OrderMagicNumber() == ID && OrderType() == type && NormalizeDouble(OrderTakeProfit(),Digits) != NormalizeDouble(level,Digits) )OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),level,0)
}
}

double last_trade( int t )
{
int i ;
double res = -1 ;
datetime time=0 ;

for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
if(OrderOpenTime()>time && OrderMagicNumber()==ID && OrderType() == t)
{
res = OrderLots() ;
time = OrderOpenTime() ;
}
}
si ( multiplicateur )retour(res * Lot_koeff) ;
si ( !multiplicateur )return(res + Lot_koeff) ;
}
int open(int type, double l, double sl=0, double tp=0, string comm = "")
{
int isOpened = 0, try = 0 ;
double s,t ;
while ( IsTradeContextBusy() ){Sleep(500);}
RefreshRates() ;
if ( sl != 0 && sl < MarketInfo(Symbol(),MODE_STOPLEVEL) )sl = MarketInfo(Symbol(),MODE_STOPLEVEL) ;
if ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL) )tp = MarketInfo(Symbol(),MODE_STOPLEVEL) ;
si ( type == 0 )
{
si ( tp == 0 )t = 0 ;
si ( tp != 0 )t = Ask + tp * Point ;
si ( sl == 0 )s = 0 ;
si ( sl != 0 )s = Bid - sl * Point ;
}
si ( type == 1 )
{
si ( tp == 0 )t = 0 ;
si ( tp != 0 )t = Bid - tp * Point ;
si ( sl == 0 )s = 0 ;
si ( sl != 0 )s = Ask + sl * Point ;
}
s = NormalizeDouble(s,Digits) ;
t = NormalizeDouble(t,Digits) ;
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID) ;
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID) ;
Dormir (500) ;
while(isOpened<0)
{
while ( IsTradeContextBusy() ){Sleep(500);}
RefreshRates() ;
si ( type == 0 )
{
si ( tp == 0 )t = 0 ;
si ( tp != 0 )t = Bid + tp * Point ;
si ( sl == 0 )s = 0 ;
si ( sl != 0 )s = Bid - sl * Point ;
}
si ( type == 1 )
{
si ( tp == 0 )t = 0 ;
si ( tp != 0 )t = Demande - tp * Point ;
si ( sl == 0 )s = 0 ;
si ( sl != 0 )s = Ask + sl * Point ;
}
s = NormalizeDouble(s,Digits) ;
t = NormalizeDouble(t,Digits) ;
essayer++ ;
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID) ;
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID) ;
if(try > 5) break ;
si(isOpened>=0)break ;
Dormir (500) ;
}
if(isOpened<0) Alert("Commande non ouverte, erreur :", GetLastError()) ;
return(isOpened) ;
}

int order_total( int type_1 = -1, int type_2 = -1 )
{
int i ;
int kol=0 ;
for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
if(OrderMagicNumber()==ID && (OrderType() == type_1 || OrderType() == type_2) )kol++ ;
si(OrderMagicNumber()==ID && type_1 == -1 && type_2 == -1 )kol++ ;
}
retour(kol) ;
}

double check_lot(double &lo)
{
double l = MarketInfo(Symbol(),MODE_LOTSTEP) ;
int ok = 0 ;
while ( l < 1 ){l*=10;ok++;}
if( lo < MarketInfo(Symbol(),MODE_MINLOT) )lo = MarketInfo(Symbol(),MODE_MINLOT) ;
if( lo > MarketInfo(Symbol(),MODE_MAXLOT) )lo = MarketInfo(Symbol(),MODE_MAXLOT) ;
return(NormalizeDouble(lo,ok)) ;

 
Bonne journée à tous. Messieurs, j'ai une question, s'il vous plaît éclairez-moi, si je travaille avec Alpari et Master_Forex je teste un Expert Advisor sur les histoires que je télécharge à partir de mon terminal de travail, rien de l'extérieur, pas d'histoires à gauche, comme de Dukas, pas de programmes auxiliaires comme Tick Data Suite, juste 90% de modélisation à partir du terminal de mon DS spécifiquement Alpari ou Master_Forex, méthode ........ Je teste la moitié de l'année sur différentes conditions et paramètres, choisir le meilleur, puis back test et la prochaine moitié de l'année, donc 2-5 ans puis tout dans la pile et le hibou est prêt. Est-ce que cela peut être un prepper fiable ou est-ce qu'il faut encore 99% et tout ce qui y est attaché.
Merci ! !! ........
 

Comment faire une recherche de "Fonds :" (AccountEquity()) ?

Paramètres

extern double TrailingStart = 10000 ; // Niveau de trailing
extern double TrailingStop = 100 ; // Taille de la trailing
extern double TrailingStep = 10 ; // pas de traînage

 

Comment trouver deux fractales supérieures/inférieures dans une rangée ? La photo ci-dessous.

J'ai essayé d'écrire un indicateur, mais je n'ai pas bien réfléchi.

//+------------------------------------------------------------------+
//|                                           Dvigubas fraktalas.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_color1 Red
#property indicator_width1 2
#property indicator_buffers 1

double FRACTAL[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,119);
   SetIndexBuffer(0,FRACTAL);
   SetIndexLabel(0,"Fractal");
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
   int limit;
   
   
   
//---- последний посчитанный бар будет пересчитан
   if(counted_bars > 0) 
       counted_bars--;
   limit = Bars - counted_bars;
//---- основной цикл
   for(int i = limit; i > 0; i--)
     {           
         int f1 = GetFractal("", 0, 0);
         int f2 = GetFractal("", 0, 1);
         
        if( f1 == 1 && f2 == 1) FRACTAL[i] = High[i]+100*Point;
        else 
         if( f1 == 0 && f2 == 0) FRACTAL[i] = Low[i]- 100*Point;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
        |
//+----------------------------------------------------------------------------+
int GetFractal(string sy="0", int tf=0, int nf=0) 
{
  if (sy=="" || sy=="0") sy=Symbol();
  int f=-1;
  int    i, k=iBars(sy, tf), kf;
  for (i=3; i<k; i++) 
  {
    if(iFractals(sy, tf, MODE_UPPER, i)>0)f=1;
    else
      if(iFractals(sy, tf, MODE_LOWER, i)>0)f=0;
    kf++;
    if (kf>nf) return(f);    
  }
  
}

Peut-être que quelqu'un a vu un tel indicateur prêt ?

Raison: