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

 

dites-moi comment traiter de telles clôtures dans les méta-citations) ?

 
Zhunko:
Nous devons intercepter les messages.

Si le message a déjà été exécuté, il a déjà été supprimé de la file d'attente.

Ok, j'ai la question suivante.

#property indicator_chart_window
bool First = true;
int start(){
   if(First){
      int indexFirstLeftOnChart = WindowFirstVisibleBar();//иницилизируем под флагом, потому что в init() могут быть артефакты
      Alert("indexFirstLeftOnChart ", indexFirstLeftOnChart);
      First = false;
   }
   if(WindowFirstVisibleBar() != indexFirstLeftOnChart){//проверяем на каждом тике, изменилось ли значение
      Alert("first indexFirstLeftOnChart ", indexFirstLeftOnChart);      
      indexFirstLeftOnChart = WindowFirstVisibleBar();//если изменилось, записываем его
      Alert("second indexFirstLeftOnChart ", indexFirstLeftOnChart);
   }
   return(0);
}

- Il émet un bip à chaque tic, car il s'avère que le premier indexFirstLeftOnChart est égal à zéro. Comment puis-je lutter contre ça ? Construire 509.

 
static bool First = true;
 
gyfto:

Si un message a déjà été exécuté, il a déjà été supprimé de la file d'attente.

Les interceptions sont généralement effectuées avant l'exécution. Sinon, on ne voit pas bien pourquoi intercepter ?
 
FAQ:
static bool First = true;


Zhunko:
En général, ils l'interceptent avant l'exécution. Sinon, je ne comprends pas pourquoi vous avez besoin d'intercepter ?


Il n'y a pas de question avant l'exécution. Il n'y a donc aucun intérêt à déplacer le contrôle de validité de AccountNumber() vers la dll. Cela implique que le numéro de compte est déjà stocké dans Dll.

 
static int indexFirstLeftOnChart;
 

J'ai quelque chose sur un point simple, un mal de tête. Il existe une fonction permettant de rechercher des commandes.

t - compteur de toutes les commandes.

p - compteur d'ordres en attente.

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders(int& t, int& p)
{
   int total = OrdersTotal() - 1;
   t = 0;
   p = 0;
   for (int i=total; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderType() > 1)
      {
          p++;
      }
      t++;
      pr ("FindOrders(): " + "t = " + t + "   " + TimeToStr(TimeCurrent()));
      pr ("FindOrders(): " + "p = " + p + "   " + TimeToStr(TimeCurrent()));
   }
}

Je l'appelle dès le début :

int start()
{
   if (g_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                               // ..уже были выполнены
   
   int oTotal = 0, oPending = 0;
   
   FindOrders(oTotal, oPending);
   
   int signal = GetGeneralSignal(oTotal);
   
   if (signal != SIGNAL_NO)
   {
       if (!Trade(signal))
       return(0);
   }
   else

En fait, lorsque nous l'ouvrons, même s'il n'y a pas d'ordres, nous voyons ceci (même s'il n'y a pas d'ordres, cela s'imprime comme s'il y en avait...) :

Comment cela est-il possible ?

 
Bonsoir à tous. J'ai décidé de maîtriser MQL4 récemment (j'ai étudié le tutoriel de Sergey Kovalev). J'ai décidé de faire un script simple d'ouverture de commande aujourd'hui pour m'entraîner. Le code est :
int start()
{
OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point) ;
Alert(GetLastError()) ;

retour ;

}

Le script n'a pas fonctionné et l'erreur 4109 (Trading not allowed) a été affichée. En essayant de changer la situation, l'erreur 4016 (Uninitialised array) est également apparue. J'aimerais savoir ce qui provoque ces erreurs et comment créer un script simple d'ouverture de transaction en fin de compte. J'ai juste copié l'exemple du tutoriel https://book.mql4.com/ru/trading/ordersend (j'y ai juste ajouté la fonction GetLastError) et j'ai quand même obtenu l'erreur 4109.

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());
   return;                                   // Выход из start()
  }

Кто может объяснить в чем проблема, буду очень признателен. Заранее спасибо.
 
dépôt = type 6
 
Pouvez-vous me dire s'il existe un moyen de définir les commentaires sur la commande comme étant par défaut ???