L'indicatore del sistema Sultonov - pagina 25

 
Maxim Kuznetsov:

I trader lavorano con Excel. È come una "cartina di tornasole". Se non conosce i fogli di calcolo, che diavolo di trader è? Come calcola i bilanci e il denaro?

E se il programmatore non è in grado di tradurre un foglio excel in un programma MQL, dovrebbe comunque fare pratica :-)

Yusuf sta cercando di fare i suoi punti (anche con il ragionamento di cui non sono d'accordo in linea di principio), ma voi state facendo una cosa ancora peggiore - invece di un aiuto di base lo state costringendo a imparare cose inutili. E allo stesso tempo, tutti sanno che non inizierà a programmare e non trasferirà le sue formule in mql. Basta prendere in giro e togliere mesi o addirittura anni a una persona.

Hm, sì, non riesco a immaginare come scrivere direttamente su un foglio excel - è seduto da solo e districare il groviglio - le tabelle sono molto intricate - quindi è necessario spendere tempo per capirlo, e per valutare il lavoro dovrebbe anche secondo TOR.

Inoltre, sempre secondo la mia esperienza, quando ho riscritto l'algoritmo da Excel, ho trovato errori logici, perché ho anche pensato a quello che stavo scrivendo - spesso è comodo fantasticare in Excel.

E, inoltre, consiglio di allegare il file stesso.

Quindi considero le vostre argomentazioni sul forzare l'apprendimento non necessario infondate e non dimostrate.

Se hai le capacità, perché non prendi e aiuti la persona leggendo telepaticamente la TOR dalla sua testa a distanza?

 

Sono stanco di risolvere enigmi. Fai come se avessi fatto uno screenshot nella prima pagina con le spiegazioni https://www.mql5.com/ru/forum/305148. Per rendere l'informazione più digeribile, fate il calcolo su una storia poco profonda, meno è meglio è (sarà molto più facile capirvi). Se volete aiuto, comprimete i vostri rotoli di testo, nessuno leggerà un testo grande, tanto meno lo capirà.

Расчет коэффициентов
Расчет коэффициентов
  • 2019.02.28
  • www.mql5.com
Нужно погонать коэффициенты к 1-7 следующим образом: A1*k1+B1*k2=I1 A2*k1+B2*k2=I2 A3*k1+B3*k2+C3*k3=I3 A4*k1+B4*k2+C4*k3+D4*k4=I4 и так далее...
 

I primi valori della serie spostata sono i seguenti:

1,1376 1,1377 1,1375 1,1361 1,1358

come l'avete voi:

x1 x2 x3 x4 y

1,1376 1,1376 1,1377 1,1375 1,1361

Quindi x1 e x2 sono la stessa riga? Cosa è successo al CD5, che inizia a1,1358?
 
Yousufkhodja Sultonov:

Corretto

Fate uno screenshot dell'intera tabella calcolata.

 
forexman77:

Fate uno screenshot dell'intera tabella calcolata.

Preferibilmente uno zip del file Excel e fare domande su di esso. Altrimenti questo andrà avanti per sempre. Finirai per torturare Yusuf. Beh, non può farlo.
 
Yuriy Asaulenko:
Faresti meglio a zippare il file excel e fare domande su di esso. Altrimenti questo andrà avanti per sempre. Finirai per torturare Yusuf. Beh, non può farlo.

Ben convinti, postate voi stessi uno screenshot, contribuite allo sviluppo. Domani darò un'occhiata.

Che tipo di risposta sarà lo stesso di un saluto. Se non hai informazioni chiare, non otterrai alcun risultato.

 
forexman77:

Fate uno screenshot dell'intera tabella calcolata.

Non preoccupatevi, il programma è ora completamente risolto.

 
Yuriy Asaulenko:
È meglio zippare il file Excel e fare domande su di esso. Altrimenti questo andrà avanti per sempre. Finirai per torturare Yusuf. Beh, non può farlo.

Yuri, segui anche online?

 
Yousufkhodja Sultonov:

Yuri, segui anche online?

Sì, sporadicamente, ma sono ancora convinto che sia un manichino, e gli scoppi sul nulla sono l'instabilità del sistema stesso.
 
Yousufkhodja Sultonov:

Ecco quindi l'indicatore fittizio.

Questo manichino è un semplice indicatore MA per esempio, ma è adattato al tuo caso con alcune semplificazioni che non sono ottimali in termini di prestazioni, ma meno stressanti per l'apprendimento.

Per scrivere il vostro indicatore, dovete semplicemente scrivere il codice di calcolo nel corpo della funzione

void Soltonov(int pos) // основной расчет индикатора бара pos. В массиве X, размерностью 13 находятся значение цены 13 бар, начиная от позиции pos

al momento c'è un calcolo di MA con periodo 13 sotto forma di 3 linee.

Perché ho preso il 13 per difetto? Perché tu stesso hai detto che usi 13 valori di prezzo per il calcolo al momento.

Questi 13 valori si trovano in un array X (da X[0] a X[12])

Si esegue semplicemente il calcolo di questi 13 valori nel corpo di questa funzione e si scrive il valore nel buffer indicatore SoltonovBuffer[pos]. L'intero indicatore sarà formato automaticamente.

//+------------------------------------------------------------------+
//|                                                     Soltunov.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com/ru/users/yosuf"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Soltonov
#property indicator_label1  "Soltonov"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrMagenta
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

//--- indicator buffers
double         SoltonovBuffer[]; // это буфер линии индикатора
double         X[];              // это вспомогательный массив для значений цены
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,SoltonovBuffer,INDICATOR_DATA);  
   ArrayResize(X,13);                      // задаем размер динамического массива X - 13
   ArraySetAsSeries(X,true);               // для удобства обучения устанавливаем индексацию массива как в таймсерии
   ArraySetAsSeries(SoltonovBuffer,true);  // для удобства обучения устанавливаем индексацию массива как в таймсерии
   ArrayInitialize(SoltonovBuffer,EMPTY_VALUE); // инициализируем буфер индикатора пустыми значениями

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   int N=rates_total-prev_calculated;
   if(N>1 && rates_total>12) // если осуществляем первый вход или была задержка больше времени одного бара, выполняем инициализацию всех баров
     {
      for(int i=rates_total-1; i>11; i--)
        {
         ArrayCopy(X,price,0,i-12,13);
         Soltonov(rates_total-1-i);
        }
      ArrayCopy(X,price,0,rates_total-13,13);
      return(rates_total);
     }
   else if(N==1) ArrayCopy(X,price,0,rates_total-13,13);     // если новый бар
   else  X[0]=price[rates_total-1];                          // если новый тик без образования нового бара
   Soltonov(0);
   return(rates_total);
  }
//+------------------------------------------------------------------+
// Писать код в этой функции!
//+------------------------------------------------------------------+
void Soltonov(int pos) // основной расчет индикатора бара pos. В массиве X, размерностью 13 находятся значение цены 13 бар, начиная от позиции pos
                       // X[0]- значение цены бара с номером pos
                       // X[1]- значение цены бара с номером pos+1
                       // ....
                       // X[12]- значение цены бара с номером pos+12
  {
   double Sum=0;                         // создаем переменную для подсчета суммы баров
   for(int i=0;i<13;i++) Sum = Sum+X[i]; // суммируем 13 баров
   SoltonovBuffer[pos]=Sum/13;           // помещаем в значение индикаторного буфера среднее арифметическое 13 цен
  }
//+------------------------------------------------------------------+

Da MT5 si preme F4 e si arriva a ME (MetaEditor). Qui si crea un indicatore personalizzato (Ctrl+N), si specifica un nome durante la creazione, per esempio"Soltunov" (il mio è quello di default). Quando il codice viene generato, sostituite tutto questo codice con il mio dummy.

E iniziare a padroneggiare la programmazione.

Ti consiglio di preimpostare la barra massima della finestra nelle impostazioni di MT5 a non molto grande (5000 è sufficiente).

Non è necessario leggere alcun libro per padroneggiare il linguaggio MQL5. È sufficiente utilizzare la Guida premendo il tasto F1, cliccando prima sulla funzione o sulla parola di interesse. Usa anche la funzione di ricerca nella Guida.

vedere la gif animata (cliccare sull'immagine):


Raccomando anche vivamente di padroneggiare immediatamente il debugger incorporato di ME con le impostazioni del punto di interruzione per passare attraverso il programma con la possibilità di osservare i cambiamenti delle variabili.

Vedi anche la gif animata.


Buona fortuna, Yusuf!
Se avete delle domande, se il metodo della regola del pollice non è utile, non esitate a chiedere.

Credo che il mondo intero vi aiuterà.

File:
Soltonov.mq5  8 kb