Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 52

 

Hallo an alle! Ich habe heute gerade angefangen, die Sprache zu lernen. Ich kann nicht herausfinden, wie man die Bedingung schreibt, die immer überprüft wird.

Fällt der Kurs im Zeitintervall t (vom Benutzer als Dezimalstelle mit einer Nachkommastelle eingegeben, z.B. 15,5 sec) um einen Betrag n (vom Benutzer als ganze Zahl eingegeben, z.B. 5), dann eröffnet der Expert Advisor einen Verkauf.

Ich danke Ihnen!

 
Hallo zusammen. Es besteht ein Bedarf an einem qualitativ hochwertigen Zufallsgenerator, zumindest vom Typ der geometrischen Brownschen Bewegung oder (idealerweise)))) Weierstraß-Mandelbrot-Funktion mit stochastischem Hurst-Exponenten. Die Notwendigkeit hat sich wegen des Wochenendes ergeben, ich muss einen Indikator auf eine Preisreihe debuggen. Auf das iTicks-Skript möchte ich nicht verzichten. Ich habe versucht, es zu tun, oder muss ich es selbst entwickeln? Die Suche auf der Website ergab nichts, aber vielleicht heißt das, wonach ich suche, einfach anders als die Schlüsselwörter, nach denen ich suche...
 
expmaestro:

Hallo an alle! Ich habe heute gerade angefangen, die Sprache zu lernen. Ich kann nicht herausfinden, wie man die Bedingung schreibt, die immer überprüft wird.

Fällt der Kurs im Zeitintervall t (vom Benutzer als Dezimalstelle mit einer Nachkommastelle eingegeben, z.B. 15,5 sec) um einen Betrag n (vom Benutzer als ganze Zahl eingegeben, z.B. 5), dann eröffnet der Expert Advisor einen Verkauf.

Ich danke Ihnen!

Hier ist der Algorithmus. Lernen Sie von den Beispielen.
 
Danke, ich werde versuchen, es herauszufinden. Ich hoffe, das ist wirklich das, was ich brauche.
 
expmaestro:
Danke, ich werde versuchen, es herauszufinden, ich hoffe, es ist wirklich das, was ich brauche.

Ich war mir sicher, dass Lucky auf diesem Prinzip beruht, aber es stellte sich heraus, dass dies nicht der Fall war. Dann versuchen Sie es mit einem solchen Schema:

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+
Sie müssen prüfen, ob der Code funktioniert. Das Zeitintervall wird als ein Vielfaches von 1 Sekunde berechnet. Die Verkürzung des Zeitintervalls liegt nicht in meiner Hand.
 

Können Sie mir bitte sagen, wie man einen Hotkey auf dem Diagramm zu implementieren? so dass Sie den Wert eines Parameters in der EA ändern können - ist dies möglich? was muss ich tun?

Angenommen, der Variablentyp ist bool - wenn ich das richtig verstehe, brauchen Sie nur 2 Schlüssel pro Variable: Sie erhalten TRUE oder FALSE.

 

Ich muss dieselbe Funktion verwenden, aber mit verschiedenen Variablen, um die Zellwerte von 2 ähnlichen Arrays zu berechnen. Die Arrays sind eindimensional.

Wie kann ich eine solche Funktion schreiben? Ist das möglich?

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

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

Und ist es möglich, dasselbe mit mehr mehrdimensionalen Arrays zu tun? - 2, 3 dimensional.

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

Ich habe ein kaufmännisches Und (&) hinzugefügt.

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

und es funktioniert... : ))) Nur weiß ich nicht, wozu das gut sein soll - ich habe es einfach analog ausprobiert (Messmethode). Wenn Sie mir das sagen können, würde ich das gerne wissen. : ))

 
Chiripaha:

Können Sie bitte beraten, wie man einen Hotkey auf dem Diagramm zu implementieren? so dass Sie den Wert eines Parameters in der EA ändern können - ist dies möglich? was müssen Sie tun?

Angenommen, der Variablentyp ist bool - wenn ich das richtig verstehe, dann brauchen Sie nur 2 Schlüssel pro Variable: Sie erhalten TRUE oder FALSE.

Kann die Bibliothek helfen?

 // 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);     // Код дополнительной клавиши.
Dies sind Beschreibungen aus der neuen Version. Die Parameter sind im Sparschwein unterschiedlich angeordnet.
 
Zhunko:

Vielleicht kann die Bibliothek helfen?

Diese Beschreibungen stammen aus der neuen Version. Das Sparschwein hat verschiedene Parameter.

Ja, Vadim, ich habe mir gerade Ihre Bibliothek angesehen, als ich diese Frage schrieb. Und ich habe sie vor mehr als einem halben Jahr heruntergeladen (und mir gestern auch die neue Version angesehen). Ich weiß nur nicht, wie man es benutzt, deshalb habe ich gefragt, "wie man es macht" - wie ein kleines Beispiel. Denn ich könnte mit Funktion zu einem Array von selbst, aber hier finde ich es ein bisschen schwierig, auf meinem aktuellen Niveau der Programmierkenntnisse zu erraten.