[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 183

 

Salve.

Potete dirmi per favore se è possibile calcolare la distanza in punti tra due maschere.

La mia variante è riportata qui sotto, ma non funziona come previsto in origine.

Grazie in anticipo.

  int g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = maHX_slow - maHX_fast;
  Alert (g);
 
nemo811:

La mia variante è riportata qui sotto, ma non funziona come previsto in origine.

Ho trovato un errore. Ecco una versione funzionante:

  double g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = (maHX_slow - maHX_fast)/Point;
  Alert (g);
 

Pomeriggio....

Come trasferire il valore del prezzo di chiusura di un ordine da un terminale a un altro, facendo trading sulla stessa coppia di valute?

 
TANKER:

Buon pomeriggio....

Come trasferire il valore del prezzo di chiusura di un ordine da un terminale a un altro, facendo trading sulla stessa coppia di valute?


Se ti stai ponendo una domanda del genere, allora non credo che tu possa farlo da solo.
 

Buona sera a tutti!

Si pone la seguente domanda sugli array.

Supponiamo di dover analizzare n barre per una certa fluttuazione, selezionarla, metterla in un array e lavorare con questa...

Qui sotto c'è del codice; penso che i commenti spiegheranno tutto.

La logica è la seguente:

1. Impostiamo il numero necessario di barre.

2. Ripetere il tutto nel loop.

Cerca l'adempimento della condizione specificata(close_1>close_2&close_2<close_3).

4. Se la condizione è soddisfatta, allora calcoliamo la differenza diff tra il prezzo di chiusura close_1 e close_2.

E poi le domande stesse:

1. Come formare correttamente una matrice e scriverci i valori di diff (naturalmente, la dimensionalità della matrice è determinata a seconda del numero di valori ottenuti)?

2. Calcolare e visualizzare il numero di elementi nell'array ???

3. Selezionare ad esempio 3, 6, 7 elementi e calcolare la loro somma?

4. E infine, ad esempio, per stampare/avvisare direttamente l'intera matrice invece dei singoli elementi?

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   //определяем переменные
   int i, bars;
   double close_1, close_2, close_3;//цена закрытия
   double diff;//вычисление разности close_1 и close_2
   double Mas[];//массив куда надо заносить данные
   
   
   //устанавливаем значения переменных
   bars=60;//количество баров для анализа
   
   for(i=1;i<=bars;i++)
   {
      close_1=iClose(NULL,PERIOD_M1,i);
      close_2=iClose(NULL,PERIOD_M1,i+1);
      close_3=iClose(NULL,PERIOD_M1,i+2);
      
      //условие для отбора в массив
      if(close_1>close_2&&close_2<close_3)//если выполняется это условие, тогда
      {
         diff=close_1-close_2; //считаем разность и записываем это дело в массив 
         
         /*
         Собственно вопросы:
         1. Как правильно сформировать массив и записать туда полученные значения diff ???
         2. Посчитать и вывести количество элементов в массиве ???
         3. Выбрать например 3, 6, 7 элемент и посчитать их сумму ???
         4. И последнее, непосредственно вывести например в Print/Alert весь полученный массив, а не только отдельно взятый элемент ???
         */
         
         //Это просто вывод, чтобы удостовериться что наше условие работает, можно потереть... 
         Alert("i ",i," diff: ",DoubleToStr(diff,5));
         
      }
   }


   return(0);
  }
//+------------------------------------------------------------------+
Ed ecco un'immagine per chiarire quale condizione trattiamo. : ))

Grazie in anticipo a tutti!

 
NickXXX:

Buona sera a tutti!

È sorta la seguente domanda sugli array.

Supponiamo di voler analizzare n barre per una particolare oscillazione, selezionarla, memorizzarla in un array e lavorare con questa...

Ridete dopo la parola indicatore.

È più facile creare un indicatore, ha già otto array di buffer, metterci tutta la logica e poi indirizzare gli elementi richiesti attraverso iCustom

In print/alert l'intero array è un po' illeggibile, ma attraverso l'enumerazione e la creazione di una lunga stringa nel ciclo è abbastanza possibile.

3. Selezionare ad esempio 3, 6, 7 elementi e calcolare la loro somma?

O non si scherza su questo o si legge la documentazione.

double Summa=Mas[3]+Mas[6]+Mas[7];

Lettura consigliata https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

 
splxgf:

Ridete dopo la parola indicatore.

È più facile creare un indicatore, ha già otto array di buffer, trasferire tutta la logica ad esso, e poi indirizzare gli elementi necessari tramite iCustom

In print/alert l'intero array è un po' illeggibile, ma attraverso l'enumerazione e la creazione di una lunga stringa nel ciclo è abbastanza possibile.

O non si scherza in questo modo, o si legge la documentazione.

double Summa=Mas[3]+Mas[6]+Mas[7];

Lettura consigliata https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

Sì, non c'è bisogno di chiedere della summa). E qui non si tratta dell'indicatore. È piuttosto un esempio affinché io possa capire bene gli array.

Ho già visto l'articolo consigliato ma non mi ha aiutato a gestire questa domanda.

Quindi la mia domanda è ancora pertinente... Come costruire un array in questo esempio? Vi sarei molto grato se poteste darmi il codice per chiarezza. È più facile capire di cosa stiamo parlando.

 

meglio degli indicatori di fumo, tutti i calcoli sono legati alle barre, e la numerazione delle barre parte da zero e l'array viene spostato ad ogni nuova barra. L'utilizzo di un indicatore vi permetterà di trasferire la logica di lavoro con gli array al sistema, in più aggiungerà capacità visive, oltre ad un facile utilizzo da un EA.

Fate un indicatore, altrimenti è molto difficile collegare gli elementi calcolati dell'array alle barre del grafico.

 
splxgf:

meglio degli indicatori di fumo, tutti i calcoli sono legati alle barre, e la numerazione delle barre parte da zero e l'array viene spostato ad ogni nuova barra. L'utilizzo di un indicatore vi permetterà di trasferire la logica di lavoro con gli array al sistema, in più aggiungerà capacità visive, oltre ad un facile utilizzo da un EA.

Fate l'indicatore, altrimenti sarà molto difficile legare gli elementi calcolati dell'array alle barre del grafico.

Ok, ho capito, è meglio leggere tutto nell'indicatore e inviare i valori all'Expert Advisor.

Ma il problema qui è un po' diverso, non posso riempire l'array di dati, mostra degli zeri. Voglio capirlo.

Di nuovo, usando questo esempio. Legandosi alle barre che ho, basta andare in sequenza su i ed elaborare la giusta condizione close_1>close_2&close_2<close_3 (solo per esempio).

E ora la cosa più interessante è che abbiamo calcolato diff=close_1-close_2. Come mettere questo valore di diff nell'array?

Penso che con la dimensione possiamo fare una variabile aggiuntiva int n e aumentarla di 1 (n++) in if condition, otterremo quante volte la condizione ha funzionato e prenderemo questo numero come dimensione.

Ma comunque, come mettere il valore diff in un array?

 
NickXXX:

Capisco, è meglio leggere tutto nell'indicatore e inviare i valori all'Expert Advisor.

Ma la domanda è un po' diversa, non riesco a riempire l'array di dati, mi restituisce degli zeri. Voglio capirlo.

Di nuovo, usando questo esempio. Vincolandosi alle barre che ho, basta andare in sequenza su i ed elaborare la giusta condizione close_1>close_2&close_2<close_3 (solo per esempio).

E ora la cosa più interessante è che abbiamo calcolato diff=close_1-close_2. Come mettere questo valore di diff nell'array?

Penso che possiamo fare una variabile aggiuntiva int n e aumentarla di 1 (n++) in if condition, otterremo quante volte la condizione ha funzionato e prenderemo questo numero come dimensione.

Ma comunque, come mettere un valore diverso in un array?

Guarda, probabilmente sono un cappero in questo momento, ma immagino che tu sia sconcertato dal fatto che sto usando uno script in questo esempio. Dicevi sul serio quando hai scritto dell'indicatore? Se lo facessi, allora farei tutti i calcoli dinamici in un indicatore o in un Expert Advisor direttamente. L'ho solo lanciato una volta, l'ho guardato e poi ho corretto il codice))).

La domanda precedente è ancora pertinente. L'oggetto della matrice non è risolto).