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

 
001:

Ci sono variabili iniziali, ma nel corso del lavoro sono necessarie nuove variabili. Ecco la domanda: come faccio a creare variabili NUOVE tramite il codice? Ho N variabili e


e vengono utilizzati diversi TF.

Si possono usare array e funzioni
 
Vinin:
Si possono usare array e funzioni
È per questo che lo chiedo, perché mi sono scervellato su come farlo.
 
001:
Per questo te lo chiedo, mi sto scervellando su come farlo.

Finora si è parlato solo di generalità.

Non si può fare senza specifiche.

Portami il codice che mi ha tormentato il cervello

 
Vinin :

Finora abbiamo parlato solo del generale.

Non funzionerà senza specifiche.

Dammi il codice che mi ha rotto la testa


Questo è per l'M15. Ogni N minuti è una variabile, per M15 ce ne sono 96. Vorrei ottenere un bel codice invece di questa disgrazia.

 int количество_лоу_15= 0 ;
int количество_лоу_30= 0 ;
int количество_лоу_45= 0 ;
int количество_лоу_60= 0 ;
int количество_лоу_75= 0 ;
int количество_лоу_90= 0 ;
int количество_лоу_105= 0 ;
int количество_лоу_120= 0 ;
int количество_лоу_135= 0 ;
int количество_лоу_150= 0 ;
int количество_лоу_165= 0 ;
int количество_лоу_180= 0 ;
int количество_лоу_195= 0 ;
int количество_лоу_210= 0 ;
int количество_лоу_225= 0 ;
int количество_лоу_240= 0 ;
int количество_лоу_255= 0 ;
int количество_лоу_270= 0 ;
int количество_лоу_285= 0 ;
int количество_лоу_300= 0 ;
int количество_лоу_315= 0 ;
int количество_лоу_330= 0 ;
int количество_лоу_345= 0 ;
int количество_лоу_360= 0 ;
int количество_лоу_375= 0 ;
int количество_лоу_390= 0 ;
int количество_лоу_405= 0 ;
int количество_лоу_420= 0 ;
int количество_лоу_435= 0 ;
int количество_лоу_450= 0 ;
int количество_лоу_465= 0 ;
int количество_лоу_480= 0 ;
int количество_лоу_495= 0 ;
int количество_лоу_510= 0 ;
int количество_лоу_525= 0 ;
int количество_лоу_540= 0 ;
int количество_лоу_555= 0 ;
int количество_лоу_570= 0 ;
int количество_лоу_585= 0 ;
int количество_лоу_600= 0 ;
int количество_лоу_615= 0 ;
int количество_лоу_630= 0 ;
int количество_лоу_645= 0 ;
int количество_лоу_660= 0 ;
int количество_лоу_675= 0 ;
int количество_лоу_690= 0 ;
int количество_лоу_705= 0 ;
int количество_лоу_720= 0 ;
int количество_лоу_735= 0 ;
int количество_лоу_750= 0 ;
int количество_лоу_765= 0 ;
int количество_лоу_780= 0 ;
int количество_лоу_795= 0 ;
int количество_лоу_810= 0 ;
int количество_лоу_825= 0 ;
int количество_лоу_840= 0 ;
int количество_лоу_855= 0 ;
int количество_лоу_870= 0 ;
int количество_лоу_885= 0 ;
int количество_лоу_900= 0 ;
int количество_лоу_915= 0 ;
int количество_лоу_930= 0 ;
int количество_лоу_945= 0 ;
int количество_лоу_960= 0 ;
int количество_лоу_975= 0 ;
int количество_лоу_990= 0 ;
int количество_лоу_1005= 0 ;
int количество_лоу_1020= 0 ;
int количество_лоу_1035= 0 ;
int количество_лоу_1050= 0 ;
int количество_лоу_1065= 0 ;
int количество_лоу_1080= 0 ;
int количество_лоу_1095= 0 ;
int количество_лоу_1110= 0 ;
int количество_лоу_1125= 0 ;
int количество_лоу_1140= 0 ;
int количество_лоу_1155= 0 ;
int количество_лоу_1170= 0 ;
int количество_лоу_1185= 0 ;
int количество_лоу_1200= 0 ;
int количество_лоу_1215= 0 ;
int количество_лоу_1230= 0 ;
int количество_лоу_1245= 0 ;
int количество_лоу_1260= 0 ;
int количество_лоу_1275= 0 ;
int количество_лоу_1290= 0 ;
int количество_лоу_1305= 0 ;
int количество_лоу_1320= 0 ;
int количество_лоу_1335= 0 ;
int количество_лоу_1350= 0 ;
int количество_лоу_1365= 0 ;
int количество_лоу_1380= 0 ;
int количество_лоу_1395= 0 ;
int количество_лоу_1410= 0 ;
int количество_лоу_1425= 0 ;
////////   
   if (время_лоу   ==     15    )   количество_лоу_15   =количество_лоу_15   + 1 ;
   if (время_лоу   ==     30    )   количество_лоу_30   =количество_лоу_30   + 1 ;
   if (время_лоу   ==     45    )   количество_лоу_45   =количество_лоу_45   + 1 ;
   if (время_лоу   ==     60    )   количество_лоу_60   =количество_лоу_60   + 1 ;
   if (время_лоу   ==     75    )   количество_лоу_75   =количество_лоу_75   + 1 ;
   if (время_лоу   ==     90    )   количество_лоу_90   =количество_лоу_90   + 1 ;
   if (время_лоу   ==   105    )   количество_лоу_105   =количество_лоу_105   + 1 ;
   if (время_лоу   ==   120    )   количество_лоу_120   =количество_лоу_120   + 1 ;
   if (время_лоу   ==   135    )   количество_лоу_135   =количество_лоу_135   + 1 ;
   if (время_лоу   ==   150    )   количество_лоу_150   =количество_лоу_150   + 1 ;
   if (время_лоу   ==   165    )   количество_лоу_165   =количество_лоу_165   + 1 ;
   if (время_лоу   ==   180    )   количество_лоу_180   =количество_лоу_180   + 1 ;
   if (время_лоу   ==   195    )   количество_лоу_195   =количество_лоу_195   + 1 ;
   if (время_лоу   ==   210    )   количество_лоу_210   =количество_лоу_210   + 1 ;
   if (время_лоу   ==   225    )   количество_лоу_225   =количество_лоу_225   + 1 ;
   if (время_лоу   ==   240    )   количество_лоу_240   =количество_лоу_240   + 1 ;
   if (время_лоу   ==   255    )   количество_лоу_255   =количество_лоу_255   + 1 ;
   if (время_лоу   ==   270    )   количество_лоу_270   =количество_лоу_270   + 1 ;
   if (время_лоу   ==   285    )   количество_лоу_285   =количество_лоу_285   + 1 ;
   if (время_лоу   ==   300    )   количество_лоу_300   =количество_лоу_300   + 1 ;
   if (время_лоу   ==   315    )   количество_лоу_315   =количество_лоу_315   + 1 ;
   if (время_лоу   ==   330    )   количество_лоу_330   =количество_лоу_330   + 1 ;
   if (время_лоу   ==   345    )   количество_лоу_345   =количество_лоу_345   + 1 ;
   if (время_лоу   ==   360    )   количество_лоу_360   =количество_лоу_360   + 1 ;
   if (время_лоу   ==   375    )   количество_лоу_375   =количество_лоу_375   + 1 ;
   if (время_лоу   ==   390    )   количество_лоу_390   =количество_лоу_390   + 1 ;
   if (время_лоу   ==   405    )   количество_лоу_405   =количество_лоу_405   + 1 ;
   if (время_лоу   ==   420    )   количество_лоу_420   =количество_лоу_420   + 1 ;
   if (время_лоу   ==   435    )   количество_лоу_435   =количество_лоу_435   + 1 ;
   if (время_лоу   ==   450    )   количество_лоу_450   =количество_лоу_450   + 1 ;
   if (время_лоу   ==   465    )   количество_лоу_465   =количество_лоу_465   + 1 ;
   if (время_лоу   ==   480    )   количество_лоу_480   =количество_лоу_480   + 1 ;
   if (время_лоу   ==   495    )   количество_лоу_495   =количество_лоу_495   + 1 ;
   if (время_лоу   ==   510    )   количество_лоу_510   =количество_лоу_510   + 1 ;
   if (время_лоу   ==   525    )   количество_лоу_525   =количество_лоу_525   + 1 ;
   if (время_лоу   ==   540    )   количество_лоу_540   =количество_лоу_540   + 1 ;
   if (время_лоу   ==   555    )   количество_лоу_555   =количество_лоу_555   + 1 ;
   if (время_лоу   ==   570    )   количество_лоу_570   =количество_лоу_570   + 1 ;
   if (время_лоу   ==   585    )   количество_лоу_585   =количество_лоу_585   + 1 ;
   if (время_лоу   ==   600    )   количество_лоу_600   =количество_лоу_600   + 1 ;
   if (время_лоу   ==   615    )   количество_лоу_615   =количество_лоу_615   + 1 ;
   if (время_лоу   ==   630    )   количество_лоу_630   =количество_лоу_630   + 1 ;
   if (время_лоу   ==   645    )   количество_лоу_645   =количество_лоу_645   + 1 ;
   if (время_лоу   ==   660    )   количество_лоу_660   =количество_лоу_660   + 1 ;
   if (время_лоу   ==   675    )   количество_лоу_675   =количество_лоу_675   + 1 ;
   if (время_лоу   ==   690    )   количество_лоу_690   =количество_лоу_690   + 1 ;
   if (время_лоу   ==   705    )   количество_лоу_705   =количество_лоу_705   + 1 ;
   if (время_лоу   ==   720    )   количество_лоу_720   =количество_лоу_720   + 1 ;
   if (время_лоу   ==   735    )   количество_лоу_735   =количество_лоу_735   + 1 ;
   if (время_лоу   ==   750    )   количество_лоу_750   =количество_лоу_750   + 1 ;
   if (время_лоу   ==   765    )   количество_лоу_765   =количество_лоу_765   + 1 ;
   if (время_лоу   ==   780    )   количество_лоу_780   =количество_лоу_780   + 1 ;
   if (время_лоу   ==   795    )   количество_лоу_795   =количество_лоу_795   + 1 ;
   if (время_лоу   ==   810    )   количество_лоу_810   =количество_лоу_810   + 1 ;
   if (время_лоу   ==   825    )   количество_лоу_825   =количество_лоу_825   + 1 ;
   if (время_лоу   ==   840    )   количество_лоу_840   =количество_лоу_840   + 1 ;
   if (время_лоу   ==   855    )   количество_лоу_855   =количество_лоу_855   + 1 ;
   if (время_лоу   ==   870    )   количество_лоу_870   =количество_лоу_870   + 1 ;
   if (время_лоу   ==   885    )   количество_лоу_885   =количество_лоу_885   + 1 ;
   if (время_лоу   ==   900    )   количество_лоу_900   =количество_лоу_900   + 1 ;
   if (время_лоу   ==   915    )   количество_лоу_915   =количество_лоу_915   + 1 ;
   if (время_лоу   ==   930    )   количество_лоу_930   =количество_лоу_930   + 1 ;
   if (время_лоу   ==   945    )   количество_лоу_945   =количество_лоу_945   + 1 ;
   if (время_лоу   ==   960    )   количество_лоу_960   =количество_лоу_960   + 1 ;
   if (время_лоу   ==   975    )   количество_лоу_975   =количество_лоу_975   + 1 ;
   if (время_лоу   ==   990    )   количество_лоу_990   =количество_лоу_990   + 1 ;
   if (время_лоу   ==   1005    )   количество_лоу_1005   =количество_лоу_1005   + 1 ;
   if (время_лоу   ==   1020    )   количество_лоу_1020   =количество_лоу_1020   + 1 ;
   if (время_лоу   ==   1035    )   количество_лоу_1035   =количество_лоу_1035   + 1 ;
   if (время_лоу   ==   1050    )   количество_лоу_1050   =количество_лоу_1050   + 1 ;
   if (время_лоу   ==   1065    )   количество_лоу_1065   =количество_лоу_1065   + 1 ;
   if (время_лоу   ==   1080    )   количество_лоу_1080   =количество_лоу_1080   + 1 ;
   if (время_лоу   ==   1095    )   количество_лоу_1095   =количество_лоу_1095   + 1 ;
   if (время_лоу   ==   1110    )   количество_лоу_1110   =количество_лоу_1110   + 1 ;
   if (время_лоу   ==   1125    )   количество_лоу_1125   =количество_лоу_1125   + 1 ;
   if (время_лоу   ==   1140    )   количество_лоу_1140   =количество_лоу_1140   + 1 ;
   if (время_лоу   ==   1155    )   количество_лоу_1155   =количество_лоу_1155   + 1 ;
   if (время_лоу   ==   1170    )   количество_лоу_1170   =количество_лоу_1170   + 1 ;
   if (время_лоу   ==   1185    )   количество_лоу_1185   =количество_лоу_1185   + 1 ;
   if (время_лоу   ==   1200    )   количество_лоу_1200   =количество_лоу_1200   + 1 ;
   if (время_лоу   ==   1215    )   количество_лоу_1215   =количество_лоу_1215   + 1 ;
   if (время_лоу   ==   1230    )   количество_лоу_1230   =количество_лоу_1230   + 1 ;
   if (время_лоу   ==   1245    )   количество_лоу_1245   =количество_лоу_1245   + 1 ;
   if (время_лоу   ==   1260    )   количество_лоу_1260   =количество_лоу_1260   + 1 ;
   if (время_лоу   ==   1275    )   количество_лоу_1275   =количество_лоу_1275   + 1 ;
   if (время_лоу   ==   1290    )   количество_лоу_1290   =количество_лоу_1290   + 1 ;
   if (время_лоу   ==   1305    )   количество_лоу_1305   =количество_лоу_1305   + 1 ;
   if (время_лоу   ==   1320    )   количество_лоу_1320   =количество_лоу_1320   + 1 ;
   if (время_лоу   ==   1335    )   количество_лоу_1335   =количество_лоу_1335   + 1 ;
   if (время_лоу   ==   1350    )   количество_лоу_1350   =количество_лоу_1350   + 1 ;
   if (время_лоу   ==   1365    )   количество_лоу_1365   =количество_лоу_1365   + 1 ;
   if (время_лоу   ==   1380    )   количество_лоу_1380   =количество_лоу_1380   + 1 ;
   if (время_лоу   ==   1395    )   количество_лоу_1395   =количество_лоу_1395   + 1 ;
   if (время_лоу   ==   1410    )   количество_лоу_1410   =количество_лоу_1410   + 1 ;
   if (время_лоу   ==   1425    )   количество_лоу_1425   =количество_лоу_1425   + 1 ;
 
001:

Questo è per M15. Ogni N minuti è una variabile, per M15 ce ne sono 96. Vorrei ottenere un bel codice invece di questo casino.

Per prendere la decisione giusta, è necessario capire cosa si vuole ottenere

 
001:

Questo è per M15. Ogni N minuti è una variabile, per M15 ce ne sono 96. Vorrei un bel codice invece di questo casino.

Usa gli array e il ciclo for. Se la domanda è di creare programmaticamente una nuova variabile, ad esempio Ogni 5 minuti, per esempio, per creare programmaticamente una nuova variabile, allora non c'è questa possibilità.
 
001:
È per questo che lo chiedo, perché mi sto scervellando su come farlo.
int MASS_LOW [];                                         // объявляем массив
int quantity=96;                                         // количество_лоу, можно изменять в программе и делать заново ресайз массива
ArrayResize(MASS_LOW,quantity);                          // размер масиива = количество_лоу
ArrayFill(MASS_LOW,0,quantity,0);                        // обнуление массива при необходмости

for(cnt=0; cnt<quantity; cnt++)                       // перебираем количество_лоу (от 0 до 95)
   {
   int c=(cnt+1)*15;                                    // 15 30 45 60 ....
   if (time_low == c) MASS_LOW [cnt]=MASS_LOW [cnt]++; // сравниваем время_лоу и увеличиваем при необходимости ячейку массива
   }

o immediatamente senza confrontare e sovrascrivere, semplicemente ingrandendo la cella desiderata:

cnt = time_low/15-1; 
MASS_LOW [cnt]=MASS_LOW [cnt]++;
 

Cari guru, per favore, aiutatemi, sono un nuovo arrivato!

Sto cercando di capire come funzionano gli indicatori scritti in MT4. Mi aspetto che gli indicatori siano calcolati in base alle barre, cioè se imposto Periodo (=) 13 nei parametri dell'indicatore Custom Moving Average, si tratta di fare la media su 13 barre del grafico appropriato.

Ma non vedo nessun gestore di eventi come OnBar, solo OnTick. Significa che il (mio) indicatore dovrebbe "formare" automaticamente delle barre dai tick raggruppandoli, per esempio, per minuti (per servire il grafico M1)?

Guardo nel codice di un indicatore già pronto Custom Moving Average - non ha OnTick ... L'evento Calculate appropriato nel manuale dice:"L'evento Calculate viene generato solo per gli indicatori [...] e ad ogni cambiamento dei dati di prezzo". In altre parole, OnCalculate risponde ad ogni tick?

 
fxseminar:

Cari guru, per favore, aiutatemi, sono un nuovo arrivato!

Sto cercando di capire come funzionano gli indicatori scritti in MT4. Mi aspetto che gli indicatori siano calcolati in base alle barre, cioè se imposto Periodo (=) 13 nei parametri dell'indicatore Custom Moving Average, si tratta di fare la media su 13 barre del grafico appropriato.

Ma non vedo nessun gestore di eventi dell'indicatore (creato da me), solo OnTick. Significa che il (mio) indicatore dovrebbe "formare" automaticamente delle barre dai tick raggruppandoli, per esempio, per minuti (per servire il grafico M1)?

Guardo nel codice di un indicatore già pronto Custom Moving Average - non ha OnTick ... L'evento Calculate appropriato nel manuale dice:"L'evento Calculate viene generato solo per gli indicatori [...] e ad ogni cambiamento dei dati di prezzo". In altre parole, OnCalculate risponde ad ogni tick?


Ad ogni tick se si usa Close[0]. Puoi usare Close[1] o Open[0], allora vedrai i cambiamenti solo quando la barra cambia.
 
borilunad:
Ad ogni tick, se si usa Close[0]. Puoi usare Close[1] o Open[0], allora vedrai il cambiamento solo quando cambi la barra.
-- Spiacente, l'indicatoreCustom Moving Average NON può fare la media sui tick. Puoi immaginare come funzionerebbe (apparirebbe) su un timeframe giornaliero, per esempio?
Motivazione: