Roman Sharanov : Bir dizi sınıf örneği nasıl oluşturulur? ClassName* className[] yapıldı, ardından ArrayResize yapıldı, ancak geçersiz işaretçi erişimyöntemlerine erişim vermiyor
Örneklerini bir dizide toplamak istediğiniz sınıfınız CObject'den miras alınmalıdır.
Ve sonra her şey basit: CArrayObj nesnelerinin bir listesini (dizisini) oluşturun ve nesnelerinizi buna ekleyin.
Kötü diyorsan, nasıl iyi yapacağımı söyle. Hesaplamalar OnInit'e taşınsın mı?
Adil azarlama)) İşte burada yayınlanan kodun bir versiyonu:
intOnCalculate ( constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
int i,limit;
if (prev_calculated == 0 ) {
limit = rates_total - 1 ; //--- Первый вызов индикатора или смена таймфрейма или подгрузка данных из истории
}
else limit = rates_total - prev_calculated + 1 ;
for (i = limit; i >= 0 ; i--) { //--- В этом цикле основные вычисления. Таким образом обрабатываться будет только "свежая" информация
}
return (rates_total);
Bunu yapmaya çalışın. Ve OnInit'te herhangi bir şey aktarmak gerekli değildir.
Burada böyle bir kod yayınlamadım - benim değil :)
Diğer yapıları kullanıyorum - daha basit ve daha net.
bu benim, nerede daha kolay? ))) (en azından şablonda limit = rate_total -1 yorumum var ;//--- Göstergenin ilk çağrısı veya zaman çerçevesini değiştirme veya geçmişten veri yükleme ) ve biçimlendirme stilim bir küme ayracı for() {
peki konuya göre kendi indikatörünüzü nasıl yazacağınızı öğrenmek için yukarıdaki şablonu alıp en azından kapanış fiyatını ekleyip ilk indikatörümüzü alıyoruz sonra bu kapanış fiyatından mashka yapmayı öğreniyoruz
for (i = limit; i >= 0 ; i--) { //--- В этом цикле основные вычисления. Таким образом обрабатываться будет только "свежая" информация
Buffer[i] = close[i];
}
Bu senin kodun değil. Bazı meslektaşlarım yayınladı ama kim ve nerede olduğunu hatırlayamıyorum. Orijinal koda değil, OnInit'e hiçbir şeyin aktarılması gerekmediğini yazarken aklımda bu kod vardı. Tam olarak ifade edilmedi.
Hangi tasarımı önerirsiniz? Bu son derece basit görünüyor.
Ve işte parçanın yazarı)))) önümde. Bu arada, ben de bu biçimlendirme stilini kullanıyorum - satır başına bir küme ayracı ile.
Andrei Novichkov : Ve işte parçanın yazarı)))) önümde. Bu arada, ben de bu biçimlendirme stilini kullanıyorum - satır başına bir küme ayracı ile.
evet, gösterge şablon kodu ne işe yarar? bir gösterge oluşturmak için sihirbazı çalıştırın, çizgilerin türlerini ve rengini seçin ve gerekirse girdileri ekleyin
ve bu kadar, gösterge hazır, ardından gövdeyi OnCalculate()şablonundan kopyalayın ve hesaplamaları yazın,
1 dakika içinde ilk indikatörünüzü yazabilirsiniz, yukarıdaki kod "Merhaba kelime ben göstergesi!!!" Gösterdim :)
Not: Bu arada, bu formda, göstergeler MT4'ten MT5'e aktarılabilir, asıl şey gösterge arabelleklerini doğru bir şekilde ayarlamaktır, MT5'te arabellek dizilerini indeksleme ile bir korku vardır .... onlar sadece dizilerdir normal dizi ile)))) indeksleme .. .. daha önce MT4'te gösterge tamponlarının indekslenmesine alışmak zordu, şimdi tam tersine buna alışmak ve MT5)'e geçmek imkansız)))
Bu senin kodun değil. Bazı meslektaşlarım yayınladı ama kim ve nerede olduğunu hatırlayamıyorum. Orijinal koda değil, OnInit'e hiçbir şeyin aktarılması gerekmediğini yazarken aklımda bu kod vardı. Tam olarak ifade edilmedi.
Hangi tasarımı önerirsiniz? Bu son derece basit görünüyor.
Ve işte parçanın yazarı)))) önümde.
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate ( constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//--- Проверка количества доступных баров (1 - минимально, 4 - оптимально для большинства расчётов. Но всё "по месту"...)if (rates_total< 4 ) return0 ;
//--- Проверка и расчёт количества просчитываемых баровint limit=rates_total-prev_calculated; // 0 - пришел новый тик, новый бар формироваться не начал. 1 - пришел новый тик и начал формироваться новый бар.if (limit> 1 )
// если вписать "limit>0", то на нулевом баре будет расчёт только нулевого бара, на каждом новом баре будет полный перерасчёт всей истории// если вписать "limit>1", то на нулевом баре будет расчёт только нулевого бара, на открытии нового бара - пересчёт первого и нулевого,// при подгрузке истории и на первом запуске - перерасчёт всей истории
{
limit=rates_total- 1 ;
// здесь должна быть инициализация всех используемых буферов индикатора необходимыми значениями (обычно EMPTY_VALUE и 0)
}
//--- Расчёт индикатораfor ( int i=limit; i>= 0 && ! IsStopped (); i--)
{
// необходимые действия по расчёту индикатора
}
//--- return value of prev_calculated for next callreturn (rates_total);
}
//+------------------------------------------------------------------+
evet, gösterge şablon kodu ne işe yarar? bir gösterge oluşturmak için sihirbazı çalıştırın, çizgilerin türlerini ve rengini seçin ve gerekirse girdileri ekleyin
ve bu kadar, gösterge hazır, ardından gövdeyi OnCalculate()şablonundan kopyalayın ve hesaplamaları yazın,
1 dakika içinde ilk indikatörünüzü yazabilirsiniz, yukarıdaki kod "Merhaba kelime ben göstergesi!!!" Gösterdim :)
Not: Bu arada, bu formda, göstergeler MT4'ten MT5'e aktarılabilir, asıl şey gösterge arabelleklerini doğru bir şekilde ayarlamaktır, MT5'te arabellek dizilerini indeksleme ile bir korku vardır .... onlar sadece dizilerdir normal dizi ile)))) indeksleme .. .. daha önce MT4'te gösterge tamponlarının indekslenmesine alışmak zordu, şimdi tam tersine buna alışmak ve MT5)'e geçmek imkansız)))
Karmaşık bir şey yok. Bir çapraz platform göstergesi örneği (bir sınıf kullanır), ancak şablon çıkarılabilir - sınıfı ve bundan sonra hata verecek gereksiz her şeyi kaldırın - platformlar arası şablon kalacaktır.
Bu gösterge, değişiklik yapılmadan her iki platformda da aynı şekilde çalışacaktır - yalnızca gerekli uzantıyla derleme. Kodu iki bölüme ayırmam gerekti - sınıf ve göstergenin kendisi (her şey tek bir listedeydi)
Bir dizi sınıf örneği nasıl oluşturulur?
ClassName* className[] yapıldı, ardından ArrayResize yapıldı, ancak geçersiz işaretçi erişim yöntemlerine erişim vermiyor
Örneklerini bir dizide toplamak istediğiniz sınıfınız CObject'den miras alınmalıdır.
Ve sonra her şey basit: CArrayObj nesnelerinin bir listesini (dizisini) oluşturun ve nesnelerinizi buna ekleyin.
"Gösterge şablonu" ve adınıza göre, arama hiçbir şey bulamıyor, ancak burada Savaş ve Barış cildine zaten yazmışlar.
Gönderideki herhangi bir kelime kombinasyonunu hatırlayın.
Üzgünüm, belki gösterge şablonu hakkında yanılttım - Trol şablonunu yayınladım.
Şunu yapalım: düzenleyicide bir gösterge şablonu oluşturun, oluştururken gerekli sayıda giriş değişkeni ve çizilebilir arabellek ekleyin.
Ardından, belirli bir görevden ne yapılması gerektiğini analiz edeceğiz.
Kötü diyorsan, nasıl iyi yapacağımı söyle. Hesaplamalar OnInit'e taşınsın mı?
Adil azarlama)) İşte burada yayınlanan kodun bir versiyonu:
Bunu yapmaya çalışın. Ve OnInit'te herhangi bir şey aktarmak gerekli değildir.
Adil azarlama)) İşte burada yayınlanan kodun bir versiyonu:
Bunu yapmaya çalışın. Ve OnInit'te herhangi bir şey aktarmak gerekli değildir.
Burada böyle bir kod yayınlamadım - benim değil :)
Diğer yapıları kullanıyorum - daha basit ve daha net.
OnInit'te () aktarmak gerekir. Neden her işarette gösterge arabelleğine bir dizi atamalısınız ?
Burada böyle bir kod yayınlamadım - benim değil :)
Diğer yapıları kullanıyorum - daha basit ve daha net.
bu benim, nerede daha kolay? ))) (en azından şablonda limit = rate_total - 1 yorumum var ; //--- Göstergenin ilk çağrısı veya zaman çerçevesini değiştirme veya geçmişten veri yükleme ) ve biçimlendirme stilim bir küme ayracı for() {
peki konuya göre kendi indikatörünüzü nasıl yazacağınızı öğrenmek için yukarıdaki şablonu alıp en azından kapanış fiyatını ekleyip ilk indikatörümüzü alıyoruz sonra bu kapanış fiyatından mashka yapmayı öğreniyoruz
Burada böyle bir kod yayınlamadım - benim değil :)
Diğer yapıları kullanıyorum - daha basit ve daha net.
OnInit'te () aktarmak gerekir. Neden her işarette gösterge arabelleğine bir dizi atamalısınız ?
Bu senin kodun değil. Bazı meslektaşlarım yayınladı ama kim ve nerede olduğunu hatırlayamıyorum. Orijinal koda değil, OnInit'e hiçbir şeyin aktarılması gerekmediğini yazarken aklımda bu kod vardı. Tam olarak ifade edilmedi.
Hangi tasarımı önerirsiniz? Bu son derece basit görünüyor.
Ve işte parçanın yazarı)))) önümde. Bu arada, ben de bu biçimlendirme stilini kullanıyorum - satır başına bir küme ayracı ile.Ve işte parçanın yazarı)))) önümde. Bu arada, ben de bu biçimlendirme stilini kullanıyorum - satır başına bir küme ayracı ile.
evet, gösterge şablon kodu ne işe yarar? bir gösterge oluşturmak için sihirbazı çalıştırın, çizgilerin türlerini ve rengini seçin ve gerekirse girdileri ekleyin
ve bu kadar, gösterge hazır, ardından gövdeyi OnCalculate() şablonundan kopyalayın ve hesaplamaları yazın,
1 dakika içinde ilk indikatörünüzü yazabilirsiniz, yukarıdaki kod "Merhaba kelime ben göstergesi!!!" Gösterdim :)
Not: Bu arada, bu formda, göstergeler MT4'ten MT5'e aktarılabilir, asıl şey gösterge arabelleklerini doğru bir şekilde ayarlamaktır, MT5'te arabellek dizilerini indeksleme ile bir korku vardır .... onlar sadece dizilerdir normal dizi ile)))) indeksleme .. .. daha önce MT4'te gösterge tamponlarının indekslenmesine alışmak zordu, şimdi tam tersine buna alışmak ve MT5)'e geçmek imkansız)))Bu senin kodun değil. Bazı meslektaşlarım yayınladı ama kim ve nerede olduğunu hatırlayamıyorum. Orijinal koda değil, OnInit'e hiçbir şeyin aktarılması gerekmediğini yazarken aklımda bu kod vardı. Tam olarak ifade edilmedi.
Hangi tasarımı önerirsiniz? Bu son derece basit görünüyor.
Ve işte parçanın yazarı)))) önümde.evet, gösterge şablon kodu ne işe yarar? bir gösterge oluşturmak için sihirbazı çalıştırın, çizgilerin türlerini ve rengini seçin ve gerekirse girdileri ekleyin
ve bu kadar, gösterge hazır, ardından gövdeyi OnCalculate() şablonundan kopyalayın ve hesaplamaları yazın,
1 dakika içinde ilk indikatörünüzü yazabilirsiniz, yukarıdaki kod "Merhaba kelime ben göstergesi!!!" Gösterdim :)
Not: Bu arada, bu formda, göstergeler MT4'ten MT5'e aktarılabilir, asıl şey gösterge arabelleklerini doğru bir şekilde ayarlamaktır, MT5'te arabellek dizilerini indeksleme ile bir korku vardır .... onlar sadece dizilerdir normal dizi ile)))) indeksleme .. .. daha önce MT4'te gösterge tamponlarının indekslenmesine alışmak zordu, şimdi tam tersine buna alışmak ve MT5)'e geçmek imkansız)))Karmaşık bir şey yok. Bir çapraz platform göstergesi örneği (bir sınıf kullanır), ancak şablon çıkarılabilir - sınıfı ve bundan sonra hata verecek gereksiz her şeyi kaldırın - platformlar arası şablon kalacaktır.
Bu gösterge, değişiklik yapılmadan her iki platformda da aynı şekilde çalışacaktır - yalnızca gerekli uzantıyla derleme. Kodu iki bölüme ayırmam gerekti - sınıf ve göstergenin kendisi (her şey tek bir listedeydi)
Sınıf:
Gösterge: