Hatalar, hatalar, sorular - sayfa 168

 
Manov :

" başlatılmamış "local_low" değişkeninin olası kullanımına sahipsiniz "

Ne verilirse

Değişken herhangi bir şeyle başlatılırsa uyarı kaybolur. Ancak, kendiniz için görebileceğiniz gibi, bu kod parçasında , local_low değişkeninin başlatılması gereksizdir. Bu nedenle, uyarı hiçbir şekilde hayata müdahale etmez.
 
Renat :

Birçok yazılım projesini pazara sunmuş bir yazılım yöneticisinin bakış açısından yanıtlarımı tekrar okuyun.

Aksi takdirde, "herhangi bir programcı" düzeyinde kalarak, hatanın ne olduğunu anlamayacaksınız.

:) Hiçbir zaman bir yazılım şirketinin başkanı olmayacağım için, sonsuza kadar "herhangi bir programcı" (yani, benim anlayışıma göre amatör bir programcı) düzeyinde kalacağım.

...Ve amatör programcı hatanın mantıklı bir tanımını almadığından, ya kendi kod parçasında hiçbir hata olmadığı ya da hatanın o kadar zor olduğu sonucuna varıyor ki, kimse onu tanımlayamıyor. mantık dili. Bu konuda her iki tarafın da birbirini anladığını varsayabiliriz, mesele halledilmiştir.

 
Yedelkin :
Değişken herhangi bir şeyle başlatılırsa uyarı kaybolur. Ancak, kendiniz için görebileceğiniz gibi, bu kod parçasında, local_low değişkeninin başlatılması gereksizdir. Bu nedenle, uyarı hiçbir şekilde hayata müdahale etmez.
Özel kod - muhtemelen evet, ... ancak derleyici mümkün olduğunca " kusursuz " olmalıdır.
 
Ve monitör aydınlandı ve programcıya şunu söyledi: başlatmayı asla bir koşulun arkasına saklama, tıpkı döngü gövdesinden sonra asla bir döngü değişkeni kullanmama gibi, sıfıra bölmeyi kontrol et, gerekliliğin ötesinde varlıklar üretme, if (a==true) yazmayın ) ...
 
Manov :
... derleyici mümkün olduğunca " kusursuz " olmalıdır.
O yüzden bununla tartışmıyorum. Faydalı uyarı. Bu tür uyarılar ne kadar çok olursa, kendi kodunuzu o kadar iyi anlayacaksınız.
 
Vigor :
... if (a==true) yazmayın ...

Bu arada, ilkbaharda, literatürü okuduktan sonra (a) gibi koşullar eklediğim eğitim uzmanlarım vardı. Böylece Uzman Danışmanlar ancak bu koşulları if (a==true) gibi koşullara değiştirdikten sonra çalışmaya başladılar. Şimdi bu alışkanlıktan kurtulmakta zorlanıyorum.
 
Yedelkin :

Ancak, satır 8'de local_low değişkeninin başlatılmasından hemen sonra, satır 9'da kesinti bool değişkeninin kullanılması nedeniyle, satır 15'teki local_low değişkeninin başlatılması garanti edilir. Bu nedenle, şu anda, "başlatılmamış değişken 'local_low' olası kullanımı" uyarısı, "garantili" anlamına gelmez, yalnızca değişkenin başlatılmadığı bir geçiş dalının olası varlığı anlamına gelir.
Örneğinizde Ac-k=0 ise , for deyimi asla yürütülmeyecek ve local_low'un başlatılmaması garanti edilecektir. Ya da değil?
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Основы языка / Операторы / Оператор цикла for - Документация по MQL5
 

Aynı duraklara sahip bir pozisyonu değiştirmek için bir istek gönderirsek, bir hata alırız. Aynı parametrelerle bekleyen bir siparişi değiştirmek için bir istek gönderirseniz, istek yürütülür. Öyle tasarlandı ve parametrelerin değişiklikler için kontrol edilmesine gerek yok mu?

Örneğin, Uzman Danışmanda bir hata olması veya çalışmasının yanlış mantığı olması durumunda sunucuyu neden gereksiz isteklerle tıkarsınız?

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Valmars :
Örneğinizde Ac-k=0 ise , for deyimi asla yürütülmeyecek ve local_low'un başlatılmaması garanti edilecektir. Ya da değil?

Oldukça doğru. Ac-k<=1 ise, for deyimi asla yürütülmemelidir ve local_low değişkeninin başlatılmaması garanti edilir. Ancak bool değişkeni kesintisi false değeriyle kalacağından (satır 3), o zaman, 13. satırdaki koşul nedeniyle, başlatılmamış local_low değişkeni asla hesaplamalarda kullanılmayacaktır (kullanılmamalıdır) . Özellikle, 15. satırdaki local_low değişkeni ile ifade değerlendirilmemelidir [tabii ki if ifadesi tam olarak yardımda belirtildiği gibi çalışacaksa :) ].

Başka bir deyişle, local_low değişkeninin başlatılmamış olması garanti edilirse, hesaplamalarda kullanılmaması (kullanılmaması) da garanti edilir.

 

boşluk grafiği()
{
if(ObjectFind(0,"H")<0) ObjectCreate(0,"H", OBJ_HLINE ,0,0,h,0);
if(ObjectFind(0,"L")<0) ObjectCreate(0,"L",OBJ_HLINE,0,0,l,0);
ObjectSetDouble(0,"H",OBJPROP_PRICE,h);
ObjectSetDouble(0,"L",OBJPROP_PRICE,l);
string bal = DoubleToString(AccountInfoDouble(ACCOUNT_BALANCE),2);
string equ = DoubleToString(AccountInfoDouble(ACCOUNT_EQUITY),2);
yayılım dizisi = DoubleToString(((Teklif Sor)/_Point),0);
string boşluk = " ";
dizi bilgisi= bal+boşluk+equ+boşluk+spread;
if (ObjectFind(0,"info")<0) ObjectCreate(0,"info",OBJ_LABEL,0,0,0,0);
ObjectSetInteger(0,"bilgi",OBJPROP_XDISTANCE,0);
ObjectSetInteger(0,"bilgi",OBJPROP_YDISTANCE,15);
ObjectSetString(0,"bilgi",OBJPROP_TEXT,bilgi);
ObjectSetInteger(0,"bilgi",OBJPROP_FONTSIZE,36);
ObjectSetInteger(0,"bilgi",OBJPROP_COLOR,Bordo);
dönüş;
}

İşte bir kod parçası. İşlev, her bir kene üzerinde bakiye, eşitlik ve spread değerlerini görüntüler. Bu sadece bir nedenden dolayı, bilgi önceki tik için değil, önceki tik için görüntüleniyor... Nedenini anlamama yardım et? MT 4'te benzer bir kod, yeni bir tik gelmesi ile değerleri değiştirir ve MT5'te yeni bir tik gelmesi ile önceki tik için bilgi görüntülenir.