[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 - 5. - page 113

 
r772ra:

Parcourir les positions

J'ai essayé, ça n'a pas marché. Donc oui, je peux le trouver. Mais le problème est que je me retrouve dans la situation suivante :

Par exemple, le 01.01 j'ai ouvert une position, mais la condition ne s'est déclenchée que le 02.01. C'est-à-dire qu'à partir du prix d'ouverture de l'ordre dans le côté négatif, le prix a dépassé 50 pips le deuxième jour. Si la condition est remplie, l'action sera exécutée. Et l'action consiste à réduire la transaction de 1/3, c'est-à-dire à réduire le volume de la transaction par un facteur de trois. Mais l'action fonctionnera jusqu'à ce que le lot soit complètement fermé. Nous pouvons mettre un drapeau. Si b=0, alors l'action est en place. Et à la fin de l'action b=1. Si nous n'annulons pas le drapeau à la fin de la journée, la transaction sera exécutée une fois et c'est tout lorsque nous la testons par l'historique. Si nous mettons le drapeau à zéro, alors dès que le drapeau est mis à zéro, l'action recommencera à réduire les commandes jusqu'à ce qu'elle les ferme complètement. Je pensais qu'il serait possible de comparer le volume de la transaction initialement ouverte et le volume modifié, mais ils seront toujours les mêmes lors de la comparaison. Si nous diminuons le volume du lot, le volume des fonds sur le compte diminuera également, donc le volume initial sera recalculé. C'est-à-dire que ce n'est pas non plus cela, je pense pour le 3ème jour. Je n'en sais rien, avez-vous d'autres idées ?

 
Boneshapper:

Bonjour !

Chers professionnels, pourriez-vous me conseiller ?

Si le prix dépasse de 50 pips le prix ouvert de cet ordre, l'ordre doit être modifié.

OrderSelect(0, SELECT_BY_POS,MODE_TRADES) ;

double OPEN = OrderOpenPrice() ;
double maximus = OPEN + 0,00500 ;
Alerte ("maximus = ",maximus) ;
double minimus = OPEN - 0,00500 ;
RefreshRates() ;//rafraîchir les données.
timecur = TimeToStr(TimeCurrent(),TIME_SECONDS) ; //Calculer l'heure actuelle au format HH:MM.
si ((timecur > "00:00:00") && (timecur < "22:58:00") && (Deal_s == 1) && (Deal_bb == 0)&& (Bid > maximus))
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES) ;
Lootup = OrderLots () * 0.34 ;
Lootdown = OrderLots () * 0.34 ;
OrderClose(OrderTicket(), Lootdown, Ask, 10, CLR_NONE) ;
Alerte (GetLastError()) ;
Deal_bb = 1 ;
}

Si cela se passe pendant la journée, je suis capable de le faire. Veuillez me conseiller, comment vérifier si le prix d'ouverture + 50 P est contrôlé par le prix de chaque lot, jusqu'à ce qu'il soit fermé dans quelques jours ?

On chronomètre une corde et on mesure ensuite par cordes - original !!!!
Vous n'avez rien à inventer : vous vérifiez d'abord la résolution temporelle, puis les ordres suiveurs. Des solutions éprouvées pour les deux peuvent être trouvées ici et ici.

 
Boneshapper:

J'ai essayé, ça n'a pas marché. Il fonctionne, mais le problème est que je ne le trouve pas. Mais le problème est que je me retrouve dans la situation suivante :

Par exemple, le 01.01 j'ai ouvert une transaction, mais la condition n'est déclenchée que le 02.01. C'est-à-dire qu'à partir du prix d'ouverture du warrant dans le côté négatif, le prix a passé 50 pips le deuxième jour. Si la condition est remplie, l'action sera exécutée. Et l'action consiste à réduire la transaction de 1/3, c'est-à-dire à réduire le volume de la transaction par un facteur de trois. Mais l'action fonctionnera jusqu'à ce que le lot soit complètement fermé. On peut mettre un drapeau. Si b=0, alors il y a une action. Et à la fin de l'action b=1. Si nous n'annulons pas le drapeau à la fin de la journée, la transaction sera exécutée une fois et c'est tout lorsque nous la testons par l'historique. Si nous mettons le drapeau à zéro, alors dès que le drapeau est mis à zéro, l'action recommencera à réduire les commandes jusqu'à ce qu'elle les ferme complètement. Je pensais qu'il serait possible de comparer le volume de la transaction initialement ouverte et le volume modifié, mais ils seront toujours les mêmes lors de la comparaison. Si nous diminuons le volume du lot, le volume des fonds sur le compte diminuera aussi, donc le volume initial sera recalculé. C'est-à-dire que ce n'est pas non plus cela, je pense pour le 3ème jour. Je n'en sais rien, avez-vous d'autres idées ?

Qu'est-ce que les jours ont à voir avec ça ? Il vous suffit d'écrire ce que vous voulez, et l'algorithme vous sera communiqué. Il me semble que vous ne devriez pas vérifier les jours mais vérifier le profit/la perte de l'ordre et faire les calculs à partir de là. 50 (ou autre) pips sont importants pour vous...

 
TarasBY:

Vous mettez le temps dans une corde, puis vous le mesurez avec des cordes - c'est original !
Vous n'avez rien à inventer : vous vérifiez d'abord la résolution temporelle, puis vous suivez simplement les ordres. Des solutions éprouvées pour les deux peuvent être trouvées ici et ici.

Merci beaucoup pour votre réponse, vous m'avez donné un lien vers ce dont j'ai exactement besoin. Je vais l'essayer maintenant, mais je pense que ça va marcher.

Je suis désolé pour les bugs, mais je suis nouveau dans la programmation et je ne suis pas encore très bon dans ce domaine.

 
artmedia70:

Qu'est-ce que les jours ont à voir avec quoi que ce soit ? Il vous suffit d'écrire ce que vous voulez et ils vous indiqueront l'algorithme. Il me semble que vous ne devriez pas vérifier les jours mais vérifier les profits/pertes d'un ordre et en dépendre, car 50 (ou autre) points sont importants pour vous...

Oui, vous avez raison. C'est sur mes pertes et profits que je compte. TarasBY a indiqué exactement ce dont j'avais besoin. Je vais m'en occuper maintenant.

Merci pour votre aimable attention !

 

Pouvez-vous me dire s'il existe une fonction kim pour rechercher des fractales ?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
Comment puis-je écrire la même fonction qui compte le nombre de fractales dans une période donnée ?
 
berezhnuy:

Pouvez-vous me dire s'il existe une fonction kim pour trouver des fractales ?

Comment écrire la même fonction qui compte le nombre de fractales dans une période donnée ?

Ça donne quelque chose comme ça :

void fGet_ExtremumsZZPrice (string fs_Symbol,           // инструмент
                            int fi_TF,                  // таймфрейм
                            datetime fdt_TimeControl,   // время, до которого ищем экстремумы
                            int fi_ExtDepth = 12,       // ExtDepth         
                            int fi_ExtDeviation = 5,    // ExtDeviation
                            int fi_ExtBackstep = 3)     // ExtBackstep
{
    double ld_Value, lda_Extremum[];
    int    li_size = iBarShift (fs_Symbol, fi_TF, fdt_TimeControl), li_IND = 0;
//---- 
    for (int li_Bar = 1; li_Bar < li_size; li_Bar++)
    {
        ld_Value = iCustom (fs_Symbol, fi_TF, "ZigZag", fi_ExtDepth, fi_ExtDeviation, fi_ExtBackstep, 0, li_Bar);
        if (ld_Value != 0.)
        {
            ArrayResize (lda_Extremum, li_IND + 1);
            lda_Extremum[li_IND] = ld_Value;
            li_IND++;
        }
    }
//---- 
}

Les extrema du ZigZag de l'heure actuelle à Time_Control sont rassemblés dans un tableau.

 
Pouvez-vous suggérer une fonction permettant de vérifier la nouvelle ou l'ancienne fractale ?
 
berezhnuy:
Pouvez-vous suggérer une fonction permettant de vérifier la nouvelle ou l'ancienne fractale ?

Ici, je suis allé au sujet "Fonctions utiles" et je vous ai apporté "sur un plateau d'argent" :

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 07.10.2006                                                      |
//| Описание : Поиск ближайшего фрактала.                                      |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//|   sy - наименование инструмента     (NULL - текущий символ)                |
//|   tf - таймфрейм                    (  0  - текущий ТФ)                    |
//|   mode - тип фрактала               (MODE_LOWER|MODE_UPPER)                |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;

  for (s=2; s<100; s++) {
    f=iFractals(sy, tf, mode, s);
    if (f!=0) return(NormalizeDouble(f, d));
  }
  Print("FindNearFractal(): Фрактал не найден");
  return(0);
}
Vivez et utilisez-la en bonne santé ! Il y en a de toutes sortes ! Vous n'avez pas à demander, vous n'avez pas à attendre, vous devez juste le prendre et l'utiliser !
 

Pouvez-vous me dire comment organiser un saut de week-end lors de la recherche d'un bar par heure.

Dans les exemples, nous effectuons tous les calculs sur des graphiques quotidiens, où une barre correspond à un jour.

Par exemple, nous avons Time[0], et nous devons trouver l'heure de cinq barres futures qui n'ont pas encore été formées. Si vous faites Time[0] + 60 * Period * 5, lorsque vous arrivez au week-end, les barres ne seront pas calculées correctement.

Raison: