Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Günün ilk çubuğu, TimeHour()'un saymaya başlamasından sonraki ilk çubuk olmalıdır.
Bu elbette M1, M5 , M15 vb. herhangi bir şeyin ilk çubuğu olacak, hepsi yeni çubuklar başlatıyor.
En kısa zamanda deneyeceğim, ayrıca bu konu üzerinde çalışıyorum.
Çok teşekkürler.
Hala forumları okuyorum ve araştırıyorum, benzer forumlar bulabiliyorum ama tam olarak ne istediğimi bulamıyorum. (belki kod stillerini anlamıyorum veya ...)
Hızlı bir şekilde ekran görüntüsü yaptım, umarım bu beni açıkça anlamanıza yardımcı olabilir.
Şimdiden teşekkürler.
open= iOpen ( Symbol (), PERIOD_D1 , 0 );
// put in ontick
if ( iOpen ( Symbol (), PERIOD_D1 , 0 )!=open)
{
if ( TimeHour (open)== 0 )
{
Alert ( "New Day !!" );
}
open= iOpen ( Symbol (), PERIOD_D1 , 0 ); // assign new value every hour
}
Birkaç bira içtim, bu yüzden umarım her şekilde yanlış olduğundan emin olduğun fikri alırsın.
Bence açık zamanla değiştirilmeli.
Ya da belki şunları bile yapabilirsiniz:
{
Alert ( "NEw DAy m8" );
}
Birkaç bira içtim, umarım her şekilde yanlış olduğundan emin olduğun fikri anlarsın.
not. diğer konuya ne olacak? neredeyse 40 sayfa mıydı?Ya da belki şunları bile yapabilirsiniz:
(Kod kaynağı bölümünde sorunumu açıklamaya çalıştım)
// this code gives me Hour 00:00 - but actually D1 time should show Hour 01:00 | this mean my broker shows absolutely wrong Hour for period PERIOD_D1
// But I need to write code to get first H1 bar Time of the day ( e.g: if first H1 bar 00:00 or 01:00 or ... ) instead of PERIOD_D1
// But I really struggle to write code for get today first H1 time
---
not
Sizce neden alt başlık açmıyorum?
Hala üzerinde çalışıyorum. Çözümlerini forumlarda bulabilirim. Şimdi de iyi gidiyor biraz yavaş.
Bunlara ek olarak:
Ticaret Paneli EA'larını yazmaya başladığımda, 4 adet Sell, Buy, Close all Order, EXIT (kaldır) EA fonksiyon komut dosyası yazmam gerektiğini düşündüm.
Üzerinde çalışırken bir çok fikrim var... EA'nın 3k'dan fazla satırı var.
Yine de hepsine karar verirsem, neredeyse 10 tane daha kullanışlı fonksiyon yazmalıyım.
Ayrıca belki Ticaret Paneli EA'larımı bitirdiğimde, Ticaret Paneli EA'larım için senaryo yazmaya nasıl başladığım hakkında küçük bir hikaye yazacağım. (Ben bile bitirmedim - gerçekten kimin göreceğine inanıyorum ki çoğu insan: Vay canına! ) hehe :)
---
Teşekkürler Bay Marco .
Hepinize (yorumlarıma cevap veren) ve yardımlarınız için çok teşekkür ederim.
#property show_inputs
#define HOUR 3600
#define DAY 86400
extern int local_offset = 1; // local time offset from broker (hours)
void OnStart()
{
local_offset*=HOUR;
int D1_shift = (TimeCurrent()%DAY > local_offset) ? 0 : 1;
datetime broker_midnight = iTime(_Symbol,PERIOD_D1,D1_shift);
datetime local_midnight = broker_midnight + local_offset;
int M5_shift = iBarShift(_Symbol,PERIOD_M5,local_midnight);
datetime M5_time = iTime(_Symbol,PERIOD_M5,M5_shift);
double M5_open = iOpen(_Symbol,PERIOD_M5,M5_shift);
printf("M5_time: %s M5_open: %f", TimeToString(M5_time),M5_open);
}
Harika örneğiniz için teşekkürler.
Belki vakit ayırabilirsem yarın video/resim ile açıklamaya çalışırım.
Bu konuyu çok araştırıyorum.
(ayrıca google seo'da bu anahtar kelimeler gibi arama yapıyorum (seo'da şu ana kadar yararlı olmayan yorum ): site:mql4.com | site:mql5.com günün ilk çubuğu )
Yerel > komisyoncu zaman farkını otomatik olarak algılamanın bir yolunu mu arıyorsunuz? örneğin +1 saat
Manuel bir ayar yapacaksanız (bu daha iyidir çünkü bazen yerel saati kullanmak istemezsiniz, ancak tamamen başka bir saat dilimini kullanmak istemezsiniz) takip ettiğiniz adımlar yukarıdaki komut dosyamdaki gibidir:
1. Komisyoncu saatinde gece yarısı alın (iTime kullanarak veya hesaplama yoluyla)
2. Ofset ayarınızı kullanarak yerel bir gece yarısına dönüştürün
3. Seçtiğiniz zaman diliminde doğru çubuğu elde etmek için yerel gece yarısını iBarShift'e koyun.
Yerel > komisyoncu zaman farkını otomatik olarak algılamanın bir yolunu mu arıyorsunuz? örneğin +1 saat
Manuel bir ayar yapacaksanız (bu daha iyidir çünkü bazen yerel saati kullanmak istemezsiniz, ancak tamamen başka bir saat dilimini kullanmak istemezsiniz) takip ettiğiniz adımlar yukarıdaki komut dosyamdaki gibidir:
1. Komisyoncu saatinde gece yarısı alın (iTime kullanarak veya hesaplama yoluyla)
2. Ofset ayarınızı kullanarak yerel bir gece yarısına dönüştürün
3. Seçtiğiniz zaman diliminde doğru çubuğu elde etmek için yerel gece yarısını iBarShift'e koyun.
Beni kesinlikle doğru anlıyorsunuz - bunu otomatik olarak yapmanın bir yolunu arıyorum... - Peki neden? Birkaç önemli göstergem var (kendi kendine yapılan - farklı forumların yardımı ile) manuel yolu seçersem - ayarlarını değiştirebilirim ... bu uzun bir yol - Çok tembelim. :)
Çok daha fazla teşekkürler!
Belki bir çözüm buldum (şu anda çalışıyor gibi görünüyor - zaten 2 farklı broker denedim, doğru zamanı alıyorum).
Sorunun deneyim eksikliğinden kaynaklandığına inanıyorum.
S: Aşağıdaki sonuçlarda yalnızca 1. Saati nasıl tutabilirim, lütfen?
(Aslında aşağıdaki sonuçtan sadece "1"i nasıl tutabileceğimi buldum - ama profesyonel bir yönteme ihtiyacım var, lütfen)
( örn: sonuç: 2017.02.27 0 1 :00:00 - Ama sadece şunu tutmam gerekiyor: 1 )
Her şey için çok teşekkürler.
(Nasıl çözüm bulduğumu paylaşacağım. - Yardımcı olmadıysan çözüm bulamadım - bir kez daha çok teşekkürler. )
Hemen aşağıdaki kodu arıyordum.
Ama yine de test etmem gerekiyor.
Period_Shift= iBarShift ( Symbol (), PERIOD_H4 ,Period_Look);
Period_Time= iTime ( Symbol (), PERIOD_H4 ,Period_Shift- 1 );
GMT_Offset=(Period_Time- iTime ( Symbol (), PERIOD_W1 , 0 )- PeriodSeconds ( PERIOD_D1 ))/ PeriodSeconds ( PERIOD_H1 ); // result: 1
Yukarıdaki kod doğru değilse, lütfen bana bildirin.
@honest_knave ve @Marco'ya çok teşekkürler
Pekala, Max bunu bir düşünün, eğer bir desen tarıyorsanız ve oluşuyorsa, tetikleyiciniz zaman damgasından bağımsız olarak sönecektir.
Bu nedenle, tetikleyicinin farklı brokerlerde birkaç zaman damgası olabilir, ancak tetikleyicinin tam anı tüm brokerlerde yaklaşık olarak aynı olacaktır.
Tam olarak değil, ama yeterince yakın.