Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 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.3000 0 = 1.3000 4
       {
         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);
  }

Trollük için adminlerden şimdiden özür dilerim, ayrı bir başlıkta benzer bir soru var https://www.mql5.com/en/forum/154928 , !)))

Hedef:

- 2000 adet miktarında bir dizi hareketli ortalama değeri oluşturun.

- Birleştirilmiş SMA'dan oluşturulan mühürler, haçlarla işaretleyin.

Sonuç olarak, haçlar düzensiz ve hiçbir şeyin olmadığı yerlere dağılır.

Soru:

Haçların SMA kümesinin konumuna göre yerleştirilmediğine göre hatanın SMA dizisinin oluşumunda olduğu ortaya çıktı || ..?

 

Güzel gün. Lütfen bana bu sorunu nasıl çözeceğimi söyle. Bir dizi yapmak gerekiyor, bir örnek bu ............... ve tam bir kelime oyunu çıkıyor, bana neyin yanlış olduğunu söyle. Teşekkür ederim.

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

ya da aynen böyle

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

ve hala günlükler Print, kaotik bir atama yapısı yazdırır

 
laveosa :

ya da aynen böyle

ve hala günlükler Print, kaotik bir atama yapısı yazdırır

Belki bu yardımcı olur

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

Haç yerine nokta koymayı kim bilebilir (DRAW_ARROW)?

- Global değişkenlerde nokta nesnesinin nasıl ekleneceğine dair bir gösterge var

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

Haç yerine nokta koymayı kim bilebilir (DRAW_ARROW)?

- Global değişkenlerde nokta nesnesinin nasıl ekleneceğine dair bir gösterge var


küresel:

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

veya

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

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

int OnInit() içinde o zaman şöyle olacaktır:

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

Bunun gibi bir şey.

 

Puanlarım neden sadece tarihe dayanıyor? Strateji test cihazında ve Windows grafik pencerelerinde yalnızca geçmiş, yeni noktalar çizilmez

kod:

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

 
Lütfen bana böyle bir şey söyleyin - gerçek zamanlı olarak, HLINE'ı sürüklerken, hattın hemen yakınında bulunan siparişlerin stop/al karlarının yapışmamasını nasıl sağlayabilirim? Tek tıkla alım satımı kapatmaya çalıştım, faydası olmadı, hala yapışıyorlar. Test cihazı üzerinde böyle bir etki yoktur. OnChartEvent'i kullanmak istiyorum (bu arada, anladığım kadarıyla olaylar test cihazında işlenmez, yalnızca gerçek zamanlı olarak mı?).
 

İyi günler, öğretici bir uzman örneği içerir https://book.mql4.com/en/samples/expert

söyle bana neden bir mumda birden fazla alım/satım yapıyor?


KAPALI zararı durdur gördüm

 
Pyro :
Lütfen bana böyle bir şey söyleyin - gerçek zamanlı olarak, HLINE'ı sürüklerken, hattın hemen yakınında bulunan siparişlerin stop/al karlarının yapışmamasını nasıl sağlayabilirim? Tek tıkla alım satımı kapatmaya çalıştım, faydası olmadı, hala yapışıyorlar. Test cihazı üzerinde böyle bir etki yoktur. OnChartEvent'i kullanmak istiyorum (bu arada, anladığım kadarıyla olaylar test cihazında işlenmez, yalnızca gerçek zamanlı olarak mı?).