Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 52

 

Ciao a tutti, ho appena iniziato a imparare la lingua oggi. Non riesco a capire come scrivere la condizione da controllare sempre.

Se il prezzo nell'intervallo di tempo t (inserito dall'utente come decimale con una posizione decimale, per esempio 15.5 sec) scende di una quantità n (inserito dall'utente come intero, per esempio 5), allora l'Expert Advisor apre una vendita.

grazie!

 
Ciao a tutti. C'è bisogno di un generatore di quotazioni casuali di qualità, almeno del tipo moto browniano geometrico o (idealmente)))) funzione Weierstrass-Mandelbrot con un esponente stocastico di Hearst. La necessità è sorta a causa del fine settimana, ho bisogno di eseguire il debug di un indicatore su una serie di prezzi. Non farò a meno dello script iTicks. Ho provato a farlo o dovrò svilupparlo io stesso? La ricerca sul sito non ha dato nulla, ma forse quello che sto cercando si chiama semplicemente in un altro modo rispetto alle parole chiave che sto cercando...
 
expmaestro:

Ciao a tutti, ho appena iniziato a imparare la lingua oggi. Non riesco a capire come scrivere la condizione da controllare sempre.

Se il prezzo nell'intervallo di tempo t (inserito dall'utente come decimale con una posizione decimale, per esempio 15.5 sec) scende di una quantità n (inserito dall'utente come intero, per esempio 5), allora l'Expert Advisor apre una vendita.

grazie!

Ecco l'algoritmo. Imparate dagli esempi.
 
Grazie, cercherò di capirlo, spero che sia davvero quello di cui ho bisogno.
 
expmaestro:
Grazie, cercherò di capirlo, spero che sia davvero quello di cui ho bisogno.

Ero sicuro che Lucky si basasse su questo principio, ma si è scoperto che non è così. Allora provate un tale 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+
Dovete controllare se il codice funziona. L'intervallo di tempo è calcolato come multiplo di 1 secondo. Ridurre l'intervallo di tempo non dipende da me.
 

Potete per favore dirmi come implementare un tasto di scelta rapida sul grafico? in modo da poter cambiare il valore di un parametro nell'EA - è possibile? cosa devo fare?

Supponendo che il tipo di variabile sia bool - se ho capito bene, avrete bisogno solo di 2 chiavi per variabile: otterrete TRUE o FALSE.

 

Ho bisogno di usare la stessa funzione ma con variabili diverse per calcolare i valori delle celle di 2 array simili. Gli array sono unidimensionali.

Come posso scrivere una tale funzione? È possibile?

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

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

Ed è possibile fare la stessa cosa con più array multidimensionali? - 2, 3 dimensioni.

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

Ho aggiunto un ampersand (&)

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

e funziona... : ))) Solo che non so a cosa serva - ho solo provato per analogia (metodo del calibro). Se puoi dirmelo, sarei felice di saperlo. : ))

 
Chiripaha:

Potete per favore consigliarmi come implementare un tasto di scelta rapida sul grafico? in modo da poter cambiare il valore di un parametro nell'EA - è possibile? cosa è necessario fare?

Supponiamo che il tipo di variabile sia bool - se ho capito bene, allora ci saranno solo 2 chiavi su una variabile: si otterrà TRUE o FALSE.

La biblioteca può aiutare?

 // 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);     // Код дополнительной клавиши.
Queste sono le descrizioni della nuova versione. I parametri sono disposti diversamente nel salvadanaio.
 
Zhunko:

La biblioteca può aiutare?

Queste descrizioni sono della nuova versione. Il salvadanaio ha diversi parametri.

Sì, Vadim, stavo guardando la tua libreria quando ho scritto questa domanda. E l'ho scaricato più di mezzo anno fa (e ho guardato quello nuovo anche ieri). Solo che non so come usarlo, ecco perché ho chiesto "come fare" - come un piccolo esempio. Perché potrei con funzione a un array da solo, ma qui trovo un po' difficile da indovinare al mio attuale livello di abilità di programmazione.