MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 770

 
Igor Zakharov :

ATR göstergesini kullanın

Teşekkürler, ama benim durumumda nasıl kullanılabileceğini henüz anlamadım.

Birisi CopyRates'e bir bağlantı gönderdi (Teşekkürler, ne yazık ki yorum silindi), bu yüzden anlamaya çalışıyorum iVolume () Yüksek ve Düşük fiyatlar arasındaki fark mı yoksa başka bir şey mi?

onlar. benim durumumda (anladığım kadarıyla), bir ay ve bir hafta boyunca bir dizi veri oluşturabilir ve ardından değerlerin ortalamasını vb.

 
Alexander Layzerevich :

Anlamaya çalışıyorum iVolume(), Yüksek ve Düşük fiyatlar arasındaki fark mı yoksa başka bir şey mi?

bunlar kene hacimleridir , MT'de grafiğe sağ tıklayın ve hacimleri göster'i seçin - grafiğin altında histogramlar görünecektir - bunlar onlar

https://docs.mql4.com/en/series/ivolume

iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Значение тикового объема бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError().
 
Igor Makanu :

bunlar kene hacimleridir , MT'de grafiğe sağ tıklayın ve hacimleri göster'i seçin - grafiğin altında histogramlar görünecektir - bunlar onlar

https://docs.mql4.com/en/series/ivolume

Açıklama için çok teşekkürler.

Böylece aşağıdakiler kalır: Ay için verileri hesaplamak için Yüksek ve Düşük 2 dizisi ve hafta için hesaplamalar için Yüksek ve Düşük 2 dizisi oluşturulur.

Sonra her şeyin ortalaması alınır, vb.

Her şeyi koda sokmaya çalışacağım...

İşte başka bir soru ortaya çıktı: Geçen ayı ve geçen haftayı en iyi nasıl sayarsınız?

örneğe göre:

Başlangıç pozisyonuna ve gerekli eleman sayısına göre referans

int CopyHigh (  
    sicim             sembol_adı , // sembol adı  
    ENUM_TIMEFRAMES    zaman çerçevesi , // dönem  
    int                start_pos , // nereden başlamalı  
    int                say , // ne kadar kopyalanacak  
    çift             yüksek_dizi[]        // maksimum fiyatları kopyalamak için dizi  
);

zaman çerçevesi = PERIOD_D1;

start_pos = 1; // Önceki çubuk

sayı = 30; // 30 gün (ay)

 
Alexander Layzerevich :

İşte başka bir soru ortaya çıktı: Geçen ayı ve geçen haftayı en iyi nasıl sayarsınız?

tarihe eklenmesi daha iyidir, tk. bar boşlukları (alıntıları) ve bar olmadığında hafta sonları var, bu yardımcı olacaktır:

Обращение по начальной и конечной датам требуемого интервала времени

int    CopyHigh (
   string            symbol_name,       // имя символа
   ENUM_TIMEFRAMES   timeframe,         // период
   datetime          start_time,       // с какой даты
   datetime          stop_time,         // по какую дату
   double            high_array[]       // массив для копирования максимальных цен
   );

https://docs.mql4.com/ru/series/copyhigh

CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Функция получает в массив high_array исторические данные максимальных цен баров для указанной пары символ-период в указанном количестве. Необходимо отметить, что отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества...
 
Igor Makanu :

tarihe eklenmesi daha iyidir, tk. bar boşlukları (alıntıları) ve bar olmadığında hafta sonları var, bu yardımcı olacaktır:

https://docs.mql4.com/ru/series/copyhigh

Teşekkür ederim, ancak Danışmana (Robot) hangi tarihten başlayıp nerede duracağını nasıl netleştireceğinizi.

1'den (dünden itibaren) 30 mum (30 gün) saymak benim için daha kolay. Peki ya da 7 mum (gün).

Sonuç bu koddur:

 //************************************************************************************************/
double iPointOrderStep()
{
double Awerage30 = 0 , SummAwerage30 = 0 ;
double Awerage7 = 0 , SummAwerage7 = 0 ;

double High30[], Low30[], High7[], Low7[];
//----------------Для месяца---------------------------
int iHigh30 = CopyHigh ( Symbol (), PERIOD_D1 , 1 , 30 ,High30);
int iLow30 = CopyLow ( Symbol (), PERIOD_D1 , 1 , 30 ,Low30);
//----------------Для недели---------------------------
int iHigh7 = CopyHigh ( Symbol (), PERIOD_D1 , 1 , 7 ,High7);
int iLow7 = CopyLow ( Symbol (), PERIOD_D1 , 1 , 7 ,Low7);

for ( int i= 0 ;i< 30 ;i++) 
   {
      SummAwerage30 += (High30[i]-Low30[i]);
   }
for ( int i= 0 ;i< 7 ;i++) 
   {
      SummAwerage7 += (High7[i]-Low7[i]);
   }

   Awerage30 = SummAwerage30/ 30 ;
   Awerage7 = SummAwerage7/ 7 ;
   
   double iPointOrderStep = NormalizeDouble (((Awerage30+Awerage7)/ 2 ), 0 );
   return (iPointOrderStep/ 6 );
}
//************************************************************************************************/

Ama ne yazık ki, değer = 0 döndürür.

Lütfen hatanın nerede olduğunu söyle..

Ve ilerisi...

Seans başında veya terminal yeniden başlatıldığında haftada bir yapılan hesaplama nasıl yapılır?

 
Alexander Layzerevich :

Teşekkürler, ama benim durumumda nasıl kullanılabileceğini henüz anlamadım.

ATR'nin özü, bir periyot için çubukların ortalama yüksekliğidir. Aynı başarı ile MA(yüksek)-MA(düşük) kullanabilirsiniz. Yinelemeyi açmaktan daha kolay

 
Igor Zakharov :

ATR'nin özü, bir periyot için çubukların ortalama yüksekliğidir. Aynı başarı ile MA(yüksek)-MA(düşük) kullanabilirsiniz. Yinelemeyi açmaktan daha kolay

onlar. örneğe göre

int iATR (
    sicim             sembol , // sembol adı
    ENUM_TIMEFRAMES    nokta , // nokta
    int                ana_dönem        // ortalama periyot
);

çift Awerage30 = iATR ( Sembol (), PERIOD_D1 , 30 ); 30 günlük ortalama sayısal değer mi olacak?

 
Alexander Layzerevich :

onlar. örneğe göre

int iATR (
    sicim             sembol , // sembol adı
    ENUM_TIMEFRAMES    nokta , // nokta
    int                ana_dönem        // ortalama periyot
);

çift Awerage30 = iATR ( Sembol (), PERIOD_D1 , 30 ); 30 günlük ortalama sayısal değer mi olacak?

sadece takvim değil 30 günlük bar önce (Pazar, Cumartesi)

shift parametresi olmayan fonksiyona bakılırsa 5k'da yapıyorsunuz ama soru 4. dalda sorulmuş :)

 
Igor Zakharov :

sadece takvim değil 30 günlük bar önce (Pazar, Cumartesi)

shift parametresi olmayan fonksiyona bakılırsa 5k'da yapıyorsunuz ama soru 4. dalda sorulmuş :)

Bu iş parçacığı her iki terminalde de bulunur. Özellikle aynı özelliklerle.

 
Artyom Trishkin :
Bu iş parçacığı her iki terminalde de bulunur. Özellikle aynı özelliklerle.

Başlığı düzeltin o zaman?