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

 
ara66676:

Aidez-moi, je n'arrive pas à trouver la réponse à une question simple.

intTimeSeconds(,,,,,)Renvoie le nombre de secondes écoulées depuis le début de la minute de l'heure spécifiée.

Si j'insère l'heure d'ouverture de la barre dans la fonction

TimeSeconds(iTime(NULL,PERIOD_M5,0))

comment puis-je savoir qu'il reste 10 secondes avant la fermeture de la barre ?

Eh bien, soustrayez le temps écoulé du nombre de secondes de la période...

PeriodSeconds(PERIOD_M5) - TimeSeconds(iTime(_Symbol, PERIOD_M5, 0));



 
AlexeyVik:

Parce que vous devez lire la documentation dans son intégralité. Et il y a un exemple

Merci ! Dans l'exemple, ce"ArrayResize" m'a fait perdre la tête. :)

Dans la documentation, je pense que ces crochets "array[]" sont inutiles car vous pouvez comprendre à partir du mot lui-même qu'il s'agit d'un tableau. :)

int  ArrayInitialize( 
   int     array,     // инициализируемый массив 
   int     value        // значение, которое будет установлено 
   );
 
AlexeyVik:

Donc, soustrayez le temps écoulé du nombre de secondes dans une période...



Merci beaucoup, j'utilise mql4 depuis cinq ans et je ne savais pas qu'il existait une telle fonction, merci encore ;))

Hélas, cela n'a pas aidé, sur le cinquième ce contrôle ne fonctionne pas...((

 
if(id==CHARTEVENT_MOUSE_MOVE)
                                       {
                                       // получ и преобраз координ мыши
                                       ChartXYToTimePrice(0,lparam,dparam,huin,timeVline,priceVline);
                                       // переместить нa них линию
                                       ObjectSet(stockname+"timeVline",OBJPROP_TIME1,timeVline);                                     
                                              
                                        } 
Sur un graphique réel, où l'indicateur fonctionne à partir de zéro, il fonctionne comme il le devrait.
Je ne vois pas ce qui ne va pas, mais si je lance l'indicateur dans le testeur, la ligne ne bouge pas après la souris.
Je ne sais pas non plus à quoi sert la variable que j'ai appelée Huin?
 
ara66676:

Merci beaucoup, j'utilise mql4 depuis cinq ans et je ne savais pas qu'il existait une telle fonction, merci encore ;))

Hélas, cela n'a pas aidé, sur le cinquième ce contrôle ne fonctionne pas...((

Vous auriez donc dû préciser... Le principe est le même.

TimeCurrent() - (datetime) SeriesInfoInteger(_Symbol, PERIOD_M5, SERIES_LASTBAR_DATE);


Vous pouvez aussi utiliser CopyTime()...


Non... Ce n'est pas comme ça.

(datetime) SeriesInfoInteger(_Symbol, PERIOD_M5, SERIES_LASTBAR_DATE) + PeriodSeconds(PERIOD_M5) - TimeCurrent():
 

GURUS TELL ME !!!! Pourquoi un ordre de vente ne s'ouvre pas ????

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

//| Nom du projet |

//| Copyright 2012, Nom de la société |

//| http://www.companyname.net |

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

#propriété stricte

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

//| Fonction d'initialisation de l'expert |

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


entrée double L=0.01 ;

entrée int TakeProfit = 150 ;

entrée int StopLoss = 150 ;

entrée int Magie = 0 ;

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

int b=0 ;

int s=0 ;

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

int OnInit()

{

retour(0) ;

}

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

//| Fonction tick expert |

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

void OnTick()

{

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

//| Ouvrir un ordre d'achat ||

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

si(b==0)

{

b=Mon_Fun_b() ;

}

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

//| Ouvrir un ordre de vente |

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

si(s==0)

{

double priceb=My_Fun_p() ;

Comment("Le prix de l'ordre d'achat",priceb) ;

if(priceb==Bid) /*NOT EXECUTED WHY*/.

{

s=My_Fun_s(priceb);/*NOT EXECUTED, WHY///

}

}

}

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

//| fonction de désinitialisation des experts |

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

void OnDeinit(const int reason)

{


}

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

//| Fonction personnalisée pour l'ouverture du premier ordre (achat) |

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

int Mon_Fun_b()

{

b=OrderSend(_Symbol,0,0.01,Ask,0,0,",414,0,clrBlue) ;

retour(b) ;

}

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

//| Fonction définie par l'utilisateur pour déterminer le prix du premier ordre (achat) |

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

double My_Fun_p()

{

double pb=0 ;

si(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true)

si(OrderMagicNumber()==414)

{

pb=OrderOpenPrice() ;

}

retour(pb) ;

}

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

//| Fonction personnalisée pour ouvrir le premier ordre (vente) |

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

int My_Fun_s(double priceb)

{

s=OrderSend(_Symbol,1,0.01,priceb,0,0,",0,0,clrRed) ;

retour(b) ;

}

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


Dossiers :
test.mq4  2 kb
 
AlexeyVik:

Eh bien, vous auriez dû préciser... Le principe est le même


Vous pouvez aussi utiliser CopyTime()...


Non... C'est un peu différent.

Merci, ça a marché. Variante correcte :

(TimeCurrent() - (datetime) SeriesInfoInteger (NULL , PERIOD_M5 , SERIES_LASTBAR_DATE))>290

Merci encore, maintenant nous pouvons supprimer des montagnes de code et utiliser cette ligne ! !! ))

 
ara66676:

Merci, ça a marché. Variante correcte :

(TimeCurrent() - (datetime) SeriesInfoInteger (NULL , PERIOD_M5 , SERIES_LASTBAR_DATE))>290

Merci encore, maintenant nous pouvons supprimer des montagnes de code et utiliser cette ligne ! !! ))

Apparemment, cela n'avait pas d'importance si c'était le temps écoulé depuis l'ouverture du bar ou le temps jusqu'à la fin du bar. Cette variante donnera exactement le temps écoulé depuis le début de la mesure et non le temps jusqu'à la fin de la mesure.

Et quel est le numéro 290 ? Pourquoi devons-nous vérifier plus de 290 ?

 
AlexeyVik:

Apparemment, le fait qu'il s'agisse du temps écoulé depuis le début de la barre ou du temps jusqu'à la fin de la barre n'avait aucune importance. Cette option donnerait exactement le temps écoulé depuis le début de la mesure, et non le temps jusqu'à la fin de la mesure.

Quel est le numéro 290 ? Pourquoi devons-nous vérifier plus de 290 ?

DANS CE CAS, LE NOMBRE 290 INDIQUE QUE PLUS DE 290 SECONDES SE SONT ÉCOULÉES DEPUIS L'OUVERTURE DE LA BARRE. DÉSOLÉ POUR LA LÉGENDE, C'EST COINCÉ ))))
 

Erreur de compilation (2) : Magic - identifiant non déclaré

Veuillez m'aider à corriger

bool CheckExists(int Type)
{
bool Result = True ;
for(int i = 0 ; i < OrdersTotal() ; i++)
if(OrderSelect(i, SELECT_BY_POS))
if(OrderType() == Type && OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
if(OrderOpenTime() >= Time[0])
Result = False ;
for(i = 0 ; i < OrdersHistoryTotal() ; i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
if(OrderType() == Type &&& OrderOpenTime() >= Time[0]
&& OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
Result = False ;
}

return(Result) ;
}