Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1512

 

Quelqu'un peut-il suggérer le code suivant :

Si une grille d'ordres est FERMÉE (plus de 2 du même type), alors STOP TRADING jusqu'à la fin de la journée (ou un certain temps qui peut être fixé en heures, minutes).

Compter l'histoire comme trouvé sur les mêmes types d'ordre encore en quelque sorte capable de, mais comment arrêter à la fin de la journée précisément ne savent pas. Bonne Pentecôte à tous)

 
Igor Makanu:

pas normal, huit octets serait une douleur dans le cul pour envoyer quelque chose

Eh bien, cela dépend du but recherché, si c'est juste un rappel, alors huit suffisent :)

 
Порт-моне тв:

Quelqu'un peut-il suggérer le code suivant :

Si une grille d'ordres est FERMÉE (plus de 2 du même type), alors STOP TRADING jusqu'à la fin de la journée (ou un certain temps qui peut être fixé en heures, minutes).

Compter l'histoire comme trouvé sur les mêmes types d'ordre encore en quelque sorte capable de, mais comment arrêter à la fin de la journée précisément ne savent pas. Bonne Pentecôte à tous)

//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType(int order_type)
  { double p = 0;
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderCloseTime()>=время начала дня)
           { 
            if(OrderType()==order_type || order_type == -1) cnt++;
           }
        }
     }
   return(p);
  }
 
Порт-моне тв:

Quelqu'un peut-il suggérer le code suivant :

Si une grille d'ordres est FERMÉE (plus de 2 du même type), alors STOP TRADING jusqu'à la fin de la journée (ou un certain temps qui peut être fixé en heures, minutes).

Compter l'histoire comme trouvé sur les mêmes types d'ordre encore en quelque sorte capable de, mais comment arrêter à la fin de la journée précisément ne savent pas . Joyeuses fêtes à tous)

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

Si j'ai bien compris la question, c'est approximativement comme ceci (le principe lui-même)

 
Aleksei Stepanenko:

Eh bien, cela dépend du but recherché, si c'est juste pour se rappeler de soi, alors huit suffit :)

si vous voulez vous rappeler, il est préférable de lancer un événement personnalisé dans OnChartEvent(), c'est plus pratique, je pense.


MakarFX:

Qui peut suggérer le code suivant :

si la grille des ordres est CLOSE (plus de 2 du même type), alors STOP TRADING jusqu'à la fin de la journée (ou un certain temps qui peut être fixé en heures, minutes).

recherche dans l'historique des ordres à partir de la date du début de la journée (aujourd'hui, ou à partir de TF D1 pour obtenir une barre de zéro ou à partir d'une heure de tic-tac à convertir)

si au moins une commande a été trouvée dans l'historique avec une date supérieure à celle fixée - quitter la fonction, ce qui donne le résultat vrai

dans OnTick(), tout en haut de l'appel d'une telle fonction avec le paramètre date (aujourd'hui)


Je suis trop paresseux pour l'écrire, il y a environ une douzaine de lignes. Kim a une fonction pour rechercher les commandes dans l'historique par date.

 
Порт-моне тв: Compter l'historique comme une recherche par le même type d'ordre, je peux encore y arriver, mais comment arrêter à la fin de la journée, je ne sais pas exactement. Bonne Trinité à tous)
bool trade_buy;
bool trade_sell;

if(кол-во закрытых ордеров buy>2)
trade_buy=false;
else
trade_buy=true;

if(кол-во закрытых ордеров sell>2)
trade_sell=false;
else
trade_sell=true;
 
Maxim Kuznetsov:

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

si j'ai bien compris la question, cela donne quelque chose comme ceci (le principe lui-même)

Merci pour la réponse rapide, mais cette "interdiction de commerce", je ne sais pas comment l'implémenter, merci pour le code.
 
MakarFX:
trade sell / trade buy - fonction comment !?
 
Порт-моне тв:
trade sell / trade buy - fonction how !?


//+------------------------------------------------------------------+
bool trade_buy;
bool trade_sell;
//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType(string symb="",int order_type)
  {
   double p = 0;
   if(symb=="0") symb=_Symbol;
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderSymbol()==symb || symb=="")
           {
            if(OrderCloseTime()>=iTime(_Symbol,PERIOD_D1,0))
              { 
               if(OrderType()==order_type || order_type == -1) cnt++;
              }
           }
        }
     }
   return(p);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(GetCloseOrderType(_Symbol,0)>2)
      trade_buy=false;
   else
      trade_buy=true;

   if(GetCloseOrderType(_Symbol,1)>2)
      trade_sell=false;
   else
      trade_sell=true;
//---
   if(trade_buy)
     {
      твое условие открытия покупок
     }
   if(trade_sell)
     {
      твое условие открытия продаж
     }
//---
  }
//+------------------------------------------------------------------+
 
Vitaly Muzichenko:

Si quoi que ce soit, c'est pris d'ici.

Je suis novice en programmation, je ne suis pas très doué, pouvez-vous le refaire et le mettre à disposition pour le téléchargement ?