Удобство имеет большое значение в работе, а тем более в работе трейдера, где скорость и точность решают многое. При подготовке терминала к работе каждый настраивает своё рабочее место максимально комфортно для себя, чтобы в максимально короткий срок можно было совершить анализ и войти в рынок. Но реальность такова, что разработчики не могут...
Ben sadece görselleştiriciye nasıl gecikmeler koyduğumu yazdım.
Sadece deniyorum. Zaman kaybetmek istemedim, robotun çalışmasında bir panele ihtiyacım yok, sadece test için ihtiyacım var. Bu nedenle, konuyu ayrıntılı olarak incelemeyi planlamadım.
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается.
Aşağıdaki kodda neden c close[i-1] öğesini close[i-2] olarak değiştirdiğimde, Array of Range oluşuyor? Kod, kesinlikle MQL5'teki kitaba göre yazılmıştır, ancak fiyat 2'den fazla hücre değiştirildiğinde arabelleğin neden sınırların dışında olduğunu açıklamıyor.
{
int values_to_copy;
int start;
int calculated= BarsCalculated (iBands1_handle);
if (calculated <= 0 )
{
return ( 0 );
}
if (prev_calculated== 0 || calculated!=bars_calculated)
{
start= 1 ;
if (calculated> rates_total) values_to_copy=rates_total;
else values_to_copy=calculated;
}
else
{
start=rates_total- 1 ;
values_to_copy= 1 ;
}
if (!FillArrayFrom_iBands1_handleBuffer(Base,Upper,Lower,iBands1_handle,values_to_copy)) return ( 0 );
for ( int i=start; i <rates_total &&! IsStopped ();i++)
{
Print ( "C " , close[i- 2 ]);
}
Aşağıdaki kodda neden c close[i-1] öğesini close[i-2] olarak değiştirdiğimde, Array of Range oluşuyor? Kod, kesinlikle MQL5'teki kitaba göre yazılmıştır, ancak fiyat 2'den fazla hücre değiştirildiğinde arabelleğin neden sınırların dışında olduğunu açıklamıyor.
Anladığım kadarıyla göstergeden bahsediyoruz. Öyleyse, -timeseries dizisine " kapat " erişimle ilgili iki durumu göz önünde bulundurun: (1) " başlangıç ", "1"e eşit olduğunda ne olur ve (2) " başlangıç ", "rates_total-1"e eşit olduğunda ne olur.
Durum (1) ve durum (2) için "close[i-2]" yapmaya çalışırsanız, elde edilen dizi indeksi " kapalı " aklınızdan hesaplayın.
Anladığım kadarıyla göstergeden bahsediyoruz. Öyleyse, -timeseries dizisine " kapat " erişimle ilgili iki durumu göz önünde bulundurun: (1) " başlangıç ", "1"e eşit olduğunda ne olur ve (2) " başlangıç ", "rates_total-1"e eşit olduğunda ne olur.
Durum (1) ve durum (2) için "close[i-2]" yapmaya çalışırsanız, elde edilen dizi indeksi " kapalı " aklınızdan hesaplayın.
Teşekkürler, kontrol ettim, orada start = 1 değerine 1'den büyük bir sayı koymak gerekiyordu, hata ayıklama, yeniden hesaplamanın başlangıcında, yakın dizi bir hücreden bir değer almaya çalıştığında hatanın oluştuğunu gösterdi. henüz ortaya çıkmadı.
lütfen bana bir diziye nasıl bilgi yazabileceğimi ve sonra onu oradan yeniden oluşturabileceğimi ve sonra gerekirse tekrar üzerine yazabileceğimi söyle, ama hepsinin değil, belirli hücrelerin. veya onlardan bilgi silin, örneğin bir işlemi kapatırken, işlemle ilgili bilgiler silinir. Pip cinsinden iki boyutlu açık zaman ve mum uzunluğu dizisi. bu mekanizma çok ilginç. oraya bir döngü ekleyin ve çok güzel olurdu. Bu örneği, daha yüksek matematik, yani üç katlı integral kullanarak bir Uzman Danışman oluşturmak için kullanmak istiyorum. Diyelim ki x ve y fiyat ve zaman biliniyor, z'yi buluyoruz - bu durumda ciddiyim. ve bu bir sır. Anlayışın için teşekkürler .
Başka bir soru - bu koda kapanış fiyatının satırın üzerinde olması için bir koşul koyarsanız (diyelim ki bu koşul program başlatılmadan önce var), kod beklendiği gibi çalışır, ancak bunun tersini yazarsanız, yani. kodu çalıştırmadan önce şu anda iki kutuplu olan koşullar, hata ayıklama verileri yanlış gidecektir. Söyle bana, bu neden oluyor? Ne de olsa, bu yalnızca koşul ifadesindeki bir karşılaştırmadır, bunun neden kod üzerinde zararlı bir etkisi olsun?
for ( int i = start; i < rates_total &&! IsStopped ();i++)
{
if (close[i] > Upper[i])
Print ( "C " , close[i]);
Örnek: eğer
if (close[i] < Upper[i])
Hata ayıklamanın sonucu aşağıdaki gibidir:
Veriler doğrudur, fiyat güncelleme oranına eşit düzenli aralıklarla güncellenir
Ancak ilk koşulu şu şekilde ayarlarsanız:
if (close[i] > Upper[i])
O zaman sonuç yanlış olacaktır:
Yani kapanış fiyatlarının değerleri artık cari fiyat ile örtüşmemektedir.
Yazıyı maalesef ben görmedim belki başkası anlatır.
İstenen kurulum fiyatını girmek mümkün olmayacağından sipariş veremezsiniz. Aynı şey lotlar için de geçerli.
fareyi koydum.
fareyi koydum.
Bu makaledeki kontrol paneli https://www.mql5.com/ru/articles/62 test cihazında çalışır mı (yalnızca düğmeler)?
Bu makaledeki kontrol paneli https://www.mql5.com/ru/articles/62 test cihazında çalışır mı (yalnızca düğmeler)?
Öyleyse dene - seni durduran ne?
Ben sadece görselleştiriciye nasıl gecikmeler koyduğumu yazdım.
Öyleyse dene - seni durduran ne?
Ben sadece görselleştiriciye nasıl gecikmeler koyduğumu yazdım.
Sadece deniyorum. Zaman kaybetmek istemedim, robotun çalışmasında bir panele ihtiyacım yok, sadece test için ihtiyacım var. Bu nedenle, konuyu ayrıntılı olarak incelemeyi planlamadım.
Aşağıdaki kodda neden c close[i-1] öğesini close[i-2] olarak değiştirdiğimde, Array of Range oluşuyor? Kod, kesinlikle MQL5'teki kitaba göre yazılmıştır, ancak fiyat 2'den fazla hücre değiştirildiğinde arabelleğin neden sınırların dışında olduğunu açıklamıyor.
{ int values_to_copy; int start; int calculated= BarsCalculated (iBands1_handle); if (calculated <= 0 ) { return ( 0 ); } if (prev_calculated== 0 || calculated!=bars_calculated) { start= 1 ; if (calculated> rates_total) values_to_copy=rates_total; else values_to_copy=calculated; } else { start=rates_total- 1 ; values_to_copy= 1 ; } if (!FillArrayFrom_iBands1_handleBuffer(Base,Upper,Lower,iBands1_handle,values_to_copy)) return ( 0 ); for ( int i=start; i <rates_total &&! IsStopped ();i++) { Print ( "C " , close[i- 2 ]); }Aşağıdaki kodda neden c close[i-1] öğesini close[i-2] olarak değiştirdiğimde, Array of Range oluşuyor? Kod, kesinlikle MQL5'teki kitaba göre yazılmıştır, ancak fiyat 2'den fazla hücre değiştirildiğinde arabelleğin neden sınırların dışında olduğunu açıklamıyor.
Anladığım kadarıyla göstergeden bahsediyoruz. Öyleyse, -timeseries dizisine " kapat " erişimle ilgili iki durumu göz önünde bulundurun: (1) " başlangıç ", "1"e eşit olduğunda ne olur ve (2) " başlangıç ", "rates_total-1"e eşit olduğunda ne olur.
Durum (1) ve durum (2) için "close[i-2]" yapmaya çalışırsanız, elde edilen dizi indeksi " kapalı " aklınızdan hesaplayın.
Anladığım kadarıyla göstergeden bahsediyoruz. Öyleyse, -timeseries dizisine " kapat " erişimle ilgili iki durumu göz önünde bulundurun: (1) " başlangıç ", "1"e eşit olduğunda ne olur ve (2) " başlangıç ", "rates_total-1"e eşit olduğunda ne olur.
Durum (1) ve durum (2) için "close[i-2]" yapmaya çalışırsanız, elde edilen dizi indeksi " kapalı " aklınızdan hesaplayın.
Teşekkürler, kontrol ettim, orada start = 1 değerine 1'den büyük bir sayı koymak gerekiyordu, hata ayıklama, yeniden hesaplamanın başlangıcında, yakın dizi bir hücreden bir değer almaya çalıştığında hatanın oluştuğunu gösterdi. henüz ortaya çıkmadı.
if (close[i] < Upper[i])Hata ayıklamanın sonucu aşağıdaki gibidir:
Veriler doğrudur, fiyat güncelleme oranına eşit düzenli aralıklarla güncellenir
Ancak ilk koşulu şu şekilde ayarlarsanız:
if (close[i] > Upper[i])O zaman sonuç yanlış olacaktır:
Yani kapanış fiyatlarının değerleri artık cari fiyat ile örtüşmemektedir.
Bu neden oluyor, anlayamıyorum.
#8792 numaralı gönderideki ana kod bloğu