Merhaba! mkuel4'ü anlamaya başladı. Sorumu, mumların maksimum ve minimum fiyatını hesaplayan ve iki tampon kullanarak ekranda mum ekstremine dayalı satırları görüntüleyen basit bir gösterge örneğini kullanarak belirteceğim:
#property indicator_chart_window // Индик. рисуется в основном окне#property indicator_buffers 2// Количество буферов#property indicator_color1 Blue // Цвет первой линии#property indicator_color2 Red // Цвет второй линииdouble Buf_0[],Buf_1[]; // Объявление массивов (под буферы индикатора)//--------------------------------------------------------------------int init() // Специальная функция init()
{
SetIndexBuffer ( 0 ,Buf_0); // Назначение массива буферуSetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 2 ); // Стиль линииSetIndexBuffer ( 1 ,Buf_1); // Назначение массива буферуSetIndexStyle ( 1 , DRAW_LINE , STYLE_DOT , 1 ); // Стиль линииreturn ; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------int start() // Специальная функция start()
{
int i, // Индекс бара
Counted_bars; // Количество просчитанных баров //--------------------------------------------------------------------
Counted_bars= IndicatorCounted (); // Количество просчитанных баров
i= Bars -Counted_bars- 1 ;
// Индекс первого непосчитанногоwhile (i>= 0 ) // Цикл по непосчитанным барам
{
Buf_0[i]=High[i]; // Значение 0 буфера на i-ом баре
Buf_1[i]=Low[i]; // Значение 1 буфера на i-ом баре
i--; // Расчёт индекса следующего бара
}
//--------------------------------------------------------------------return ; // Выход из спец. ф-ии start()
}
Peki tampon hattı her mumdan değil de iki (üç vb.) mumdan nasıl geçirilir?
Peki tampon hattı her mumdan değil de iki (üç vb.) mumdan nasıl geçirilir?
Başlamak için, "SRC" düğmesini kullanarak koda nasıl doğru bir mesaj ekleyeceğinizi öğrenin, böylece okunabilir bir görünüme sahip olur ve MetaEditor'daki gibi görünür.
İkinci adım, Counted_bars değişkenini if ifadesine bağlama girişiminiz olacaktır.
Örneğin:
Gösterge hesaplamasını her saniye çubuğa gireceğiz (tekleri atlıyoruz, çiftleri bırakıyoruz):
if ( MathMod (Counted_bars, 2 ) == 0 )
{
// расчёт для буферов индикатора
}
elsereturn ( 0 );
MathMod() işlevi hakkında buradan bilgi edinebilirsiniz. Ama kullanmak zorunda değilsin. if deyimine herhangi bir koşul ekleyebilirsiniz.
Ancak, koddaki bu tür değişikliklerden arabellekteki bazı değerleri kaybetmeye başlayacağınızı unutmayın. İhtiyacın var mı, yok mu, bilmiyorum. Her şey görevinize bağlı olacaktır.
Pek anlayamadım. Döngü adımını ikiye eşitlemeye çalıştım (bence senin anlamın aynı olacak), ama olmuyor. Spesifik olarak bir mumdan değil, rastgele sayıda mumdan ihtiyacım var. Yapının şöyle olması gerektiğini anlıyorum:
arabellek dizisi[1]= mum dizisi[1]
arabellek dizisi[2]= mum dizisi[2]
arabellek dizisi[3]= mum dizisi[4]
...
arabellek dizisi[5]= mum dizisi[x], vb. Ama çalışmıyor
O zaman bunun gibi bir zikzak göstergesi kullanmanız gerekir (Benim bakış açım):
#property indicator_chart_window // Индик. рисуется в основном окне#property indicator_buffers 2// Количество буферов#property indicator_color1 Blue // Цвет первой линии#property indicator_color2 Red // Цвет второй линииdouble Buf_0[], Buf_1[]; // Объявление массивов (под буферы индикатора)//--------------------------------------------------------------------int init() // Специальная функция init()
{
SetIndexBuffer ( 0 , Buf_0); // Назначение массива буферуSetIndexStyle ( 0 , DRAW_SECTION );
SetIndexBuffer ( 1 , Buf_1); // Назначение массива буферуSetIndexStyle ( 1 , DRAW_SECTION );
return ; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------int start() // Специальная функция start()
{
int i, // Индекс бара
Counted_bars; // Количество просчитанных баров //--------------------------------------------------------------------
Counted_bars= IndicatorCounted (); // Количество просчитанных баров if ( MathMod ( Bars , 2 ) != 0 && Counted_bars == 0 )
return ( 0 );
i = Bars -Counted_bars- 1 ;
// Индекс первого непосчитанногоwhile (i >= 0 ) // Цикл по непосчитанным барам
{
if ( MathMod (i, 2 ) == 0 )
{
Buf_0[i] = High[i]; // Значение 0 буфера на i-ом баре
Buf_1[i] = Low[i]; // Значение 1 буфера на i-ом баре
}
i--; // Расчёт индекса следующего бара
}
//--------------------------------------------------------------------return ; // Выход из спец. ф-ии start()
}
Değişiklikleri anlayacağını düşünüyorum. Yanıldığım tek şey, hesaplanan çubuğun indeksi olarak IndicatorCounted() yerine Bars parametresini kullanmanın daha iyi olduğudur.
Şimdi göreviniz, böleni harici bir parametreye taşımak. Atlanan mumların sayısına eşit olacaktır.
Evet, zaten koda bakın, orada sipariş gönderme sonucunun, hata kodunun ve enstrümanın rakamlarının nerede olduğunu boşluk olmadan görebilirsiniz.
Bu kadar. Bu nedenle konuşma da Telepatlar hakkında gitti.
Daha önce, kodu sağladınız:
Alert ( "Ordersend_Number" ,res,err);
Ve kaç kere koda bakmadım maalesef hatayı bulamadım... Çoklu para birimi Expert Advisors yazma konusunda tecrübem yok. Sadece bazı prensipleri biliyorum, daha fazlasını değil.
Merhaba! mkuel4'ü anlamaya başladı. Sorumu, mumların maksimum ve minimum fiyatını hesaplayan ve iki tampon kullanarak ekranda mum ekstremine dayalı satırları görüntüleyen basit bir gösterge örneğini kullanarak belirteceğim:
Peki tampon hattı her mumdan değil de iki (üç vb.) mumdan nasıl geçirilir?
Peki tampon hattı her mumdan değil de iki (üç vb.) mumdan nasıl geçirilir?
Başlamak için, "SRC" düğmesini kullanarak koda nasıl doğru bir mesaj ekleyeceğinizi öğrenin, böylece okunabilir bir görünüme sahip olur ve MetaEditor'daki gibi görünür.
İkinci adım, Counted_bars değişkenini if ifadesine bağlama girişiminiz olacaktır.
Örneğin:
Gösterge hesaplamasını her saniye çubuğa gireceğiz (tekleri atlıyoruz, çiftleri bırakıyoruz):
MathMod() işlevi hakkında buradan bilgi edinebilirsiniz. Ama kullanmak zorunda değilsin. if deyimine herhangi bir koşul ekleyebilirsiniz.
Ancak, koddaki bu tür değişikliklerden arabellekteki bazı değerleri kaybetmeye başlayacağınızı unutmayın. İhtiyacın var mı, yok mu, bilmiyorum. Her şey görevinize bağlı olacaktır.
Pek anlayamadım. Döngü adımını ikiye eşitlemeye çalıştım (bence senin anlamın aynı olacak), ama olmuyor. Spesifik olarak bir mumdan değil, rastgele sayıda mumdan ihtiyacım var. Yapının şöyle olması gerektiğini anlıyorum:
arabellek dizisi[1]= mum dizisi[1]
arabellek dizisi[2]= mum dizisi[2]
arabellek dizisi[3]= mum dizisi[4]
...
arabellek dizisi[5]= mum dizisi[x], vb. Ama çalışmıyor
Tampon endeksler ve şamdan endeksleri arasında herhangi bir kalıp görmüyorum...
Ve almak istediğiniz şeyin bir resmini eklerseniz daha da iyi olur.
Böyle çıkıyor
Ve buna şöyle ihtiyacım var:
Ancak, çizgilerin bir mumdan çizildiği gerçeğine özellikle bağlanmayın, ikiden sonra ve üçten sonra çizilebilirler, vb.
Görünüşe göre konuyu burada değil, telepatlar için yıkmak gerekiyordu.
sadece bizimle alay ediyor.
Evet, zaten koda bakın, boşluk bırakmadan siparişin gönderilmesinin sonucunun nerede olduğunu, hata kodunu ve enstrümanın rakamlarını görebilirsiniz.
O zaman bunun gibi bir zikzak göstergesi kullanmanız gerekir (Benim bakış açım):
Değişiklikleri anlayacağını düşünüyorum. Yanıldığım tek şey, hesaplanan çubuğun indeksi olarak IndicatorCounted() yerine Bars parametresini kullanmanın daha iyi olduğudur.
Şimdi göreviniz, böleni harici bir parametreye taşımak. Atlanan mumların sayısına eşit olacaktır.
Evet, zaten koda bakın, orada sipariş gönderme sonucunun, hata kodunun ve enstrümanın rakamlarının nerede olduğunu boşluk olmadan görebilirsiniz.
Bu kadar. Bu nedenle konuşma da Telepatlar hakkında gitti.
Daha önce, kodu sağladınız:
Ve kaç kere koda bakmadım maalesef hatayı bulamadım... Çoklu para birimi Expert Advisors yazma konusunda tecrübem yok. Sadece bazı prensipleri biliyorum, daha fazlasını değil.
Yani -1129'un hata kodu olması hiç akıllıca değil, 1292 hata numarasını nerede gördünüz?
Her şey olur...
Uzman Danışmanınızı yalnızca bir DC'de test ettiniz mi? Ve 129 hatası ne kadar süreyle geliyor? Yoksa sipariş birkaç istekten sonra hala açılıyor mu?