Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 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);
  }

Ich entschuldige mich im Voraus bei den Admins für Trolling, eine ähnliche Frage ist in einem anderen Thread https://www.mql5.com/ru/forum/154928,!))

Zielsetzung:

- Erstellen Sie ein Array mit 2.000 gleitenden Durchschnittswerten.

- Zur Kennzeichnung mit Kreuzen, die aus den zusammengefügten SMAs gebildet werden.

Das Ergebnis ist, dass die Kreuze ungeordnet verstreut sind und es nichts gibt.

Frage:

Es stellt sich heraus, dass der Fehler, der dazu führt, dass die Kreuze in einer Weise platziert werden, die nicht mit der Position des SMA-Aggregats übereinstimmt, in der Bildung des SMA-Arrays liegt...?

 

Guten Tag. Bitte beraten Sie mich, wie ich dieses Problem lösen kann. Ich muss ein Array erstellen, ein Beispiel ist............. und es stellt sich heraus, dass es ein komplettes Wortspiel ist, sagen Sie mir, was falsch ist. Ich danke Ihnen.

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.");
             
           }
        }
     }
 

oder auch nur so

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

und dennoch druckt Print eine chaotische Zuweisungskonstruktion in den Protokollen

 
laveosa:

oder auch nur so

und dennoch druckt Print eine chaotische Zuweisungskonstruktion in den Protokollen

Vielleicht hilft das.

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

Wer weiß, wie man einen Punkt anstelle eines Kreuzes setzt (DRAW_ARROW)?

- Es gibt einen Indikator, wie man ein Punktobjekt in globalen Variablen setzen kann

//--- 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:

Wer weiß, wie man einen Punkt anstelle eines Kreuzes setzt (DRAW_ARROW)?

- Es gibt einen Hinweis darauf, wie man ein Punktobjekt in globale Variablen einträgt


In global:

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

oder

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

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

In int OnInit() wird es dann sein:

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

Etwa so.

 

Warum beziehen sich meine Ausführungen nur auf die Geschichte? In den Fenstern des Strategietesters und des Wino-Charts werden keine neuen Punkte gezeichnet, sondern nur der Verlauf.

Code:

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;
}

 
Können Sie mir bitte mitteilen, wie ich sicherstellen kann, dass in Echtzeit beim Ziehen der HLINE keine Stopps/Stake-Profit-Aufträge in der Nähe der Linie abgefangen werden? Ich habe versucht, den Ein-Klick-Handel zu deaktivieren, aber es hilft nicht. Dieser Effekt ist im Strategy Tester nicht vorhanden. Ich möchte OnChartEvent verwenden (durch die Art und Weise, ich verstehe die Ereignisse nicht auf dem Tester, nur auf Relais behandelt werden?)
 

Guten Tag, das Lernprogramm enthält ein Beispiel für einen Experten https://book.mql4.com/ru/samples/expert

Können Sie mir sagen, warum er mehrere Käufe/Verkäufe für dieselbe Kerze tätigt?


CLOSE. sah Stoploss

 
Pyro:
Können Sie mich bitte beraten, wie ich sicherstellen kann, dass in Echtzeit beim Ziehen von HLINE keine Stopps/Stake-Profit-Aufträge gefangen werden, die sich in der Nähe der Linie befinden? Ich habe versucht, den Ein-Klick-Handel zu deaktivieren, aber es hilft nicht. Dieser Effekt ist im Strategy Tester nicht vorhanden. Ich möchte OnChartEvent verwenden (durch die Art und Weise, ich verstehe die Ereignisse nicht auf dem Tester, nur auf Relais behandelt werden?)