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

 
//+------------------------------------------------------------------+
//|                                                         SSMA.mq4 |
//|                                            Copyright 2014, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_plots   1
//--- plot average
#property  indicator_label1  "average"
#property  indicator_type1   DRAW_ARROW
#property  indicator_color1  clrRed
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  1
//--- input parameters
extern int      CountMA=200;
extern int      Period_start =1;
extern int      Period_shift =5;
//--- indicator buffers
double         averageBuffer[];
double         maxBuffer[];
double         minBuffer[];
double         Label1Buffer[];
double         scBuf[][2];

double tmparray[],tmparrayF1[];
//double tmparrayD[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
  // массив tmparrayF1[] является индикаторным буфером
   SetIndexBuffer(0,tmparrayF1);
   PlotIndexSetInteger(0,PLOT_ARROW,159);
   
   ArrayResize(tmparray, CountMA+1);  // массив для рассчитанных SMA 
   ArrayResize(scBuf, CountMA+1);     // массив для значений повторений на цене  
   ArrayResize(tmparrayF1, CountMA+1); // массив для перевода в одномерный массив для отображения на графике

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if (rates_total<Period_start+Period_shift*CountMA+1) return(0);
   ArrayInitialize(tmparray,0);
   ArrayInitialize(scBuf,0);
   
   int limit=rates_total-prev_calculated;
   if (limit>1) limit=rates_total-(Period_start+Period_shift*CountMA+1);
   
   double min=-99999,max=99999, sum=0;
   int count, countMA,schet;
   
   for (int i=limit;i>=0;i--)
   {
      sum=0;
      count=0;
      countMA=0;
      // формируем массив со значения машек
      for (int j=0;j<Period_start+Period_shift*CountMA;j++)
      {
         sum+=(High[i+j]+Low[i+j])*0.5;
         count++;
         if (count==Period_start+Period_shift*countMA)
         {
            tmparray[countMA]=sum/count;
            countMA++;
         }          
      }    
      // Массив создан. Можно обрабатывать
   }
 //***** Рассчитать количество повторений SMA, в десятичном интервале.
   for (int b=0;b<CountMA;b++)
   {
     schet=0;
     for (int a =CountMA;a>=0;a--) 
     {
       if(NormalizeDouble(tmparray[a],4)==NormalizeDouble(tmparray[b],4)&&tmparray[a]!=0) // 1.30000 = 1.30004
       {
         scBuf[b][0]=schet;                       // количество повторений МА
         scBuf[b][1]=tmparray[b];                 // Цена
         tmparray[a]=0;                           // Обнуляем посчитанную ячейку
         schet++;
       }
     } 
   }
   
   ArraySort(scBuf,WHOLE_ARRAY,0,MODE_DESCEND);   // Сортируем массив по убыванию
  
   for (int x=0;x<CountMA;x++) 
   {
     tmparrayF1[x]=scBuf[x][1];           //переносим значения цены в одномерный массив, для отображения через индикатор
   }  
     
      
Print("rates_total = ",rates_total,
"tmparray = ",tmparray[0]
,"KolVBuf ", scBuf[0][0],"+",scBuf[0][1]
       ,"/ ",scBuf[1][0],"+",scBuf[1][1]
       ,"/ ",scBuf[2][0],"+",scBuf[2][1]
       ,"/ ",scBuf[3][0],"+",scBuf[3][1]
       ,"/ ",scBuf[4][0],"+",scBuf[4][1]
       ,"/ ",scBuf[5][0],"+",scBuf[5][1]
     );

   
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Mi scuso in anticipo con gli amministratori per il trolling, una domanda simile è in un thread separato https://www.mql5.com/ru/forum/154928,!))

Obiettivo:

- Crea un array di 2.000 valori di media mobile.

- Segnare con croci, sigilli formati dalle SMA unite.

Il risultato è che le croci sono sparse in modo disordinato e non c'è niente.

Domanda:

Si scopre che l'errore che fa sì che le croci siano posizionate in un modo che non corrisponde alla posizione dell'aggregato SMA, è nella formazione dell'array SMA || ...?

 

Buon pomeriggio. Per favore, consigliate come risolvere questo problema. Ho bisogno di fare un array, un esempio è ............. e risulta un gioco di parole completo, dimmi cosa c'è che non va. Grazie.

for(int i=1;i<=20;i++)
     {
     for(int j=1;j<=20;j++)
        {
        for(int q=1;q<=20;q++)
           {
           
             M5gooB[i,j,q]=false;
             Print("M5gooB ",i," ",j," ",q," false.");
             
           }
        }
     }
 

o anche solo come questo

bool M5gooB[50],M5gooS[50];
  for(int i=1;i<=50;i++)
     {
     M5gooB[i]=false;
     
     }

e ancora Print stampa una costruzione di assegnazione caotica nei registri

 
laveosa:

o anche solo come questo

e ancora Print stampa una costruzione di assegnazione caotica nei registri

Forse questo aiuterà.

bool M5gooB[50],M5gooS[50];
  for(int i=0;i<50;i++)
     {
     M5gooB[i]=false;
     
     }
 

Chi sa come impostare un punto al posto di una croce (DRAW_ARROW)?

- C'è un indicatore, come impostare un oggetto punto nelle variabili globali

//--- plot average
#property  indicator_label1  "average"
#property  indicator_type1   DRAW_ARROW
#property  indicator_color1  clrRed
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  1

 
Top2n:

Chi sa come impostare un punto al posto di una croce (DRAW_ARROW)?

- C'è un indicatore di come inserire un oggetto punto nelle variabili globali


In globale:

input uchar arrowsCodes0=159;//Wingdings: >= 33 or <= 255

o

uchar arrowsCodes0=159;//Wingdings: >= 33 or <= 255

https://docs.mql4.com/ru/constants/objectconstants/wingdings

In int OnInit() allora sarà:

SetIndexArrow(0,arrowsCodes0);// https://docs.mql4.com/ru/customind/setindexarrow

Qualcosa del genere.

 

Perché i miei punti sono disegnati solo sulla storia? Nelle finestre strategy tester e wino chart solo la storia, non vengono disegnati nuovi punti

Codice:

double sellArrowsBuffer[];
double buyArrowsBuffer[];
double closeArrowsBuffer[];

int jbnbHandle;

void OnInit()
{
....
    jbnbHandle = iCustom(_Symbol, _Period, "Projects\\iJBNB");
}


int OnCalculate(...)
{
    double cbearsColor[];
    double cbears[];

    int to_copy;

    if(prev_calculated > rates_total || prev_calculated <= 0)
        to_copy = rates_total;
    else
        to_copy = rates_total - prev_calculated + 1;


    if(CopyBuffer(jbnbHandle, 4, 0, to_copy, cbearsColor) != to_copy) 
        return 0;


    if(CopyBuffer(jbnbHandle, 3, 0, to_copy, cbears) != to_copy) 
        return 0;

    for(int i = 2; i < to_copy; i++)
    {    
        if(cbearsColor[i] == 2
            && cbearsColor[i - 1] == 1
            && cbears[i] > 0.2
            )
        {
            sellArrowsBuffer[i] = open[i] - symPoint * 30;
        }
    }

    return rates_total;
}

 
Potete per favore consigliarmi come fare in modo che in tempo reale quando si trascina la HLINE non si catturino gli ordini stop/stakeprofit che si trovano nelle vicinanze della linea? Ho provato a disabilitare il trading a clic singolo, ma non aiuta. Questo effetto non esiste nello Strategy Tester. Voglio usare OnChartEvent (a proposito, ho capito che gli eventi non sono gestiti sul tester, solo sul relè?)
 

Buon pomeriggio, il tutorial fornisce un esempio di un esperto https://book.mql4.com/ru/samples/expert

Può dirmi perché fa diversi acquisti/vendite sulla stessa candela?


CLOSE. ha visto stoploss

 
Pyro:
Potete per favore consigliarmi come fare in modo che in tempo reale quando si trascina la HLINE non si catturino gli ordini di stop/stake profit che si trovano nelle vicinanze della linea? Ho provato a disabilitare il trading a clic singolo, ma non aiuta. Questo effetto non esiste nello Strategy Tester. Voglio usare OnChartEvent (a proposito, ho capito che gli eventi non sono gestiti sul tester, solo sul relè?)
Motivazione: