[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 614

 
Urain:

MathRand dovrebbe essere inizializzato con MathSrand() prima dell'uso,

e consiglio di passare TimeLocal() come parametro di MathSrand().

L'inizializzazione è richiesta una volta, poi per 32768 interrogazioni MathRand() non viene rilevata,

Dopo di che potete inizializzare di nuovo se volete una nuova sequenza, altrimenti succede la stessa cosa.

Si può naturalmente inizializzare ogni passo, ma è necessario monitorare il parametro di inizializzazione per cambiare,

altrimenti è la stessa sequenza.


Questo è quello che faccio. Cos'è il timelockal?

Ho lo stesso set sulla stessa storia.

 
QUALCUNO MI DIA UN SUGGERIMENTO... TERZA VOLTA che scrivo e nessuno risponde...AccountEquity() UNA BARRA SOPRA (su una barra passata) COME SCRIVERE?
 
vlad123:


Questo è quello che faccio. Cos'è il timelockal?

Ho lo stesso set sulla stessa storia.


Esempi dal libro di testo:

datetime TimeLocal()

La funzione restituisce l'ora locale del computer come il numero di secondi trascorsi dalle 00:00 del 1° gennaio 1970.
Nota: quando viene testato, l'ora locale è simulata e corrisponde all'ultima ora nota del server simulata.

Esempio:

MathSrand(TimeLocal());
  // Отображает 10 чисел.
  for(int i=0;i<10;i++ )Print("произвольная величина ", MathRand());

 
sllawa3:
QUALCUNO POTREBBE PER FAVORE CONSIGLIARE. ...AccountEquity() UNA BARRA SOPRA (su una barra passata) COME SCRIVERE?

Risposta: assolutamente no.
AccountEquity() restituisce la quantità di capitale, e non dipende dal numero di barre.
Non si possono conoscere i suoi valori precedenti semplicemente tornando indietro nella storia delle barre.
Il suo valore dipende dal numero di operazioni aperte/chiuse, redditizie/perdenti.
Per registrare la "storia del capitale", create un array statico e registrate il valore di AccountEquity() in esso, per esempio, ad ogni apertura di barra.
Quindi, avremmo bisogno di scorrere l'array per ottenere la storia dei cambiamenti di capitale.

 
sllawa3:
QUALCUNO MI DIA UN SUGGERIMENTO... AccountEquity() UNA BARRA SOPRA (su una barra passata) COME SCRIVERE?

Sembra che dobbiamo memorizzarlo su ogni nuova barra in una variabile, per esempio in questo modo:

1. memorizzare il valore iniziale del capitale nella funzione init() in una variabile, diciamo EquAkk=AccountEquity();

2. controlla l'apparizione di una nuova barra (non in init ovviamente), se sì, allora
{
LastEqu=EquAkk; // memorizza il valore passato (richiesto da noi) del capitale nella variabile
EquAkk=AccountEquity(); // registra il nuovo valore del capitale (per il prossimo valore "passato")
}

Così, la variabile LastEqu memorizzerà il valore del capitale per la barra passata, e il suo valore sarà sovrascritto nuovamente quando la prossima barra sarà aperta...

... L'ho scritto da solo, non l'ho controllato e mi sono già addormentato, quindi non prendetemi troppo a calci...
Penso di aver capito l'idea. ....

 
ToLik_SRGV:

Risposta: assolutamente no.
AccountEquity() restituisce la quantità di capitale, e non dipende dal numero di barre.
Non è possibile conoscere i suoi valori precedenti semplicemente tornando indietro nella storia delle barre.
Il suo valore dipende dal numero di operazioni aperte/chiuse, redditizie/perdenti.
Per registrare la "storia del capitale", create un array statico e registrate il valore di AccountEquity() in esso, per esempio, ad ogni apertura di barra.
Di conseguenza, sarebbe possibile ottenere la storia dei cambiamenti di capitale scorrendo la matrice.



QUINDI, È ANCORA POSSIBILE
 
sllawa3:
QUINDI, È ANCORA POSSIBILE


Bene, ho scritto la stessa cosa ma invece di una variabile, ho proposto di usare un array.

Per registrare la "storia del capitale", è necessario, per esempio, creare un array statico e registrare in esso il valore di AccountEquity(), per esempio, all'apertura di ogni barra.
Di conseguenza, la storia dei cambiamenti di capitale dovrebbe essere ottenuta scorrendo la matrice.

 
Ragazzi, non riesco a capire come impostare le frecce sul grafico, una sulla barra più alta degli ultimi 80 giorni e l'altra sulla barra più bassa degli stessi 80 giorni. Ho creato questo codice, ma sta lanciando frecce a grappolo... Ho bisogno di una freccia al minimo e al massimo di ogni barra per gli ultimi 80 giorni, poi per i prossimi 80 giorni, ecc. Puoi darmi un suggerimento?
//====================================================================================
   int      NBars,MostHiBar, MostLoBar;
   double   MostHiPrice,MostLoPrice;
   datetime TMostHiBar,TMostLoBar;
   
//-----------------------------------------------------------------
   NBars       = 80;
   MostHiBar   = iHighest(NULL,PERIOD_D1,MODE_HIGH,NBars,0);      // Номер "максимального" бара
   MostLoBar   = iLowest (NULL,PERIOD_D1,MODE_LOW, NBars,0);      // Номер "минимального" бара
   MostHiPrice = iHigh   (NULL,PERIOD_D1,MostHiBar);              // Цена  "максимального" бара
   MostLoPrice = iLow    (NULL,PERIOD_D1,MostLoBar);              // Цена  "минимального" бара
   
   TMostHiBar  = iTime   (NULL,PERIOD_D1,MostHiBar);              // Время открытия "максимального" бара
   TMostLoBar  = iTime   (NULL,PERIOD_D1,MostLoBar);              // Время открытия "минимального" бара

   Comment (
            "\n", 
            "Наибольшая цена за ", NBars, " дней = ", MostHiPrice, "\n",
            "Наименьшая цена за ", NBars, " дней = ", MostLoPrice, "\n",
            "Время наибольш. бара = ", Time[MostHiBar], "\n",
            "Время наименьш. бара = ", Time[MostLoBar]   // сюда пробовал и TMostLoBar вставлять - пофигу...           
           );
           
   SetArrow(241, MediumSpringGreen, "", Time[MostHiBar], High[MostHiBar], 0);
   SetArrow(242, OrangeRed, "", Time[MostLoBar], Low[MostLoBar], 0);
//====================================================================================
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка значка на графике, объект OBJ_ARROW.                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cd - код значка                                                         |
//|    cl - цвет значка                                                        |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    t1 - время открытия бара        (0  - текущий бар)                      |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    sz - размер значка              (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=0) 
{
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[0];
  if (p1<=0) p1=Bid;
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1    , t1);
  ObjectSet(nm, OBJPROP_PRICE1   , p1);
  ObjectSet(nm, OBJPROP_ARROWCODE, cd);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//====================================================================================
 
Potreste dirmi se è possibile aprire una posizione in MT tramite stop? Per esempio, metti uno stop dietro il supporto/copr. e se sfonda, lo stop apre una posizione.
 
Craft:
Potreste dirmi se è possibile aprire una posizione su uno stop in MT? Per esempio, metti uno stop dietro il supporto/sopr. e se sfonda, lo stop apre una posizione.

Certo. Solo che non si chiama stop ma un ordine pendente. Aprite il vostro terminale. Premere F1 in esso. Nella finestra che appare aprite Contents - Trade - Order Type.