Hatalar, hatalar, sorular - sayfa 313

 

Nedense OnTester işlevinde hesaptaki cari karı alamıyorum

Bu şekilde 0 alıyorum

double OnTester()
{
   return(AccountInfoDouble(ACCOUNT_PROFIT));

Ve işte bu şekilde kar elde edersiniz:

double OnTester()
{
   return(AccountInfoDouble(ACCOUNT_BALANCE)-100000);

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5
 
stringo :

Ne hakkında tartışıyoruz? w0 ayarlama

PS Mesaj kesinlikle olacaktır (belki birkaç satır aşağıda)


Slava aynı fikirde - tüm bu anlaşmazlıklar çok zaman alıyor, peki, onlar (anlaşmazlıklar) nafig. :)

Ancak, hareket halindeyken denilen şey - siz, eminim ki her şeyi çok iyi biliyorsunuzdur, ancak yine de bu işlev harici ise ve yalnızca bir bildirimle bildirilirse, o zaman "const" ve "in" gibi değiştiriciler vardır. " ve dışarı". Ve belki de bu işlevde bir kusur vardır. Gerçek şu ki, eğer bu bir geri dönüş parametresiyse, o zaman onu iade etmemeye çalışılması durumunda ("dönüş" yoluyla döndürülürse), bir uyarı verilir ve işlevin ikinci biçiminin varlığı, döndürülen değer bir parametre aracılığıyla döndürülür, bu dönüş değeri nedeniyle bir uyarı da verilmelidir. Aksi takdirde, başarının/başarısızlığın sonucunun bir parametre üzerinden ve değerin kendisinin geri dönüş yoluyla döndürülmesi için yaptıysanız, geri dönmemek imkansız olurdu. Ve başarı ya da başarısızlık da DAİMA geri gelir. Başka bir deyişle - ( http://users.telenet.be/bart.demeyere/C++InOutParameters.html ) burada uzun süredir var olan bir çözüm.


Ancak genel olarak konuşma, fark ettiğim gibi, hiçbir şeyle ilgili değil. IMHO, mevcut uygulamada bunun gibi önemli bir şeyi değiştirmeyi düşünmüyorsanız bu tür soruları yanıtlamanız gerekiyor :) - "Evet, böyle bir sorun var, programın sonraki sürümlerinde çözülecek, şimdi biz kodu düzelttik ve yalnızca hataları düzeltiyoruz." Hiç kimse (sanırım en yetersiz olanlar bile) gücenmeyecek, sadece sorunu çözmek önemli ve gerekli.


Bu sürümde çok (ÇOK) yararlı değiştiriciler olup olmayacağı ve diğerleri, esasen hataları en aza indirmenize izin verir.


***

Bütün bu yazışmalara yarım gün harcanacak. bağlıyorum. :)

 
Erm955 :

Nedense OnTester işlevinde hesaptaki cari karı alamıyorum

Bu şekilde 0 alıyorum

double OnTester()
{
   return(AccountInfoDouble(ACCOUNT_PROFIT));

Ve işte bu şekilde kar elde edersiniz:

double OnTester()
{
   return(AccountInfoDouble(ACCOUNT_BALANCE)-100000);


Global bir değişken bildiririz ve OnInit()'te ona mevcut bakiye değerini atarız.

OnTester()'da tüm işlemlerin sonuçlarına dayanarak nihai karı hesaplarız:

Профит=ТекущийБбаланс - Начальный баланс

ve OnTester() içinde yayınlayın.


Ve şimdi elde etmeye çalıştığınız şey, tüm pozisyonlar kapalıysa sıfıra eşit olan mevcut sabit olmayan kârdır.

 
Academic :


Slava kabul eder - tüm bu anlaşmazlıklar çok zaman alır, iyi, onlar (anlaşmazlıklar) nafig. :)

Bu sürümde çok (ÇOK) yararlı değiştiriciler olup olmayacağı ve diğerleri, esasen hataları en aza indirmenize izin verir.

"Neyi tartışıyoruz?" - çocukluğumdan bir cümle, "ne bahse giriyoruz?" anlamına gelir.

Bir parametreyi referans olarak iletmek sadece inout anlamına gelir. Basitçe derleyiciye tabi olmayan uygulamalar vardır.

Fonksiyonlara adım atarak yürütme akışını analiz etmek aslında oldukça kolaydır (bir örnek Rashid tarafından sağlanmıştır). Bu yaklaşımı bilinçli olarak terk ettik. Bu nedenle, derleme süresinin bu nedenle önemli ölçüde artabilmesi nedeniyle. Bu nedenle, en basit seçeneğe gittik - bir uyarı vermek. Ve ne, böyle bir uyarı vermemek daha mı iyi? Hayır, zorundasın. Açık bir başlatma yapın - uyarı olmayacak.

Ayrıca mantıksal ifadelerin kısaltılmış bir değerlendirmesini yaptığımızı da tekrar ediyorum. Bu, sizin durumunuzda, eğer ilk ObjectGetDouble false döndürürse (örneğin, programın dışındaki nesne, dikkat edin, aniden mevcut olmadığı için), o zaman ikinci ObjectGetDouble çağrılmayacaktır.

Документация по MQL5: Основы языка / Типы данных / Ссылки. Модификатор & и ключевое слово this
Документация по MQL5: Основы языка / Типы данных / Ссылки. Модификатор & и ключевое слово this
  • www.mql5.com
Основы языка / Типы данных / Ссылки. Модификатор & и ключевое слово this - Документация по MQL5
 
stringo :

"Neyi tartışıyoruz?" - çocukluğumdan bir cümle, "ne bahse giriyoruz?" anlamına gelir.

Bir parametreyi referans olarak iletmek sadece inout anlamına gelir. Basitçe derleyiciye tabi olmayan uygulamalar vardır.

Fonksiyonlara adım atarak yürütme akışını analiz etmek aslında oldukça kolaydır (bir örnek Rashid tarafından sağlanmıştır). Bu yaklaşımı bilinçli olarak terk ettik. Bu nedenle, derleme süresinin bu nedenle önemli ölçüde artabilmesi nedeniyle. Bu nedenle, en basit seçeneğe gittik - bir uyarı vermek. Ve ne, böyle bir uyarı vermemek daha mı iyi? Hayır, zorundasın. Açık bir başlatma yapın - uyarı olmayacak.

Ayrıca mantıksal ifadelerin kısaltılmış bir değerlendirmesini yaptığımızı da tekrar ediyorum. Bu, sizin durumunuzda, eğer ilk ObjectGetDouble false döndürürse (örneğin, programın dışındaki nesne, dikkat edin, aniden mevcut olmadığı için), o zaman ikinci ObjectGetDouble çağrılmayacaktır.


Bu doğru, çağrılmayacak - bu, Sish kodlarının standart davranışıdır.

Giriş ve çıkış değiştiricileri geçmiş referanslar olabilir. Ve varsayılan olarak, bağlantılar için her zaman içeride ve dışarıdadırlar. Ancak in değiştirici ile bir bağlantı iletebilirim, bu da bu fonksiyon parametresinin her zaman girildiği ve referans olarak iletilmesine rağmen ona yazmanın mümkün olmadığı anlamına gelir. Okudun mu ? http://users.telenet.be/bart.demeyere/C++InOutParameters.html


in : parametresi okunacaktır (her dalda okunmadığında uyarı*)
( in ): parametre okunabilir (hiçbir yerde okunmadığında uyarı)
out : parametre yazılacak (her dalda yazılmadığında uyarı*)
( out ): parametreye yazılabilir (hiçbir yere yazılmadığında uyarı verilir)
in olmadan out : parametre yazılamaz
out olmadan in : parametresi yazılmadan önce okunamaz.
*her dalda: fonksiyon boyunca olası tüm normal akışlarda (bir if ifadesinde her iki dal, bir case ifadesinde tüm dallar,... ), ancak bir istisna atıldığında değil. Bu, tanımsız bir davranışa sahip olmaması için bir return deyimiyle aynı kısıtlamadır.


Ve hepsinden önemlisi, giriş ve çıkış anahtar sözcüklerini tanıtmak, derleme zamanında zaten bazı sorunları bulmamıza yardımcı olabilir. Ve hepimiz hataları mümkün olan en kısa sürede bulmak istemiyor muyuz?

 

Bir const değiştirici var. Sabit bir referansın iletilmesi, açık bir şekilde, herhangi bir çıkış olmadan bir giriş parametresi olduğunu varsayar. İçeri, dışarı, dışarı, kesinlikle ek varlıklar getirmeyeceğiz.

 
stringo :

Bir const değiştirici var. Sabit bir referansın iletilmesi, açık bir şekilde, herhangi bir çıkış olmadan bir giriş parametresinin olduğunu varsayar. İçeri, dışarı, dışarı, kesinlikle ek varlıklar getirmeyeceğiz.

Uyanmayın, uyanmayın. Ancak o zaman iyi bir optimizasyon elde edemeyeceğinizi anlamalısınız. Ve bu örnekte OUT olsaydı, uyarı vermeye gerek kalmazdı. Ancak genel olarak, boşuna - IMHO, üç dakika boyunca iş, ancak ne kadar az hata var. İstemiyorsan kullanma. Sonra her şey her zamanki gibi. Peki ya şimdi. :)


IN olmadan sadece OUT'a sahip olmanızı nasıl sağlarsınız? Saf ÇIKIŞ? Bir işlevi döndürmek gibi bir şeyin her zaman döndürülmesi ne anlama gelir?

 

geliştiriciler

1. Anladığım kadarıyla, büyük çiftlerdeki spread, Mayıs 1993'ten bu yana, şu anda yaklaşık 930 haftalık barla dolduruluyor?

Üstelik derin bir tarihe dayanan barlar gün esasına göre yapılmıştır.

Bu nedenle, Expert Advisor'lar Mayıs 1993'ten itibaren test edilebilir (TF'yi D1'den az kullanmıyorsanız)?

2. 05/09/1993 tarihinde GBPUSD geçmişine daha derinlemesine bakmak mümkün müdür (örneğin, EURUSD için nasıl uygulanır)?
 

Merhaba.

Lütfen açıklayın, "manuel" bir " Grafik etiketi " nesnesi oluştururken, açık/kapalı durumları için belirtilen bmp dosyasının neden ona ayarlanmadığını kim bilebilir?

İşte kod:

ObjectCreate(....);

......

ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 0, "Images\on.bmp");
ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 1, "Images\off.bmp");

Etiket, belirtilen konumda, belirtilen renklerle vb. tamamen doğru bir şekilde oluşturulur, ancak "Images\on.bmp" ve "Images\off.bmp" belirtilmemiştir. GUI MT5'te ise
nesneler listesine tıklayın ve bu dosyaları etiket için manuel olarak ayarlayın - bunlar ayarlanacaktır. Ama neden ObjectSetString bunu yapmıyor?

Sen ne diyorsun?

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
MathX :

Sen ne diyorsun?

Denemek

ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 0, "\\Images\\on.bmp");
ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 1, "\\Images\\off.bmp");


Yardım yakında güncellenecektir.