Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 114

 
Yedelkin :
Cevap vermekte zorlanıyorum. Mesajlarınızı tekrar okudum ama dizinin boyutunu değiştirme fikrini anlamadım. Ve kodun cevabı, niyetin anlaşılmasına bağlıdır. Belki başka biri cevap verir.

Prensip olarak benim için fark etmez , dizinin boyutunu değiştirerek mesela 20 yapalım.

  

 double masCenPoc[ 20 ]; 

 for ( int i= 0 ; i<20; i++){
 
   if ((cena_poc < high && cena_poc < low)||(cena_poc > high && cena_poc > low))

//как вот дальше обозначить чтоб он запомнил значение цены уровня Рос?
    
     masCenPoc[i] = cena_poc;

else 

//и удалил значение из массива, если нашлось пересечение с ценой этого уровня Рос?
 
Top2n : Prensip olarak umurumda değil, dizinin boyutunu değiştirelim mesela 20 yapalım.

Burada 20 elemanlı bir diziniz var. Diyelim ki if koşulu yerine getirildi - dizinin ilk öğesine fiyat değerini atadık: masCenPoc[0] = cena_poc;

Dizinin ikinci elemanına ne atayacağız?

 
Yedelkin :

Burada 20 elemanlı bir diziniz var. Varsayalım ki if koşulu yerine getirildi - dizinin ilk öğesine fiyat değerini atadık: masCenPoc[0] = cena_poc;

Dizinin ikinci elemanına ne atayacağız?

n zaman miktarında olacak olan bir sonraki Ros değeri. Ros çizgileri, bir önceki günün sonuçlarına göre her günün başında görünür. Fiyat seviyeye değmezse, bu seviyenin Ros değeri dizide saklanacaktır.
 
Top2n : n kere olacak bir sonraki değeri. Ros çizgileri, bir önceki günün sonuçlarına göre her günün başında görünür. Fiyat seviyeye değmezse, bu seviyenin Ros değeri dizide saklanacaktır.
Açık. yapardım. 20 elemanlı bir dizi oluşturur ve hepsine -1 değerini atardım. Her günün başında bir for döngüsü çalıştırırdım ( int i= 0 ; i<20; i++) ve dizide -1 değerine sahip ilk öğeyi arardım. Böyle bir öğe bulduktan sonra, ticaret koşullarını kontrol eder ( if ((cena_poc < yüksek && cena_poc < düşük)||(cena_poc > yüksek && cena_poc > düşük))) ve başarılı olursa, bulunana cena_poc değerini atar dizi öğesi . Böylece dizi kademeli olarak gerekli değerlerle doldurulacaktır.
 
Top2n : teşekkürler ama nereye koyayım
Evet, dinamik olmayan bir dizi kullanıyorsanız (son örneğinizde olduğu gibi), bu işleve gerek yoktur. Dinamik bir diziye ihtiyacınız varsa, o zaman döngüden önce kodun ilk satırlarında boyutunu bildirin ve ayarlayın.
 
Top2n :

Prensip olarak benim için fark etmez, dizinin boyutunu değiştirerek mesela 20 yapalım.

 

Her şey mantıklı olmalı. Bu durumda, dizi gerekli olmayabilir. Daha fazla hesaplama ile bir döngüde 1 değişken yeterli olabilir. Tarih hakkında veri almak istediğinizden şüpheleniyorum, bu nedenle döngü bir çubuktan 0'a daha mantıklı olacaktır. Ve sonra verilerinizi oluşturun. Bir diziye ihtiyacınız varsa, sizin durumunuzda bir yığın olarak biriktirilmelidir.

Çevrimiçi alıntılara göre inşa etmek istiyorsanız, yine de yığının (cam) kurallarına göre yapılır.

//Удачи!
 

Merhaba. CopyBuffer işlevini kullanarak bir diziye gösterge verisi kopyalamaya çalıştığımda -6.999999999999999e-005 gibi değerler alıyorum

Nedeni ne olabilir?


Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyBuffer - Документация по MQL5
 
sss20192 :

Merhaba. CopyBuffer işlevini kullanarak bir diziye gösterge verisi kopyalamaya çalıştığımda -6.999999999999999e-005 gibi değerler alıyorum

Nedeni ne olabilir?


Belki de bu tür değerler ve orijinal. Kodu yazarsan iyi olur.
 

Veri penceresinde göstergenin başka verileri vardır. Expert Advisor'ı H1 grafiğine ekliyorum ve verileri M5 M15 ve H1 zaman dilimlerinden kopyalıyor.

 int MacdHandleTf1 = iMACD ( _Symbol , Timeframe1, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

int MacdHandleTf2 = iMACD ( _Symbol , Timeframe2, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

int MacdHandleTf3 = iMACD ( _Symbol , Timeframe3, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

CopyBuffer (MacdHandleTf1, 0 , 1 , 1 , MacdArray);

Print ( NormalizeDouble (MacdArray[ 0 ], 5 )); 

CopyBuffer (MacdHandleTf2, 0 , 1 , 1 , MacdArray);

Print ( NormalizeDouble (MacdArray[ 0 ], 5 )); 

CopyBuffer (MacdHandleTf3, 0 , 1 , 1 , MacdArray); 

Print ( NormalizeDouble (MacdArray[ 0 ], 5 )); 
Neden: