[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 431

 
extern double lot = 1;
extern double ts = 50; 
extern double sl = 50; 
extern double tp = 40;
extern double periodrsi = 30;
extern double hirsi = 80;
extern double lowrsi = 30;

int K=0;
int L=0;
 


int init()
  {
   return(0);
  }

 
int start()
  { 
    double r1 = iRSI(NULL,0,periodrsi,PRICE_CLOSE,1);


  

    static bool first = true;
    static int pre_OrdersTotal = 0;
    int _OrdersTotal = OrdersTotal();
    if ( first )
    {
        pre_OrdersTotal = _OrdersTotal;
        first = false;
        return(0);
    }
 
   
   
   
    if ( _OrdersTotal > pre_OrdersTotal ) 
{K=0;
L=0;}
    if ( _OrdersTotal < pre_OrdersTotal )
{K=0;
L=0;}
    pre_OrdersTotal = _OrdersTotal; 

if (r1>hirsi) K=1;
 {
 if ((K==1) && (r1<hirsi))

 { 
  L=(L+1);                        // набираем проходы вниз под hirsi

K=0;
 }
 }



 if(OrdersTotal()<1)

 {
 if((r1<hirsi) && (L==2))   //есть два прохода

 OrderSend(Symbol(),OP_SELL,lot,Bid,0,Ask+sl*Point,Bid-tp*Point,"Easiest ever",0,0);
Bonjour mes amis ! Veuillez me conseiller une fonction qui ajouterait la condition suivante à ce code. La transaction est ouverte seulement si le rsi a fait deux passages à la baisse pendant n-nombre de barres. c'est à dire si le rsi a fait deux passages à la baisse pendant 30 barres alors nous ouvrons un ordre, je n'arrive pas à comprendre) je suis un débutant)
 
TemirKhan:
Bonjour les amis ! Proposez une fonction qui ajouterait la condition suivante à ce code. Si le rsi a fait deux passages à la baisse pendant n-nombre de barres. Par exemple, si le rsi a fait deux passages à la baisse pendant 30 barres, alors ouvrez l'ordre, je n'arrive pas à comprendre).


Vous lancez le compteur. Ensuite, quand vous le passez dans l'historique, il compte selon la condition : "Si elle traverse vers le bas, vous ajoutez un au compteur... "etc.

Apprenez et prenez votre temps et vous y arriverez !

 
hoz:


Vous lancez le compteur. Ensuite, quand vous le passez à l'histoire, il compte par la condition : "Si elle traverse vers le bas, ajoutez un au compteur... ", etc.

Apprenez et prenez votre temps et tout s'arrangera !


Il y a donc un compteur de passage, le voilà :
if (r1>hirsi) K=1;
 {
 if ((K==1) && (r1<hirsi))

 { 
  L=(L+1);                        // набираем проходы вниз под hirsi

K=0;
 }
 }
maintenant nous avons besoin d'un compteur de barres, mais comment ?)) de sorte que L puisse obtenir une valeur de "2" seulement si les croisements se produisent dans les 30 barres
 

J'ai commencé à réfléchir. J'ai examiné la fonction de Kim pour dissiper mes doutes... et mon raisonnement a été confirmé. Pour une raison quelconque, la vérification du "flux de libre-échange" ne se fait que dans les cas suivants ouverture du site и fermeture du site les commandes... Et quand modifications (réglage initial de SL et TP), à traale et lors du transfert d'un poste vers Point d'équilibre il n'y a pas de contrôle. Pourquoi ? Après tout, dans les deux cas, c'est le serveur qui est appelé !

Après tout, si le trader est alors pris, le conseiller expert ne fixera logiquement pas de stops, par exemple, et ne fera rien du tout avec la position. Je ne comprends pas.

 
hoz:

J'ai commencé à réfléchir. J'ai examiné la fonction de Kim pour dissiper mes doutes... et mon raisonnement a été confirmé. Pour une raison quelconque, la vérification du "flux de libre-échange" ne se fait que dans les cas suivants ouverture du site и fermeture du site les commandes... Et quand modifications (réglage initial de SL et TP), à traale et lors du transfert d'un poste vers Point d'équilibre il n'y a pas de contrôle. Pourquoi ? Après tout, dans les deux cas, c'est le serveur qui est appelé !

Après tout, si le trader est alors pris, le conseiller expert ne fixera logiquement pas de stops, par exemple, et ne fera rien du tout avec la position. Je ne comprends pas.


Ce n'est pas grave. Réglez-le sur le prochain tic-tac
 
Vinin:

Ce n'est pas grave. Je le réglerai au prochain tic-tac

Dans ce cas, pourquoi vérifier à l'ouverture ou à la fermeture ? Il sera également réglé au prochain tick :) Après tout, il peut jouer un grand rôle pour un scalper...
 
hoz:

Dans ce cas, pourquoi vérifier à l'ouverture ou à la fermeture ? Sera également réglé sur le prochain tic :) Après tout, il peut jouer un rôle énorme pour un scalper...

Donc tout est entre vos mains. Ce sera donc fait. Certains le font de cette façon.
 

J'ai encore regardé dans la référence et j'ai encore lu les lignes ici :

https://docs.mql4.com/ru/basis/preprosessor/import

Для импорта функций во время выполнения mql4-программы используется так называемое позднее связывание. Это значит, что пока не вызвана импортируемая функция, соответствующий модуль (ex4 или dll) не загружается.

Je veux dire que pour que la bibliothèque soit chargée, elle doit être appelée dans le code après les lignes d'importation, non ?

Par exemple, j'ai fait comme ça :

#import "hoz_Base@Library.ex4"
   double ND(double A);
   double Get_TradePrice(int fi_priceId,       // Цена: 0 - Ask; 1 - Bid
                      string fs_symbol);

1. Il s'avère que nous déclarer des fonctions. que nous utiliserons dans le Conseiller Expert au tout début du code du Conseiller Expert ?

2. et ne pas les déclarer beaucoup dans le code du conseiller expert lui-même et utiliser des fichiers d'en-tête ? C'est-à-dire uniquement pour les déclarations ?

Cette question m'a été posée parce que j'ai vu des conseillers experts écrits par des programmeurs très sérieux, mais leurs fichiers d'en-tête contiennent toutes les fonctions principales et non principales. J'ai été surpris par ce... La raison en est que la vitesse des bibliothèques compilées est beaucoup plus rapide, de plus, le code des fonctions de la bibliothèque est "isolé", ce qui est également très pratique.

 
Bonjour, c'est la première fois que je viens ici alors je m'excuse, je n'avais pas vu ce fil et j'en ai créé un nouveau, j'ai vraiment besoin d'entendre des professionnels !

https://www.mql5.com/ru/forum/145453
 
Pouvez-vous me dire si la commande Sleep ne semble pas fonctionner du tout, ou si elle doit être remplacée par autre chose ?