[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 477

 

demlin:
Еще вопрос: какой функцией можно вытащить стоимость одного пункта инструмента?

https://docs.mql4.com/ru/constants/marketinfo

MarketInfo(Symbol(), MODE_TICKVALUE);
 
LazarevDenis:

S'il vous plaît, dites-moi quel code doit être écrit dans l'EA pour que l'EA ne fasse des transactions qu'une fois par heure.

Par exemple, l'EA s'est déclenché, un ordre est ouvert (pas intéressé par la suite), je voudrais que l'ordre ne s'ouvre pas sur la barre actuelle sur une échelle de temps horaire.

tout se ressemble :

int hh ;
int CurrentHour ;
CurrentHour=TimeHour(TimeCurrent()) ;
si (CurrentHour!=hh)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point) ;
hh=TimeHour(TimeCurrent()) ;
}

mais j'ai d'innombrables commandes ouvertes

int hh = 0;
doit être défini avant start() et init()
 
Les gars, aidez-moi à trouver un EA pour le trading manuel dans le testeur sur l'histoire. Il y en a quelques-uns dans la base de code, j'ai besoin d'un qui était contrôlé en faisant glisser la légende dans le coin inférieur gauche du nraffic. Très simple, je n'en trouve pas. HistTraining et Visualisation Testing. Le trading manuel n'en est pas un. Conseiller très facile, vous pouviez également définir des niveaux où les tests s'arrêtaient.
 
demlin:

Bonjour à tous !

S'il vous plaît, dites-moi ce que cela signifie :

L'ordre d'achat ...... a échoué [Délai d'exécution].

Je suis spécifiquement intéressé par le type de délai d'attente.

https://www.mql5.com/ru/forum/112612
Il s'agit d'une réponse du serveur expirée --- que la transaction soit ouverte ou non. Et il n'y a aucune garantie que le commerce ne s'est pas ouvert.

Je dois donc vérifier si l'ordre est ouvert dans une minute, puis continuer à négocier.

 

rlx:


doit être défini avant start() et init()


int hh = 0 ;
int init()
{
return(0) ;
}
int start()
{
//-------------------------------------------------
int countorder ;
countorder=OrdersTotal() ;
if (countorder==0)
{
Alert ("no open orders") ;
}else
{
Alert ("have open orders") ;
}
int hh ;
int CurrentHour ;
CurrentHour=TimeHour(TimeCurrent()) ;
if ((CurrentHour!=h)&&(countorder==0))
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point) ;
hh=TimeHour(TimeCurrent()) ;
}
//-------------------------------------------------
return(0) ;
}

int deinit()
{
return(0) ;
}

J'ai fait comme vous l'avez dit, aucun effet, j'ai ajouté le nombre d'ordres ouverts, maintenant les ordres sont ouverts juste après la fermeture.

J'ai contourné le problème en utilisant OrderCloseTime() - cela semble fonctionner maintenant.

int countorder ;
countorder=OrdersTotal() ;
if (countorder==0)
{
Alert ("no open orders") ;
}else
{
Alert ("have open orders") ;
}
int hh ;
int CurrentHour ;
int LastOrderCloseTime ;
CurrentHour=TimeHour(TimeCurrent()) ;


OrderSelect(HistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY) ;
hh=TimeHour(OrderCloseTime()) ;


si ((CurrentHour!=hh)&&(countorder==0))
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point) ;
}

 
rlx:

https://www.mql5.com/ru/forum/112612
Il s'agit de la période d'attente pour que le serveur réponde --- si une transaction a été ouverte ou non. Et il n'y a aucune garantie que le marché ne soit pas ouvert.

Par conséquent, comme le recommandent les développeurs, vérifiez au bout d'une minute si un ordre a été ouvert et ne procédez qu'ensuite.

Merci pour les réponses
 
Roger:

Je ne veux pas être un emmerdeur, cependant.

Expliquez-moi comment un ordre s'ouvre si OrderTotal() est égal à zéro.

Merci.


Voici la figure avec les parenthèses qui limitent le bloc de code qui est exécuté sous la condition

if(OrdersTotal()>0&&tral>0&&OrderMagicNumber()==MAGIC&&(OrderType()==OP_SELL||OrderType()==OP_BUY))

Les opérations OrderSend() ne sont pas affectées par cette condition.

 

comment obtenir un numéro de barre, dans le "futur" :)

iBarShift() fonctionne bien pour obtenir le numéro de barre de l'historique, mais comment obtenir le numéro de barre pour ce code si vous déplacez la ligne vers la droite - au-delà de la barre zéro ?

static string name_vline = "linescr";
//________________________________________________
int init(){
   DrawLine(name_vline,Time[5],Red);
return(0);
}
//________________________________________________
int deinit() {
return(0);
}
//________________________________________________
int start(){
   datetime X;
   X = ObjectGet(name_vline,OBJPROP_TIME1);
   Comment("Координата X = ",iBarShift(NULL,0,X),"\n",
           "Время = ",TimeToStr(X));
return(0);
}
//________________________________________________
void DrawLine(string name, datetime tim, color cl){
   ObjectCreate(name, OBJ_VLINE, 0, tim, Close[0], tim, Close[0]);
   ObjectSet(name, OBJPROP_BACK  , false);
   ObjectSet(name, OBJPROP_COLOR, cl);
   ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);      
   ObjectSet(name, OBJPROP_WIDTH, 0);
}
 
IgorM:

comment obtenir un numéro de barre, dans le "futur" :)

iBarShift() fonctionne bien pour obtenir le numéro de barre de l'historique, mais comment puis-je obtenir le numéro de barre pour ce code si je déplace la ligne vers la droite - au-delà de la barre zéro ?

Vous pouvez obtenir un décalage par rapport au temps [0].

shift = MathRound((Time[0] - X) / (Period()*60));
 
rlx:

Vous pouvez obtenir un décalage par rapport au temps [0].

Merci ! Tout va bien maintenant !

static string name_vline = "linescr";
//________________________________________________
int init(){
   DrawLine(name_vline,Time[5],Red);
return(0);
}
//________________________________________________
int deinit() {
return(0);
}
//________________________________________________
int start(){
   datetime X;
   X = ObjectGet(name_vline,OBJPROP_TIME1);
   if(X<=Time[0])
         Comment("Координата X = ",iBarShift(NULL,0,X),"\n",  "Время = ",TimeToStr(X));
   else
         Comment("Координата X = ",MathRound((Time[0] - X) / (Period()*60)),"\n","Время = ",TimeToStr(X));
return(0);
}
//________________________________________________
void DrawLine(string name, datetime tim, color cl){
   ObjectCreate(name, OBJ_VLINE, 0, tim, Close[0], tim, Close[0]);
   ObjectSet(name, OBJPROP_BACK  , false);
   ObjectSet(name, OBJPROP_COLOR, cl);
   ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);      
   ObjectSet(name, OBJPROP_WIDTH, 0);
}