tamamen kayboldum - sayfa 3

 
FMIC bu belgelerde TAMAMEN mantıklı olmayan ŞEYLER var. Bu şeyi açık bir şekilde yazan kişi, daha yüksek seviyeli programlama kavramlarına maruz kalmak şöyle dursun, gwbasic veya sözde kodda bir program bile yazmamış olan hedef kitle için yazıyordu. Ya da en azından yazarın amacı, kitabın sadece bu tür insanlara yönelik olması değil, bu tür insanlar tarafından anlaşılabilir olmasıydı. İf/else deyimleri, for döngüleri ve bir değişkenin ne olduğu, yüksek sesle ağlamak için, yani hayır, okumamak bitmeye başlar gibi bölümleri atlama eğilimindeyim. YET, sonraki bölümlerde bu kısımları atladığımda, yazar göreceli bir acemi perspektifinden oldukça başarılı bir şekilde göremedi çünkü benim gibi sınırlı programlama deneyimi olan biri geliyor ve parçalar hala birbirine uymuyor. Literatürde belli bir noktaya geldiğinde. İşte başka bir örnek. Tarih saat veri türü. Buraya gidiyorum: http://msdn.microsoft.com/en-us/library/system.datetime_members%28v=VS.90%29.aspx ve datetime değişkenlerinin standart olarak bu belgelerin söylediğinden çok daha karmaşık olduğunu görüyorum . Örneğin, MILLISECONDS hakkında bilgi içerir. AD 9999'a kadar herhangi bir yıl olabilir. Yine de bu belge farklı olduğunu ÖNERİYOR, ancak yeterli ayrıntıya girmiyor. Belki de standart C++ datetime değişkeni değil, MQL4'e özgü bir şey mi? 1970'in başından beri 2037'nin sonuna kadar geçerli olan saniye sayısı. Şimdi, bu zaman aralığında neredeyse 2^31 saniye var. Bu, bunun işaretli bir uzun tamsayı olduğunu gösterir - çünkü işaretsiz bir uzun tamsayı aslında 1970'den başlayarak 22. yüzyıla girerdi. Bunu, işaretli bir uzun tamsayı GİBİ aritmetik işlemlerde gerçekten kullanabilir miyim? Söylemiyor. Bu belirsiz. Sadece dizenin ne olabileceğine ilişkin belirli kısıtlamalarla, yüceltilmiş dize benzeri bir değişken OLABİLİR. Ayrıca, onu kullanmanın birkaç eksik yolunu gösterir. Ancak, erişilebileceği veya manipüle edilebileceği tüm yollar hakkında yeterince açık değil. Bunu ints ile birlikte tamsayı aritmetiğinde kullanabilir miyim? Bir örneğin zaman indeksini okursam, 1 dakikalık bir grafikten başka bir 1 dakikalık çizelgeden bir tane çıkarabilir miyim ve bunlar ardışık dakikalarsa, 60 (muhtemelen artı veya eksi 1) farklı olmasını bekleyebilir miyim?

Zaten bir sorunum olan başka bir şey daha vardı - ArrayCopySeries'in açıklaması belirsiz. Bazı kısımlarda array[] öğesinin bazı kısımlarda yazıldığını, bazı kısımlarda ise yazılmadığını gösteriyor. Ve ona bakıyorum ve eğer para birimi verilerini diziye kopyalamıyorsa, işlevin amacını kesinlikle anlamıyorum.

İşte bilmek istediğim başka bir şey. Bir EA'nın 3 ana işlevi olabileceğini söylüyor. init, deinit ve start. init ilk çalıştırıldığında bir kez çalıştırılır, start yeni bir onay işareti geldiğinde çalıştırılır ve deinit hakkında bir şey söylemez. Buradaki örnekte https://book.mql4.com/samples/expert bir init bile yok. Bir başlangıcı var. Tüm bunlar ne olursa olsun, Fun_Error gibi hataları görünüşte ele almak için bazı karmaşık şeylere sahiptir. Giriş yok. Peki ya değişkenler. İnit içinde tanımlanan değişkenler, yapıldığında ve "start" çalıştırıldığında hala geçerli midir? Yoksa her iki değişkenin dışında mı bildirilmelidirler? Başlatma içinde bildirilen değişkenler, başlatma yeniden her çalıştırıldığında temizleniyor mu? Değişkenler bunun dışında bildiriliyor mu? Umarım değildir! Herhangi bir işlevin dışında bildirilen değişkenleri DEĞİŞTİRME iznim olduğundan bile emin değilim. Gördüklerimden hepsi küresel statik değişkenler gibi görünüyorlar.

Bu arada, iTime gibi işlevlerde kullanılan para birimi simgelerinin tek tırnak veya çift tırnak içinde olması gerekir. "USDCHF" veya "USDCHF". Bunun gibi binlerce küçük şey. Bunlardan herhangi biri, sonuna geldiğimde derlenmemesine neden olacağından eminim. Ve binlerce farklı küçük tesadüfi şey yanlış olduğunda, hata ayıklama yapılacaktır.

RaptorUK oh tabii ki bana yardım etme zorunluluğunuz yok. Ve eğer iyi vakit geçirme fikriniz, forumlarda insanları trollemekse, herhangi bir foruma girmenin amacı AÇIĞA ilk etapta insanları trollemek olduğunda, bir forumda yardım istedikleri için onlarla alay etmekse, o zaman ikinizin de gerçekten eğlendiğinizi görüyorum. kendiniz ve bir forum kullanıcısının doğru rolü olduğuna inandığınız şeyi yerine getirmek. Bana gelince, cevaplayabileceğim bir soruyu yanıtlayarak herhangi birine yardım etmeye YETKİLİ olsaydım, varsayımsal olarak bunu yapmaya istekli olabilirim. Gizli matematik hakkında çok şey biliyorum, programlama hakkında pek değil. Örneğin, istatistiksel olarak bağımsız olmayan bir düzine göstergeniz varsa, bunları istatistiksel olarak bağımlı oldukları gerçeğini telafi edecek şekilde bir bileşik göstergede en uygun şekilde nasıl birleştireceğimi biliyorum. Tabii ki şimdi kesinlikle SİZE hiçbir konuda yardım etmeyeceğim. Vallahi, seni ayağın raylara sıkışmış halde görsem, "Sana yardım edebilirim, ama benim için bundan ne çıkar?" derdim.

 
zortharg :
FMIC, bu belgelerde TAMAMEN mantıklı olmayan ŞEYLER var. ...

Üst Düzey ve Düşük Düzey dillerde çok iyi bilgi sahibi olmama rağmen, tüm kitabı baştan sona okumakta zorluk çekmedim.

45 yaşındayım ve 1986'dan beri ticari olarak yazılım geliştiricisiyim ve ayrıca Mühendislik (Düşük Akım Elektroniği) lisans derecesine sahibim. C, C++, C#, Pascal, Cobol, Fortran, Perl ve çoktan ortadan kaybolan diğer birçok konuda uzmanım. Ayrıca x86, Z-80, Pics ve diğer birçok mimari için Assembler programlama konusunda da bilgiliyim. Tekrar söylüyorum, MQL4'ü okumakta ve öğrenmekte hiç zorluk çekmedim.

Sonuç olarak, tek sonuca varabileceğim , MQL öğrenmenin asıl amacına odaklanmak yerine, belgeleri eleştirme konusundaki Yüce ve güçlü tavrınızın yalnızca tek bir anlama gelebileceğidir - Aslında, programcı olmayanlardan daha aptalsınız. için belgeler yazılmıştır.

MetaTrader ve MQL'nin size çok değer vermediğini düşünüyorsanız, o zaman neden buradasınız? Gerçekten! Niye ya?

Dışarıda birçok başka ticaret uygulaması ve algoritmik sistem var. Birini seç ve onların başını belaya sok!

Bu arada, "RaptorUK" forumda bir MODERATÖR. Buradaki TROLL SİZSİNİZ!

Bu, bu konudaki son mesajım! Sen çabaya değmezsin.

 
zortharg :

RaptorUK oh tabii ki bana yardım etme zorunluluğunuz yok. Ve eğer iyi vakit geçirme fikriniz, forumlarda insanları trollemekse, herhangi bir foruma girmenin amacı AÇIĞA ilk etapta insanları trollemek olduğunda, bir forumda yardım istedikleri için onlarla alay etmekse, o zaman ikinizin de gerçekten eğlendiğinizi görüyorum. kendiniz ve bir forum kullanıcısının doğru rolü olduğuna inandığınız şeyi yerine getirmek. Bana gelince, cevaplayabileceğim bir soruyu yanıtlayarak herhangi birine yardım etmeye YETKİLİ olsaydım, varsayımsal olarak bunu yapmaya istekli olabilirim. Gizli matematik hakkında çok şey biliyorum, programlama hakkında pek değil. Örneğin, istatistiksel olarak bağımsız olmayan bir düzine göstergeniz varsa, bunları istatistiksel olarak bağımlı oldukları gerçeğini telafi edecek şekilde bir bileşik göstergede en uygun şekilde nasıl birleştireceğimi biliyorum. Tabii ki şimdi kesinlikle SİZE hiçbir konuda yardım etmeyeceğim. Vallahi, seni ayağın raylara sıkışmış halde görsem, "Sana yardım edebilirim, ama benim için bundan ne çıkar?" derdim.

Belki de bu yorumunuzu açıklamalısınız?

Bu forumdaki insanların cesareti!


Bu forumdaki pek çok insan, denemek ve yardım etmek için boş zamanlarından vazgeçiyor. . . bir hakmış gibi gelir ve yardım beklersiniz! Bence siz tavrınızı ortaya koyana kadar herkes size yardımcı olmaktan mutluluk duyacaktır. . . yardım isterken biraz tevazu göstermelisiniz.

Beni istediğin gibi etiketleyebilirsin, gerçekten umurumda değil, neden burada olduğumu biliyorum ve hatta bazı insanlar yardım etmeye çalıştığım için bana teşekkür ediyor. . . Sanırım bu senden öte.

 
zortharg :

O halde iclose ile geçmiş fiyatları birer birer indirmem mi gerekiyor? https://docs.mql4.com/series/iClose Gördüğüm kadarıyla bununla ilgili sorun, indirmenin ortasındayken verilerin güncellenebilmesi. Tamamını blok olarak indirmek çok güzel olurdu. Sanırım zamanı iTime ile indirebilir ve THEN iclose ve THEN iTime'ı aynı indeks üzerinde tekrar kullanabilirim ve eğer değiştiyse, yeni bir çubuk zaman aralığı başlattı ve bir indeks numarasına geri dönmem gerekiyor. Doğru mu düşünüyorum yoksa anlamadığım bir şey mi var?


Neden bir işlev çağrısı Array CopySeries () diziyi kendiniz kopyalamanızı gerektiriyor?

Diziyi bildirirsiniz ancak boyutu belirtmeniz gerekmez.

Diziye her eriştiğinizde, mql "sihir" yapar ve (umarım) doğru değer doğru yerde açılır.

Sayfada bir örnek var.

Bununla birlikte, çevrimiçi belgeler şu anda senkronize değil, bu nedenle meta düzenleyicideki Yardım'ı birincil referansınız olarak kullanın.

Mantıklı gelene kadar örneğe bakın!

 
zortharg :
Tarih saat veri türü. Buraya gidiyorum: http://msdn.microsoft.com/en-us/library/system.datetime_members%28v=VS.90%29.aspx ve datetime değişkenlerinin standart olarak bu belgelerin söylediğinden çok daha karmaşık olduğunu görüyorum . Örneğin, MILLISECONDS hakkında bilgi içerir. AD 9999'a kadar herhangi bir yıl olabilir. Yine de bu belge farklı olduğunu ÖNERİYOR, ancak yeterli ayrıntıya girmiyor. Belki de standart C++ datetime değişkeni değil, MQL4'e özgü bir şey mi? 1970'in başından beri 2037'nin sonuna kadar geçerli olan saniye sayısı. Şimdi, bu zaman aralığında neredeyse 2^31 saniye var. Bu, bunun işaretli bir uzun tamsayı olduğunu gösterir - çünkü işaretsiz bir uzun tamsayı aslında 1970'den başlayarak 22. yüzyıla girerdi. Bunu, işaretli bir uzun tamsayı GİBİ aritmetik işlemlerde gerçekten kullanabilir miyim? Söylemiyor. Bu belirsiz. Sadece dizenin ne olabileceğine ilişkin belirli kısıtlamalarla, yüceltilmiş dize benzeri bir değişken OLABİLİR. Ayrıca, onu kullanmanın birkaç eksik yolunu gösterir. Ancak, erişilebileceği veya manipüle edilebileceği tüm yollar hakkında yeterince açık değil. Bunu ints ile birlikte tamsayı aritmetiğinde kullanabilir miyim? Bir örneğin zaman indeksini okursam, 1 dakikalık bir grafikten başka bir 1 dakikalık çizelgeden bir tane çıkarabilir miyim ve bunlar ardışık dakikalarsa, 60 (muhtemelen artı veya eksi 1) farklı olmasını bekleyebilir miyim?

Basit bir şeyi sormak için neden bu kadar çok kelime var :)

Eski MQL: https://docs.mql4.com/dateandtime Datetime türündeki verilerle çalışmayı sağlayan bir işlevler grubu ( 1 Ocak 1970 gece yarısından itibaren geçen saniye miktarını temsil eden tam sayı ).

Yeni MQL: https://www.mql5.com/en/docs/basis/types/integer/datetime - Tarih saat türü, 01 Ocak 1970'den bu yana geçen saniye sayısı olarak tarih ve saati depolamak için tasarlanmıştır. Bu tür 8 bayt bellek kaplar.

Zamanı depolamak için eski 32 bit tamsayıyı kullanan çoğu dil, 2038 yılı geldiğinde yıkımı önlemek için 64 bit'e taşındı.

Sadece tahmin ettiğiniz gibi ekleyip çıkarıyorsunuz. Ancak bunu bir tarih -saat veri türü olarak tutun ve uzun bir değişkende saklamanın cazibesinden kaçının.

 

TEŞEKKÜRLER ydrol!

Hımmmm. static_cast'in mql4'te bile var olup olmadığını bilmiyorum, ancak sonucu başka bir tarih saatine kaydettiğim sürece, tarih saatlerinde herhangi bir normal aritmetik işlemi kullanabilir miyim? X[] bir tarih-saat dizisiyse ve dakika sayısıyla çalışmak istiyorsam, Y bir tarih-saat olduğu ve uzun olmadığı sürece Y=(X[17]+30)/60 alabilir miyim? Doğru? Daha doğrusu Y=(X[17]-X[16]+30)/60 alırdım çünkü X[17] 29 mod 60 ve X[16] 30 mod 60 olsaydı kötü olurdu, İlk şekilde yapsaydım, aralarında 2 dakika olduğunu düşünüyorum.

Ah dostum, şimdiye kadar yaptığım kod zaten çok uzun ve tüm yapılan verileri okumak ve şimdi veri atlama dakikalarını (veya tüm hafta sonunu!) enterpolasyon yaparak, bu hindi ile işim bittiğinde çalışma ihtimalinin ne olduğunu merak ediyorum, ha ha. Hepsi, sonunda spread/komisyonu yenebilecek bir ticaret yöntemim olduğunu gösteren bir matlab programından, ancak onu gerçek uygulamaya koymak başka bir şey.

ydrol olmayan herkese, tamam, seni ilgili p***ing yarışmalarının kazananı ilan ediyorum, bu yüzden tebrikler ve kazandığına göre, artık bu konuya mesaj yazmayı bırakabilirsin.

 

Hmmmmm. I don't know if static_cast even exists in mql4, but can I just use any regular arithmetic operations on datetimes then, so long as I save the result in another datetime?

Aritmetiğinizin sonucu hala zaman içinde bir noktaysa (yani hala 1970'den beri saniye sayısı olan bir değer), o zaman onu bir tarih saat olarak tutun, aksi takdirde onu uzun veya int'ye çevirebilirsiniz. (Zorunda değilsiniz ama daha sonra karışıklığı önleyecektir)

Herkesi kızdırmaya yardımcı olmaz, sadece istediğiniz yardımı almak için yaklaşımı değiştirin :)

 

Bazı kodlar yazdıktan sonra, tarih saatleriyle aritmetik sonuçları girdiler olarak girdi olarak kaydetmekten kaçınmak benim için gerçekten çok zor görünüyor. Ancak static_cast<long> teorik olarak C++'da olduğu gibi çalışır mı? Belgelerde herhangi bir söz göremiyorum.

Ah, bu arada, saat dilimi. UTC'mi? O kitap, 1 Ocak 1970'ten 0:00'dan beri geçen saniye sayısını söyleyip duruyor. UNIX zamanı gibi UTC olduğunu varsayabilirim, ancak buradaki "datetime" değişkenleri ile C++'ın kullandığı (örneğin milisaniye yok) arasında en azından bazı tutarsızlıklar olduğunu zaten belirlemiştik - ki bu kuşkusuz UNIX değil time, ancak yine de "datetime" olarak adlandırılır - yani 1970'in başında başlaması nedeniyle yüzeysel olarak UNIX zamanına benzediği için, bunun böyle olduğunu varsaymamalıyım. Mutlaka UTC mi yoksa her komisyoncunun kendi saat dilimine göre kendi ofseti olması ve haftanın başlangıcının nerede olduğunu, modulo 10080 dakikanın nerede olduğunu bulmak için kodda bulundurmam gerekmesi mümkün mü? verilere göre mi? Mesele şu ki, işlem başladığında ve bittiğinde modulo 10080 zamanını bilmek, çünkü piyasa bu 10080 dakikanın sadece 7200'ü açık olduğundan, böylece hafta sonu yaklaşırken pozisyonları kapatabilir ve tam gaz başlamaz. başlangıç veya ÇOK daha kötüsü, bir haftanın sonu ile bir sonraki haftanın başlangıcı arasında fiyatlardaki süreksizliklere dayalı sert ticaret kararları vermek, hatta oynaklık gibi bilgileri belirlerken kesintilere aldırış etmemek - ki bunu ortalama kare değişimi olarak tanımlıyorum 1 dakika sonra fiyatta - ve sonra 2 dakika sonra fiyattaki ortalama kare değişikliğinin 1/4 katını ve 3'ten sonra fiyattaki ortalama kare değişikliğinin 1/9 katını ve 4'ten sonra fiyattaki ortalama kare değişikliğinin 1/16 katını ve sonra hepsini 1/(1+1/2+1/3+1/4)=0.48 ile çarpın.

Hey ne diyebilirim ki, yardım istemeye geldim ve baştan beri bana kötü ve düşmanca davrandılar. Biri yardım isterse, yaptığım şey ya onlara vermem ya da onlara veririm. Birinin sorduğu bir sorunun cevabını bilmiyorsam, cevaplamak yerine küçük konuşmalar yapmam ve soruyu doğru cevaplamak için zaman ayırmak istemiyorsam, zaman ayırmam. Bunu sordukları için onlarla alay etmek ya da onlara işe yaramaz bir cevap vermek. Soru soran birinin, Dünya gezegeninde bir günden fazla yaşayıp yaşamadığını veya sorunun retorik olup olmadığını ve özellikle belirli bir grup insana hakaret etmek için tasarlanıp tasarlanmadığını bilmeleri gerekir. Özenli bir insanım ve kısasa kısas etik kuralları üzerinde çalışıyorum. İnsanlar bana kötü davranana kadar onlara karşı kibarım ve sonra kibar olmayı bırakıyorum ve ayrıca yalan söyleyene, hile yapana ve benden çalana kadar insanlara karşı dürüstüm ve sonra varsayılan medeni davranış kodum pencereden dışarı ve Karşılığında yalan söyleyeceğim, hile yapacağım ve çalacağım ve acıma ya da kısıtlama göstermeyeceğim. Dünyaya bakmanın basit bir yolu olabilir ama ben inatçı ve bağışlayıcı değilim.

Ama sana, yardımın için teşekkür ederim. Ve sana yardım edebileceğim bir şey varsa, sor. Yardım edebileceğim herhangi bir konuda yardım aradığınızı varsaymıyorum.

 
zortharg :

Bazı kodlar yazdıktan sonra, tarih saatleriyle aritmetik sonuçları girdiler olarak girdi olarak kaydetmekten kaçınmak benim için gerçekten çok zor görünüyor. Ancak static_cast<long> teorik olarak C++'da olduğu gibi çalışır mı? Belgelerde herhangi bir söz göremiyorum.

Ah, bu arada, saat dilimi. UTC'mi?


Saat diliminden bağımsızdır. . . 14:00 ile 15:00 arasında kaç saniye var? 3600'ü yanıtlamak için saat dilimini bilmenize gerek yok. . . Başlangıç saatinin, 1 Ocak 1970 Gece Yarısı ve ilgilendiğiniz saatin aynı saat diliminde olduğunu varsayalım.
 

EDIT: Hata, belirtildiği gibi, tarih saat için belirli bir saat dilimi yoktur. Nereden aldığına bağlı! (bu, nihai olarak dayandığı UnixTime'ın aksine, gereksiz karmaşıklığa neden olur!).

Datetime için saat dilimi (1970'i geçen saniyeler) UTC'ye dayanır. Unix zamanı gibi. UnixTime-64 bit unix zamanıdır .

Unile true UTC, Unix zamanı artık saniyeleri yok sayar (1. paragrafa bakın) ve bu nedenle modulo aritmetiği dakikalar ve saatler boyunca çalışır.

datetime - datetime = uzun (saniye süre) - ticaret söz konusu olduğunda, öngörebildiğim çoğu zaman bir int olacak!

tarihsaat +/- saniye(uzun) = tarihsaat(başka bir tarih)

tarihsaat +/- saniye(int) = tarihsaat(başka bir tarih)