Ancak: Bu kod, OnCalculate()'ye her girdiğinizde çalıştırılacaktır - burada, ihtiyaçlarınıza bağlı olarak, ya bool bayrağını ekleyin ya da kodu ayrı bir işleve taşıyın.
Ama: bu kod OnCalculate()'e her girdiğinizde çalıştırılacaktır - burada, ihtiyaçlarınıza bağlı olarak, ya bool bayrağını ekleyin ya da kodu ayrı bir fonksiyona taşıyın.
Teşekkürler, ancak her tikte yeniden hesaplamak iyi değil - kodunuzu anlamanız gerekiyor, ancak kodumun neden çalışmadığını anlamak istiyorum, ancak günlüğe garip sayılar döndürülüyor
Open_timeTF
1454715900
Open_time
1454284800
Delta_1S
431100
Delta_M15
479
günün ilk barı ile mevcut bar arasında 479 barlık bir fark olduğu ortaya çıktı - bu neden?
Teşekkürler, ancak her tikte yeniden hesaplamak iyi değil - kodunuzu anlamanız gerekiyor, ancak kodumun neden çalışmadığını anlamak istiyorum, ancak günlüğe garip sayılar döndürülüyor
Open_timeTF
1454715900
Open_time
1454284800
Delta_1S
431100
Delta_M15
479
günün ilk barı ile mevcut bar arasında 479 barlık bir fark olduğu ortaya çıktı - bu neden?
Sonuçta, psişik olmadığımı belirttim ve bu nedenle:
Ama: bu kod OnCalculate()'i her girdiğinizde çalıştırılacaktır - burada, ihtiyaçlarınıza bağlı olarak, yabool bayrağını ekleyin ya da kodu ayrı bir fonksiyona taşıyın .
Sonuçta, psişik olmadığımı belirttim ve bu nedenle:
Ve neden burada psişik yetenek gerekli? Yukarıdaki kodda değişkenler var, bu değişkenlerin ne döndürdüğünü sayılarla gösterdim ve bunun neden böyle olduğunu sordum, aksi halde değil - koda göre.
Karputov Vladimir , kodunuzu anlamıyorum - bu işte acemi olduğum için OnCalculate işlevini daha önce hiç kullanmadım, bu yüzden orada oranların_toplamın ne olduğunuveen önemlisi nerede hesaplandığını anlayamıyorum. daha sonra iade etmek için? Tüm bunları ayrı bir işleve nasıl dönüştüreceğimi hala anlamıyorum ... yorum yapmadan zor.
-Aleks- : Karputov Vladimir , kodunuzu anlamıyorum - bu işte acemi olduğum için OnCalculate işlevini daha önce hiç kullanmadım, bu yüzden orada oranların_toplamın ne olduğunuveen önemlisi nerede hesaplandığını anlayamıyorum. daha sonra iade etmek için? Tüm bunları ayrı bir işleve nasıl dönüştüreceğimi hala anlamıyorum ... yorum yapmadan zor.
İşte göstergenin tam MQL4 kodu:
//+------------------------------------------------------------------+//| Start day.mq4 |//| Copyright 2016, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2016, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strict#property indicator_chart_window//--- input parametersinputint timer= 10 ; // seconds//--- parameterbool IsDefineTime= true ; // true -> you can define time//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit ()
{
//--- indicator buffers mappingEventSetTimer (timer);
//---
IsDefineTime= true ;
//---return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| 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[])
{
//---int temp_day;
MqlDateTime dt_struct;
TimeToStruct (time[ 0 ],dt_struct);
temp_day=dt_struct.day;
if (IsDefineTime)
{
for ( int i= 0 ;i<rates_total- 1 ;i++)
{
TimeToStruct (time[i],dt_struct);
if (dt_struct.day<temp_day)
{
Print ( "Start day " ,time[i- 1 ]);
IsDefineTime= false ;
break ;
}
}
}
//--- return value of prev_calculated for next callreturn (rates_total);
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer ()
{
//---
IsDefineTime= true ; // true -> you can define time
}
//+------------------------------------------------------------------+
Çalışma algoritması: gösterge başladığında, zamanlayıcının zaman aralığını ayarlarsınız (örneğin, 10 saniye) - bu, zamanlayıcının her 10 saniyede bir patlayacağı anlamına gelir:
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer ()
{
//---
IsDefineTime= true ; // true -> you can define time
}
ve IsDefineTime değişkeni true olarak ayarlanır. Bu ne için? IsDefineTime=true olduğunda, OnCalculate() içinde günün başlangıç saatini belirlemek için döngüye girebiliriz:
if (IsDefineTime)
{
for ( int i= 0 ;i<rates_total- 1 ;i++)
{
TimeToStruct (time[i],dt_struct);
if (dt_struct.day<temp_day)
{
Print ( "Start day " ,time[i- 1 ]);
IsDefineTime= false ;
break ;
}
}
}
Bu döngüde time[] dizisini (bu dizi açılış zamanının değerlerini saklar) en sağdaki çubuktan (dizini "0"a eşittir) geçmeye başlıyoruz. Günün başlangıcı bulunduğunda, değerini yazdırır ve IsDefineTime değişkenini false olarak ayarlarız - bu şekilde, zamanlayıcı tekrar etkinleşene kadar kendimizi günün başlangıcı döngüsüne girmekten koruruz.
Karputov Vladimir , açıklama için teşekkürler, ancak bu sorunu nasıl çözüyor?
Kabaca söylemek gerekirse, günün başlangıcı çubuğuna karşılık gelen mevcut TF'nin çubuğunu bulmak gerekir. Her çubukta öğrenin ve buna göre göstergenin hesaplanmasını ve çizimini yapın.
Karputov Vladimir , açıklama için teşekkürler, ancak bu sorunu nasıl çözüyor?
Kabaca söylemek gerekirse, günün başlangıcı çubuğuna karşılık gelen mevcut TF'nin çubuğunu bulmak gerekir. Her çubukta öğrenin ve buna göre göstergenin hesaplanmasını ve çizimini yapın.
Sorulduğu gibi, size cevap verdiler :). Ve bu gün için ilk çubuğun saatine değil, bu çubuğun indeksine ihtiyacınız varsa, günün başlangıcını yazdırdığınızda işte burada:
.
.
.
Print ( "Start day " ,time[i- 1 ]);
.
.
.
[i-1] indeksini kullanıyorsunuz - bu, günün ilk çubuğunun numarasıdır.
Sorulduğu gibi, size cevap verdiler :). Ve bu gün için ilk çubuğun saatine değil, bu çubuğun indeksine ihtiyacınız varsa, günün başlangıcını yazdırdığınızda işte burada:
[i-1] indeksini kullanıyorsunuz - bu, günün ilk çubuğunun numarasıdır.
Katılıyorum - kafa karıştırıcı bir şekilde sordu.
Uygulamada benim yaptığım bir gösterge var ama doğru sayılmıyor. Çok aptalım ve anlamıyorum, sizin tarafınızdan yapılan açıklamalara rağmen, günün başlangıcındaki ilk çubuğa karşılık gelen endeksi doğru bir şekilde belirlemesini nasıl sağlayabilirim.
Küstahlık ettiğim için özür dilerim, ama bana kendi kodumu nasıl birleştireceğimi gösterebilir misin?
Lütfen yardım et! (MQL4)
Gösterge için her çubuğu dikkate alarak M15 tablosunda Günün açılış saatini almak gerekir.
Mevcut çubuğu (0) dikkate alarak saniyeler içinde hesaplamaya karar verdim, ancak bir hata yaptım, nerede olduğunu anlayamıyorum
D_Shift=(Open_time-pos*15*60-(Open_time-Open_timeTF))/1440*60;
Bir gösterge için ise, o zaman:
Ancak: Bu kod, OnCalculate()'ye her girdiğinizde çalıştırılacaktır - burada, ihtiyaçlarınıza bağlı olarak, ya bool bayrağını ekleyin ya da kodu ayrı bir işleve taşıyın.
Bir gösterge için ise, o zaman:
Ama: bu kod OnCalculate()'e her girdiğinizde çalıştırılacaktır - burada, ihtiyaçlarınıza bağlı olarak, ya bool bayrağını ekleyin ya da kodu ayrı bir fonksiyona taşıyın.
Teşekkürler, ancak her tikte yeniden hesaplamak iyi değil - kodunuzu anlamanız gerekiyor, ancak kodumun neden çalışmadığını anlamak istiyorum, ancak günlüğe garip sayılar döndürülüyor
günün ilk barı ile mevcut bar arasında 479 barlık bir fark olduğu ortaya çıktı - bu neden?
Teşekkürler, ancak her tikte yeniden hesaplamak iyi değil - kodunuzu anlamanız gerekiyor, ancak kodumun neden çalışmadığını anlamak istiyorum, ancak günlüğe garip sayılar döndürülüyor
günün ilk barı ile mevcut bar arasında 479 barlık bir fark olduğu ortaya çıktı - bu neden?
Sonuçta, psişik olmadığımı belirttim ve bu nedenle:
Ama: bu kod OnCalculate()'i her girdiğinizde çalıştırılacaktır - burada, ihtiyaçlarınıza bağlı olarak, ya bool bayrağını ekleyin ya da kodu ayrı bir fonksiyona taşıyın .
Sonuçta, psişik olmadığımı belirttim ve bu nedenle:
Karputov Vladimir , kodunuzu anlamıyorum - bu işte acemi olduğum için OnCalculate işlevini daha önce hiç kullanmadım, bu yüzden orada oranların_toplamın ne olduğunu ve en önemlisi nerede hesaplandığını anlayamıyorum. daha sonra iade etmek için? Tüm bunları ayrı bir işleve nasıl dönüştüreceğimi hala anlamıyorum ... yorum yapmadan zor.
İşte göstergenin tam MQL4 kodu:
Çalışma algoritması: gösterge başladığında, zamanlayıcının zaman aralığını ayarlarsınız (örneğin, 10 saniye) - bu, zamanlayıcının her 10 saniyede bir patlayacağı anlamına gelir:
ve IsDefineTime değişkeni true olarak ayarlanır. Bu ne için? IsDefineTime=true olduğunda, OnCalculate() içinde günün başlangıç saatini belirlemek için döngüye girebiliriz:
Bu döngüde time[] dizisini (bu dizi açılış zamanının değerlerini saklar) en sağdaki çubuktan (dizini "0"a eşittir) geçmeye başlıyoruz. Günün başlangıcı bulunduğunda, değerini yazdırır ve IsDefineTime değişkenini false olarak ayarlarız - bu şekilde, zamanlayıcı tekrar etkinleşene kadar kendimizi günün başlangıcı döngüsüne girmekten koruruz.
Karputov Vladimir , açıklama için teşekkürler, ancak bu sorunu nasıl çözüyor?
Kabaca söylemek gerekirse, günün başlangıcı çubuğuna karşılık gelen mevcut TF'nin çubuğunu bulmak gerekir. Her çubukta öğrenin ve buna göre göstergenin hesaplanmasını ve çizimini yapın.
Karputov Vladimir , açıklama için teşekkürler, ancak bu sorunu nasıl çözüyor?
Kabaca söylemek gerekirse, günün başlangıcı çubuğuna karşılık gelen mevcut TF'nin çubuğunu bulmak gerekir. Her çubukta öğrenin ve buna göre göstergenin hesaplanmasını ve çizimini yapın.
Sorulduğu gibi, size cevap verdiler :). Ve bu gün için ilk çubuğun saatine değil, bu çubuğun indeksine ihtiyacınız varsa, günün başlangıcını yazdırdığınızda işte burada:
[i-1] indeksini kullanıyorsunuz - bu, günün ilk çubuğunun numarasıdır.
Sorulduğu gibi, size cevap verdiler :). Ve bu gün için ilk çubuğun saatine değil, bu çubuğun indeksine ihtiyacınız varsa, günün başlangıcını yazdırdığınızda işte burada:
[i-1] indeksini kullanıyorsunuz - bu, günün ilk çubuğunun numarasıdır.
Katılıyorum - kafa karıştırıcı bir şekilde sordu.
Uygulamada benim yaptığım bir gösterge var ama doğru sayılmıyor. Çok aptalım ve anlamıyorum, sizin tarafınızdan yapılan açıklamalara rağmen, günün başlangıcındaki ilk çubuğa karşılık gelen endeksi doğru bir şekilde belirlemesini nasıl sağlayabilirim.
Küstahlık ettiğim için özür dilerim, ama bana kendi kodumu nasıl birleştireceğimi gösterebilir misin?
-Aleks- :
gün başındaki ilk çubuğa karşılık gelen indeksi doğru bir şekilde belirlemesini nasıl sağlayabilirim.
bir şekilde FSE çalışıyor) Bunun gibi bir şey: