[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 215

 
Qra:

Bonne journée à tous !

Je suis en train d'écrire mon premier bot, et en même temps je me familiarise avec MQL. Je rencontre le problème suivant lors des tests :

L'ordre OP_BUYSTOP est déclenché juste après le placement de l'ordre, bien que, à en juger par le graphique, le prix n'atteigne pas la valeur cible (voir ci-dessous).

TempsTypeCommandezVolumePrixS / LT / PProfitBalance
12011.09.19 02:10arrêt d'achat10.0176.93576.73577.135
22011.09.19 02:10acheter10.0176.93576.73577.135

USDJPY,M5 (visuel)

Date 2011.09.19

Heure 02:15

Ouvert 76.903

Haut 76.909

Bas 76.890

Fermer 76.890

Volume 66

Je teste toutes les tiques.

Peut-être que je ne comprends pas correctement l'ordre OP_BUYSTOP ? Pour acheter si le prix dépasse une certaine valeur, non ?

Voici un bout de code source qui passe une commande

int ticket=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP) ;

Merci beaucoup à tous par avance !

Sur le graphique en chandelier, tous les prix sont des Bid et tout ordre d'achat est exécuté au prix Ask.
 
PapaYozh:
Sur le graphique en chandelier, tous les prix sont des Bid et tout ordre d'achat est exécuté au prix Ask.

Merci !

 
Bonjour à tous !

Je veux supprimer les lignes horizontales en attente si leur niveau a été cassé par le prix actuel. Une autre façon de le dire : si le niveau a été dépassé ou "renégocié" déjà après la création d'OBJ_HLINE.

Merci à Roll pour son aide. Pourriez-vous me dire comment suivre correctement la condition de maintien du niveau à une période connue ?
//----------------------------------------------------------------------+ 
//  Удаление  OBJ_HLINE при пробитии его уровня   /Red-Up/Blue-Down|    |
//----------------------------------------------------------------------+   
void DelHLine( string nm="")  
   {
    int obj_total=ObjectsTotal();

       for(int i=1;i<obj_total;i++) 
      { 
        nm=ObjectName(i);
         if(nm==ObjectName(i)&&ObjectType(nm)==OBJ_HLINE)
         {
          color    cl     = ObjectGet(nm,OBJPROP_COLOR);
          double   pl     = ObjectGet(nm,OBJPROP_PRICE1);
          datetime timeSet= ObjectGet(nm,OBJPROP_TIME1);
          int      shift  = iBarShift(NULL,0,timeSet);
   
          if((cl==Red  && pl<High[iHighest(NULL,0,MODE_HIGH,shift,1)])||
             (cl==Blue && pl>Low [iLowest (NULL,0,MODE_LOW, shift,1)]) ) ObjectDelete(nm); 
         } 
      }
    return(0);  
  }
//+------------------------------------------------------------------+
 

Bonjour, aidez-moi s'il vous plaît.

Je n'arrive pas à comprendre pourquoi ce script n'affiche pas les données dans excel sous forme de colonnes.

Lorsqu'on l'exécute dans Excel, il n'y a qu'un en-tête de tableau, pas de données.

Aidez-moi à comprendre pourquoi le délimiteur n'est pas perçu par excel.

Dossiers :
writefile.mq4  3 kb
 

Je débute en programmation, donc beaucoup de questions se posent, merci d'avance pour votre attention !

J'ai écrit un script appelé NewScript, qui exécute une fonction simple - afficher les prix OHLC par barres sur un graphique...

Ma question est la suivante : si BARS est exactement le nombre de barres sur le graphique actuel, alors pourquoi le journal de mon EA affiche le nombre de barres à l'écran (environ 200), mais dans mon journal plus de 2000 ?

Merci !

Dossiers :
 
Vinin:


Petite correction


double Hi (int pos=0) //создали Hi, зависящую от pos
{ 
  int i=pos; //присваиваем "i" значение от "pos", то есть i равно pos
  double H=0;
  while (i<=pos+10) //как она может быть меньше, если она равна?
  {
    if (H<iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i))  //это мне вообще не понятно... то есть если значение "Н" будет меньше, то присваиваем...  
      H=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i); //то есть он определит мне наинизший, но не наивысший бар


    i++; //ну тут мы добавляем к "i" плюс 1
  }
  return(H); //возвращаем Hi в самое начало
}

Désolé, je ne comprends pas la fonction...

 
CLAIN:



L'option la plus facile

double Hi (int pos=0) 
{ 
  double H[10]; // Объявили массив
  
  for (i=pos+1;i<=pos+10;i++) // формируем массив
  {
    H[i]=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
  }
  int MaxId=ArrayMaximem(H); ищем индекс максимального элемента
  return(H[MaxId]); // возвращаем максимальный элемент
}
 

Bonjour !

Pouvez-vous m'aider à écrire un code pour arrêter l'EA pendant un certain temps ?

J'ai écrit le code comme ceci.

int init() {
string OrderStop="OrderStop "+ Symbol() ;
OrderSig =GlobalVariableGet(OrderStop) ;
// Print (OrderSig) ;

return (0) ;
}

int deinit() {
return (0) ;
}

int start() {
string OrderStop="OrderStop "+ Symbol() ;
OrderSig = GlobalVariableGet(OrderStop) ;

si (OrderSig==1)retour(0) ;

else {

Corps de l'EA (code)

}

retour(0) ;

}

Dans le trailer, ce code fonctionne, mais lorsque je compile ou ré-exécute le Terminal,

L'EA commence à fonctionner (ouvre une position) et ne recommence pas à trader.

Qu'est-ce que ça peut être ?

Ou dites-moi une autre option.

 
alega:

Ou suggérez une autre option.

Utilisez un f :

  Sleep (3000);
 
Merci, je vais essayer.