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

 

Bonjour à tous ! Je viens de commencer à apprendre le langage aujourd'hui. Je n'arrive pas à trouver comment écrire la condition qui doit toujours être vérifiée.

Si le prix dans l'intervalle de temps t (saisi par l'utilisateur sous la forme d'un nombre décimal avec une décimale, par exemple 15,5 sec) baisse d'un montant n (saisi par l'utilisateur sous la forme d'un nombre entier, par exemple 5), alors le conseiller expert ouvre une vente.

Merci !

 
Bonjour à tous. Il est nécessaire de disposer d'un générateur de devis aléatoire de qualité, au moins du type mouvement brownien géométrique ou (idéalement)))) fonction de Weierstrass-Mandelbrot avec un exposant de Hearst stochastique. Le besoin s'est fait sentir à cause du week-end, je dois déboguer un indicateur sur une série de prix. Je ne pourrai pas me passer du script iTicks. J'ai essayé de le faire ou je devrai le développer moi-même ? La recherche sur le site n'a rien donné, mais peut-être que ce que je cherche s'appelle simplement autrement que par les mots-clés que je cherche...
 
expmaestro:

Bonjour à tous ! Je viens de commencer à apprendre le langage aujourd'hui. Je n'arrive pas à trouver comment écrire la condition qui doit toujours être vérifiée.

Si le prix dans l'intervalle de temps t (saisi par l'utilisateur sous la forme d'un nombre décimal avec une décimale, par exemple 15,5 sec) baisse d'un montant n (saisi par l'utilisateur sous la forme d'un nombre entier, par exemple 5), alors le conseiller expert ouvre une vente.

Merci !

Voici cet algorithme. Tirez les leçons des exemples.
 
Merci, je vais essayer de trouver une solution. J'espère que c'est vraiment ce dont j'ai besoin.
 
expmaestro:
Merci, je vais essayer de trouver une solution. J'espère que c'est vraiment ce dont j'ai besoin.

J'étais sûr que Lucky était basé sur ce principe, mais il s'est avéré que ce n'était pas le cas. Alors essayez un tel schéma :

extern int ShiftSec = 15;
extern int ShiftPips = 10;
//IIIIIIIIIIIIIIIIIII======Глобальные переменные советника======IIIIIIIIIIIIIIIIIIIIII+
datetime   gdt_NewTime;
double     gda_Price[0][2];
int        gi_size;
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert initialization function                            |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void init()
{
//----
    gi_size = 0;
//---- 
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert deinitialization function                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void deinit()
{
//----
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert iteration function                                 |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void start()
{       
//----
    if (gdt_NewTime == TimeCurrent()) return;
    gdt_NewTime = TimeCurrent();
    if (gi_size < ShiftSec) {ArrayResize (gda_Price, gi_size + 1); gi_size++;}
    else
    {
        //---- Это схема к которой нужно добавить управление ордерами
        if (gda_Price[0][0] - Bid > ShiftPips * Point)
        //---- Открываемся BUY
        if (Ask - gda_Price[0][1] > ShiftPips * Point)
        //---- Открываемся SELL
        //---- Сдвигаем массив цен на 1 вниз
        double lda_tmp[][2];
        ArrayResize (lda_tmp, gi_size);
        ArrayCopy (lda_tmp, gda_Price);
        int li_IND0, li_IND1;
        for (li_IND0 = 0; li_IND0 < gi_size - 1; li_IND0++)
        {
            for (li_IND1 = 0; li_IND1 < 2; li_IND1++)
            gda_Price[li_IND0][li_IND1] = lda_tmp[li_IND0+1][li_IND1];
        }
    }
    //---- Собираем цены
    gda_Price[gi_size-1][0] = Bid;
    gda_Price[gi_size-1][1] = Ask;
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
Vous devez vérifier si le code fonctionne. L'intervalle de temps est calculé en multiples de 1 seconde. La réduction de l'intervalle de temps ne dépend pas de moi.
 

Pouvez-vous me dire comment mettre en place un raccourci clavier sur le graphique ? afin de pouvoir modifier la valeur d'un paramètre dans l'EA - est-ce possible ? que dois-je faire ?

En supposant que le type de variable est bool - si je comprends bien, vous n'aurez besoin que de 2 clés par variable : vous obtiendrez TRUE ou FALSE.

 

J'ai besoin d'utiliser la même fonction mais avec des variables différentes pour calculer les valeurs des cellules de deux tableaux similaires. Les tableaux sont unidimensionnels.

Comment écrire une telle fonction ? Est-ce possible ?

Расчет_Массива(Массив_1, 5.0, 6.0);                       // Вызов функции

void Расчет_Массива(double array[], double A, double B)   // Сама функция
  {
   for (i=0; i<10; i++)
     {
      array[i]= A+B*i;
     }
  }

Est-il possible de faire la même chose avec des tableaux plus multidimensionnels? - 2, 3 dimensions.

--------------

J'ai ajouté une esperluette (&)

void Расчет_Массива(double& array[], double A, double B)   // Сама функция

et ça marche... : ))) Seulement, je ne sais pas à quoi il sert - je l'ai juste essayé par analogie (méthode de la jauge). Si vous pouvez me le dire, je serais heureux de le savoir. : ))

 
Chiripaha:

Pouvez-vous me conseiller sur la façon d'implémenter une touche de raccourci sur le graphique ? afin de pouvoir modifier la valeur d'un paramètre dans l'EA - est-ce possible ? que devez-vous faire ?

Supposons que le type de la variable est bool - si je comprends bien, alors il n'y aura besoin que de 2 clés sur une variable : vous obtiendrez TRUE ou FALSE.

La bibliothèque peut-elle vous aider ?

 // 2.2.3. Функция управляет горячими клавишами терминала МТ4.
 void ServiceMetaTraderHotKeys(int nKeyMode, // Код клавиши-модификатора. Может быть только предопределённым значением из:
                                             // VK_SHIFT, VK_LSHIFT, VK_RSHIFT, VK_CONTROL, VK_LCONTROL, VK_RCONTROL, VK_MENU, VK_LMENU, VK_RMENU, VK_LWIN, VK_RWIN.
                               int nKey);    // Код дополнительной клавиши.

 // 4.1.2. Функция управляет горячими клавишами на указанном графике.
 void ServiceChartHotKeys(int hwndChart, // Системный дескриптор окна, на котором применяются горячие клавиши.
                          int nKeyMode,  // Код клавиши-модификатора. Может быть только предопределённым значением из:
                                         // VK_SHIFT, VK_LSHIFT, VK_RSHIFT, VK_CONTROL, VK_LCONTROL, VK_RCONTROL, VK_MENU, VK_LMENU, VK_RMENU, VK_LWIN, VK_RWIN.
                          int nKey);     // Код дополнительной клавиши.
Ce sont les descriptions de la nouvelle version. Les paramètres sont disposés différemment dans la tirelire.
 
Zhunko:

La bibliothèque peut-elle vous aider ?

Ces descriptions sont tirées de la nouvelle version. La tirelire a différents paramètres.

Oui, Vadim, je regardais justement votre bibliothèque lorsque j'ai écrit cette question. Et je l'ai téléchargé il y a plus de six mois (et j'ai regardé le nouveau hier aussi). Je ne sais simplement pas comment l'utiliser, c'est pourquoi j'ai demandé "comment faire" - comme un petit exemple. Parce que je pourrais avec la fonction à un tableau par moi-même, mais ici je trouve que c'est un peu difficile à deviner à mon niveau actuel de compétences en programmation.
Raison: