[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 180

 

Double türündeki sayılarla çalışırken, bir değişkene bir değer atamak gerektiğinde (örneğin, sıfır), farklı yazarların farklı yazımları vardır. Örneğin a=0; ya da öylesine a=0.0; ya da öylesine a=0.0000; Programın doğru çalışması açısından bir fark var mı?

 

if ((OrderSymbol()==Symbol()) && ((OrderMagicNumber()==44) || (OrderMagicNumber()==55)) && (ticket==0)){

OrderDelete(OrderTicket());

int err1=GetLastError();

Yazdır (err1);}

Bu kod parçası son zamanlarda iyi çalışıyor...şimdi bir ERR_OFF_QUOTES hatası veriyor. Bilet numarası elle yazılmış olsa bile hatanın OrderDelete'i döndürdüğünü lütfen unutmayın. Durumu netleştirebilecek var mı? Teşekkür ederim.

 
Elenn :

Double türündeki sayılarla çalışırken, bir değişkene bir değer atamak gerektiğinde (örneğin, sıfır), farklı yazarların farklı yazımları vardır. Örneğin a=0; ya da öylesine a=0.0; ya da öylesine a=0.0000; Programın doğru çalışması açısından bir fark var mı?


Hayır, kural yok. Ancak kişisel olarak, bir nokta kullanarak sabit çift değerler yazmayı tercih ediyorum.

Örneğin:

 if ( a == 1.0 )
{}

// ...

b = 3.0 ;

İlk olarak, metne üstünkörü bir bakış, değer türünün double olduğunu gösterir.

İkincisi, bazı hataları ortadan kaldırır. Karşılaştırmak:

 double a= 2 / 3 ;
double b= 2.0 / 3.0 ;

Print ( "a=" ,a, " b=" ,b);
 

Lütfen yardım edin. Kodu yürütmek istemiyor:

int başlangıç()
{
intpre12;
{
if(PRICE_CLOSE>PRICE_OPEN)
pre12=SiparişGönder(Symbol(),OP_BUY,0.1,Ask,3,"",Bid-100*Puan,Ask+100*Puan, CLR_NONE );
}
dönüş;

}

Yani planlandığı gibi mum yükseliyorsa açarız.

Her şey derlenir. Ama test sırasında hiçbir şey olmuyor. Yani herhangi bir emir vermiyor. Hataya burnunu sok, pliz...

 
NaVolne :

Lütfen yardım edin. Kodu yürütmek istemiyor:

int başlangıç()
{
intpre12;
{
if(PRICE_CLOSE>PRICE_OPEN)
pre12=SiparişGönder(Symbol(),OP_BUY,0.1,Sor,3,"",Bid-100*Puan,Sor+100*Puan,CLR_NONE);
}
dönüş;

}

Yani planlandığı gibi mum yükseliyorsa açarız.

Her şey derlenir. Ama test sırasında hiçbir şey olmuyor. Yani herhangi bir emir vermemektedir. Hataya burnunu sok, pliz...

Hangi mumu belirtmedin? grafikte güncel mi? önceki günlük? önceki hafta? örneğin bir önceki günlük ise... örneğin şöyle görünürdü:

if(iOpen(NULL,1440,1)< iClose (NULL, 1440 ,1)) her şey iOpen/iClose ile ilgili yardımda açıklanmıştır

 
NaVolne :

Lütfen yardım edin. Kodu yürütmek istemiyor:

int başlangıç()
{
intpre12;
{
if(PRICE_CLOSE>PRICE_OPEN)
pre12=SiparişGönder(Symbol(),OP_BUY,0.1,Sor,3,"",Bid-100*Puan,Sor+100*Puan,CLR_NONE);
}
dönüş;

}

Yani planlandığı gibi mum yükseliyorsa açarız.

Her şey derlenir. Ama test sırasında hiçbir şey olmuyor. Yani herhangi bir emir vermiyor. Hataya burnunu sok, pliz...

Mesele şu ki, PRICE_CLOSE ve PRICE_OPEN sabitler, işlevler değil ve ayrıca zaman serisi dizileri değil. Mumların açılış ve kapanış fiyatlarının değerlerini almak için fonksiyonlara ( iOpen ve iClose ) veya zaman serisi dizilerine ( Open ve Close ) başvurmanız gerekir.

Daha fazla bilgi edinmek için öğreticiyi okuyun; örneğin, bu bölüm önceden tanımlanmış değişkenleri (ihtiyacınız olan Aç ve Kapat zaman serisi dizilerini içerir) açıklar.

 
Elenn :

Double türündeki sayılarla çalışırken, bir değişkene bir değer atamak gerektiğinde (örneğin, sıfır), farklı yazarların farklı yazımları vardır. Örneğin a=0; ya da öylesine a=0.0; ya da öylesine a=0.0000; Programın doğru çalışması açısından bir fark var mı?

anladım ki eğer:

 double a = 1 ;

derleyici "1" i int türünde bir değer olarak ele alır ve yayınlar (int'ten hedef türe çifte).

Ve durumda:

 double a = 1.0

veya (fark yok)

 double a = 1.0000

derleyici "1.(xxxx)" değerini double türünde bir değer olarak değerlendirir ve herhangi bir döküm yapılmaz.


Not: Örnek için PapaYozh'a teşekkürler. Yukarıda özetlenen düşünceler ondan hemen sonra geldi.

Ve bir kez daha tür yayınlamadığında derleyici için daha kolay olduğunu anlıyorum? Ya da belki "yayınlanmamış" türlere sahip satırlar ex4'te yazılmıştır? Bu, performansın düştüğü anlamına mı geliyor? Derleyici teorik olarak kodu optimize etmelidir.

Daha deneyimli MQL4 Programcılarının beni düzeltmesine izin verin...

 
Mega detaylı cevaplar için teşekkürler. okudum, anladım.
 
NaVolne :
Mega detaylı cevaplar için teşekkürler. okudum, anladım.
Cevaplarımız değil, ders kitabı okunmalı! :)) Kapaktan kapağa doğal olarak.
 
LexAlex :

Bu kod parçası son zamanlarda iyi çalışıyor...şimdi bir ERR_OFF_QUOTES hatası veriyor. Bilet numarası elle yazılmış olsa bile hatanın OrderDelete'i döndürdüğünü lütfen unutmayın. Durumu netleştirebilecek var mı? Teşekkür ederim.

Donma seviyesinde olabilir. Belki hesapla ilgili bir şey ve komisyoncu, hesaptaki sık işlemler nedeniyle akışı durdurdu.
Neden: