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

 
Vinin :

Ancak göstergenin başlığını da düzenlemeniz gerekir. Böylece tüm tamponlar bir değer depolayabilir

Bir de tarih hesabı yapmak güzel olurdu ama bu tabii ki zevk meselesi. Ve nesnelerle çalışmak daha doğrudur. Her tikte aynı ada sahip nesneler oluşturulur (veya bir hata oluşturur).

kapağı düzeltti.

arabellek ile:

     UP_1Buffer[ 0 ] = uitog1v;
     UP_2Buffer[ 0 ] = uitog2v;
     UP_3Buffer[ 0 ] = uitog3v;
     DOWN_1Buffer[ 0 ] = ditog1v;
     DOWN_2Buffer[ 0 ] = ditog2v;
     DOWN_3Buffer[ 0 ] = ditog3v;

tahmin etti.

Yardımın için çok teşekkür ederim.


Önerilerinize gelince, onları yapmaktan çekinmem. ama ne yazık ki onları kendim yapmayacağım.

 
artmedia70 :

Burada yazdıklarınızı kelimelerle açıklamaya çalışın:

Şahsen benim için, ilk bakışta fikriniz bir bulmaca gibi çıktı: Birim bire eşit değilse, siparişi kapatın...

Sonrasını izlemedim...

PS ve denemeyin, bir döngüde normal bir Expert Advisor yazmanın mümkün olduğunu düşünmeyin bile...

Fikir şu:

Piyasaya giriş noktası: Açık pozisyonlar şöyle dursun, bekleyen herhangi bir şey yoksa herhangi bir zamanda.

Robot, mevcut fiyattan puan olarak aynı mesafede 2 bekleyen pozu, SS BS'yi açar (bu, kullanıcı değişkeni PriceDistance'tır).

Aynı TP, SL, TS'ye sahip yerleşimciler (mevcut fiyatın ayna görüntüsünde olduğu gibi.

Ve her ikisi de aynı anda (perspektifte "TimeStop" değişkeni).

Her şey....

Uygulamada: önceki pozisyonlar kapalıdır (her ikisi de zamanın sona ermesiyle veya SL veya TP hakkında - farketmez), terminal ücretsizdir, bundan hemen sonra aynı parametreler aynı parametrelerle açılır, ancak başlar mevcut fiyattan, yeni bir aralıkta. Sonraki, döngü.

Fikir ilkel, %100 boş ama ben bu yönde ilerlemeyi ve belirli zaman dilimlerinde belirli değerlerdeki Hacimler gibi diğer sinyallere bağlamayı planlıyorum....

Bu nedenle programa umutsuz bir şekilde ihtiyaç duyulmaktadır....

O yüzden yazmaya koyuldum...

 
İyi akşamlar! Burada her tik için mevcut karı hesaplamak için en basit yapıyı yazdım. İşe yaramıyor! 10 dakika izledim, gözümle kodu yedim. Herhangi bir hata görmüyorum. İşte kod
 //----
         double Profit;
for ( i= OrdersTotal ();i> 0 ;i--){ OrderSelect (i- 1 ,SELECT_BY_POS );

if ( OrderMagicNumber ( )== 2000 && OrderSymbol ()== Symbol ()&& OrderType ( ) ==OP_SELL ||
      
 OrderMagicNumber ( )== 1000 && OrderSymbol ()== Symbol ()&& OrderType ( ) ==OP_BUY){
 
  
 Profit=Profit+ OrderProfit ( ) ; Alert ( "i " , i , " Profit " , Profit);}}
 
 
//----
Sihirli sayı doğru, dört kez kontrol edildi. Parantezler, bakmayı tahmin ettiğim her şey, her şey doğru gibi görünüyor. Belki de sipariş türünü yanlış yazıyorum/karşılaştırıyorum? yardıma baktım. Kısacası lütfen yardım edin! Sensiz hiç birşey!! Ne olabileceğini açıkla?
 
Ve bilirsiniz, bireysel olarak, her üç koşul da işe yarar!!
 double Profit;
for ( i= OrdersTotal ();i> 0 ;i--){ OrderSelect (i- 1 ,SELECT_BY_POS );

if ( OrderType ( ) ==OP_SELL ){ Alert ( "i " , i , " OP_SELL " , Profit);}

if ( OrderSymbol ()== Symbol ()){ Alert ( "i " , i , " Symbol() " , Profit , Symbol (), OrderSymbol ());}

if ( OrderMagicNumber ( )== 2000   ) { Alert ( "i " , i , " OrderMagicNumber( ) " , Profit , OrderMagicNumber ( ));}



if ( OrderMagicNumber ( )== 2000 && OrderSymbol ()== Symbol ()&& OrderType ( ) ==OP_SELL ||
      
 OrderMagicNumber ( )== 1000 && OrderSymbol ()== Symbol ()&& OrderType ( ) ==OP_BUY){
 
  
 Profit=Profit+ OrderProfit ( ) ; Alert ( "i " , i , " Profit " , Profit);}}
Tam bir şok ve kafa karışıklığı içindeyim!
 
dkfl.zrjdktdbx :
İyi akşamlar! Burada her tik için mevcut karı hesaplamak için en basit yapıyı yazdım. İşe yaramıyor! 10 dakika izledim, gözümle kodu yedim. Herhangi bir hata görmüyorum. İşte kod Magic numarası doğru, dört kez kontrol ettim. Parantezler, bakmayı tahmin ettiğim her şey, her şey doğru gibi görünüyor. Belki de sipariş türünü yanlış yazıyorum/karşılaştırıyorum? yardıma baktım. Kısacası lütfen yardım edin! Sensiz hiç birşey!! Ne olabileceğini açıkla?


Birkaç parantez eksik

 double Profit= 0 ;
for ( i= OrdersTotal ();i> 0 ;i--){ OrderSelect (i- 1 ,SELECT_BY_POS );

if ( ( OrderMagicNumber ( )== 2000 && OrderSymbol ()== Symbol ()&& OrderType ( ) ==OP_SELL ) ||
      
( OrderMagicNumber ( )== 1000 && OrderSymbol ()== Symbol ()&& OrderType ( ) ==OP_BUY ) ){
 
  
 Profit=Profit+ OrderProfit ( ) ; Alert ( "i " , i , " Profit " , Profit);}}
 

Öyle görünüyor. Basit tutmak daha iyi olsa da

 double Profit= 0 ;
for ( i= OrdersTotal ();i> 0 ;i--){ 
   OrderSelect (i- 1 ,SELECT_BY_POS );
   if ( OrderSymbol ()== Symbol ()) {
       if ( OrderMagicNumber ( )== 2000 && OrderType ( ) ==OP_SELL )  Profit+= OrderProfit ( );
       if ( OrderMagicNumber ( )== 1000 && OrderType ( ) ==OP_BUY  )  Profit+= OrderProfit ( );
   }
   Alert ( "i " , i , " Profit " , Profit);
}
 

Aşağıdaki soru ortaya çıktı - MT4'te: (2/3*9 == 2*9/3) ?

         Comment (
             "\n" ,
             "\n" , "2/3*9        = " , 2 / 3 * 9 ,
             "\n" , "2*9/3        = " , 2 * 9 / 3 ,
             "\n" ,
         "\n" );


Teşekkür ederim!

 
chief2000 :

Aşağıdaki soru ortaya çıktı - MT4'te: (2/3*9 == 2*9/3) ?


Teşekkür ederim!


Sorun ne?

Bir hesap makinesi ile kontrol edin ve öğreneceksiniz.

İfadelerin değerlendirildiği sıra için belgelere bakın.

En azından ders kitabını okumalısın...

"Programdaki ifadelerin değerlendirme sırasının matematikteki benzer hesaplamaların sırasına benzer olduğunu görmek kolaydır, ancak nihai sonucu önemli ölçüde etkileyen ara ifadelerin değer türlerinin hesaplanmasında farklılık gösterir. Özellikle (matematikte benimsenen kuralların aksine), sıralamanın hiç de küçük bir önemi yoktur Bunu göstermek için küçük bir örnek düşünün: Problem 6. A/B*C ve A*C/ ifadelerinin değerlerini hesaplayın A, B ve C tam sayıları için B.


Sezgisel olarak, her iki durumda da hesaplamaların sonucunun aynı olması beklenir. Ancak, bu ifade yalnızca gerçek sayılar için geçerlidir. Tamsayı türündeki işlenenlerden oluşan ifadelerin değerleri değerlendirilirken ara sonuç çok önemlidir. Bu durumda, işlenenlerin sırası temel öneme sahiptir:

 int A = 3 ; // Значение целого типа
int B = 5 ; // Значение целого типа
int C = 6 ; // Значение целого типа
int Res_1 = A/B*C; // Результат 0 (ноль)
int Res_2 = A*C/B; // Результат 3 (три)

A/B*C ifadesini hesaplama sürecini izleyelim:

1. Önce (soldan sağa) A/B ifadesinin değeri değerlendirilecektir. Yukarıdaki kurallara göre (3/5) ifadesinin değeri 0 (sıfır) tamsayı değeri olacaktır.

2. 0 * C ifadesinin hesaplanması (sıfırı C ile çarpın). Sonuç, 0 (sıfır) tamsayı değeridir.

3. Genel sonuç (Res_1 değişkeninin değeri), 0 (sıfır) tamsayı değeridir.

Şimdi A * C / B ifadesi hesaplandığında olayların nasıl gelişeceğini görelim.

1. A*C'yi hesaplayın. Bu ifadenin değeri 18 (3*6=18) tamsayısı olacaktır.

2. 18/B ifadesinin hesaplanması. Cevap açıktır: (18/5) kesirli kısım atıldıktan sonra 3(üç) tamsayısı elde edilecektir.

3. Genel sonuç (Res_2 değişkeninin değeri), 3 (üç) tamsayı değeridir.

Bu örnekte, bir tamsayı türündeki değişkenlerin değerlerinin hesaplandığı programın küçük bir parçası ele alınmaktadır. Bu değişkenler sabitlerle değiştirilirse, ancak aynı değerler kullanılırsa, nihai sonuç değişmez. Tamsayı kullanan ifadeleri değerlendirirken program satırlarının içeriğine çok dikkat etmelisiniz. Aksi takdirde programda sonradan (özellikle büyük programlarda) tespit edilmesi çok zor olan bir hata meydana gelebilir. Yalnızca reel sayıları içeren hesaplamalarda bu sorun oluşmaz. Ancak karmaşık bir ifadede farklı türlerde işlenenler kullanılıyorsa, nihai sonuç tamamen tamsayıların bölünmesinin gerçekleştiği rastgele oluşturulmuş bir parçaya bağlı olabilir.

Operatörler bölümünde, operatörlerin kavramı ve genel özellikleri ele alınırken, Operatörler bölümünde her operatörün kendi özellikleri ortaya çıkarılmıştır.

 
FileFlush'ın bir dosyayı kaydetmek gibi olduğunu mu söylüyorsunuz?
 
Roman. :


Sorun ne?

Bir hesap makinesi ile kontrol edin ve öğreneceksiniz.

Checked - ve Casio ve hatta Microsoft hesap makinesi bile 2/3*9=6 olduğunu söylüyor.


 
chief2000 :

Checked - ve Casio ve hatta Microsoft hesap makinesi bile 2/3*9=6 olduğunu söylüyor.



İyi. Sorun nedir?
Neden: