Fonctions utiles de KimIV - page 81

 
KimIV >> :

A la page 76...

Merci.

 

La fonction isTradeTimeInt().

Cette fonction renvoie un indicateur permettant d'autoriser les transactions temporaires. La valeur retournée est true ou false. La fonction isTradeTimeInt() est similaire à la fonction isTradeTimeString() par le principe de reconnaissance de l'intervalle de temps, c'est-à-dire que l'heure de début de la transaction peut être à la fois plus grande (intervalle de temps dans une journée) et plus petite (intervalle de temps dans des jours différents). La fonction isTradeTimeInt() accepte les paramètres facultatifs suivants :

  • hb - Nombre, spécifie les heures de début du commerce. La valeur par défaut est 0.
  • mb - Un nombre, spécifie les minutes de l'heure de début de la transaction. Valeur par défaut - 0.
  • he - Un nombre pour spécifier les heures de fin de transaction. La valeur par défaut - 0.
  • me - Un nombre pour spécifier les minutes de l'heure de fin de la transaction. Valeur par défaut - 0.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0, int mb=0, int he=0, int me=0) {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ hb+":"+ mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ he+":"+ me);
  hc=TimeHour(TimeCurrent());
  if ( db>= de) {
    if ( hc>= he) de+=24*60*60; else db-=24*60*60;
  }

  if (TimeCurrent()>= db && TimeCurrent()<= de) return( True);
  else return( False);
}
 

Exemples d'utilisation de isTradeTimeInt().

  1. Période de temps dans une journée. Heure actuelle du serveur de commerce dans une période donnée, soit "08:30".
    if (isTradeTimeInt(6, 0, 9, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  2. Délai à l'intérieur du jour. Heure actuelle du serveur commercial en dehors du segment et qu'elle soit égale à "08:30".
    if (isTradeTimeInt(12, 0, 16, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  3. Le créneau horaire comprend la limite de la journée. Heure actuelle du serveur commercial dans le segment et qu'elle soit égale à "08:30".
    if (isTradeTimeInt(21, 15, 9, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  4. Le créneau horaire comprend la limite de la journée. Heure actuelle du serveur de commerce en dehors du segment et que ce soit "08:30".
    if (isTradeTimeInt(22, 0, 5, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");

SZY. Vous trouverez ci-joint un script permettant de tester la fonction isTradeTimeInt().

Dossiers :
 

Liste actualisée des fonctionnalités avec de brèves descriptions et des liens...

Dossiers :
f_kimiv.rar  12 kb
 
KimIV >> :

La fonction isCloseLastPosByStop().

Cette fonction renvoie un drapeau pour fermer la dernière position par arrêt. Le drapeau est levé - Vrai - Le StopLoss s'est déclenché. Drapeau abaissé - Faux - le poste a été fermé pour une autre raison. Une sélection plus précise des positions à prendre en compte est établie par des paramètres externes :


Bonjour

J'essaie d'utiliser votre fonction pour mes propres besoins. Petit conseiller expert qui fonctionne. Ne vend et ne ferme qu'une seule position. Parfois, il attrape plusieurs stoploss d'affilée. Je veux changer les conditions de vente après le premier stop, l'Expert Advisor ouvre des positions, mais ne les ferme pas. Dites-moi ce que je fais de mal ?

..........................................................

si ( isCloseLastPosByStop(NULL,OP_SELL, MagicNamber) == 0)
{
if ( (StochK_0<StochD_1) && (StochD_1 > 80) ) // 1ère vente lente
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,0, "My EXP", MagicNamber,0,Green) ; // vendre

OrderSelect(0, SELECT_BY_POS) ;

si (OrderSelect(0, SELECT_BY_POS)==true )
Print("SELECT_BY_POS") ;
sinon
Print("erreur de sélection ratée : ",GetLastError()) ;
RefreshRates() ;
si((StochK_0<30)&& (StochD_1 < 30))
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ;
}
sinon
si ( isCloseLastPosByStop(NULL,OP_SELL, MagicNamber) == 1)
{
si ((StochK_0<StochD_1) && (StochK_0 < 60) && (StochD_1 < 60) )

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My EXP", MagicNamber,0,Green) ; //

...........................

 
KoZaNOStra писал(а) >>
L'expert ouvre des positions, mais ne les ferme pas.

Imprimer les variables StochK_0 et StochD_1. Ils prennent peut-être des valeurs qui ne correspondent pas à vos conditions de clôture.

 

à KimIV

Bonjour, pourriez-vous m'aider à convertir cet indicateur de cluster en une fonction avec le même dessin et + retour des valeurs de taux de changement de paire (coin supérieur droit) par le paramètre d'entrée - Nom de la paire. Je vous remercie d'avance.

P.S..... Je me bats depuis une semaine maintenant.

Dossiers :
cc_240.mq4  13 kb
 
existe-t-il une fonction permettant d'afficher les nouvelles dans la fenêtre ouverte de la paire de devises ?
 
Et comment exprimer dans le code qu'au début d'une heure, à la première seconde, nous ouvrons deux positions dirigées différemment, et à la dernière seconde de l'heure, nous fermons l'ordre qui a échoué ?
 
VAM_ писал(а) >>
Et comment exprimer dans le code qu'au début d'une heure, à la première seconde, nous ouvrons deux positions dirigées différemment, et à la dernière seconde de l'heure, nous fermons l'ordre qui a échoué ?

Et s'il n'y en a pas, première et dernière seconde ?

Raison: