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

 
artmedia70 :

Örneğin, Expert Advisor'ın adına, döviz çiftine ve kurulu olduğu TF'ye göre bir Expert Advisor'a otomatik olarak benzersiz bir büyü atayan bir işlev:

Telefon etmek:



Ve burada ayrıca CRC32 kullanarak bir sihir atayabilirsiniz, böylece kesinlikle benzersizdir. Veya daha önce depolanan veya başka bir terminalden, örneğin İnternet aracılığıyla alınan verilerin bütünlüğünü hızlı bir şekilde kontrol edin. Bu durumda, tüm işlevi daraltın))) Akıllıca kullanın).

int crc_table[ 256 ];
 
/* Run this function previously */
void make_crc_table() 
{
     for ( int i = 0 ; i < 256 ; i++) {
         int c = i;
         for ( int j = 0 ; j < 8 ; j++) {
             if (c & 1 != 0 )
               c = 0xEDB88320 ^ (c >> 1 );
             else 
               c = c >> 1 ;
        }
        crc_table[i] = c;
    }
}
 
bool table_filled = false ;

int crc32( string buf) 
{
     if (!table_filled)
    {
      make_crc_table();
      table_filled = true ;
    }
    
     int len = StringLen (buf);
    
     int c = 0xFFFFFFFF ;
     for ( int i = 0 ; i < len; i++) {
        c = crc_table[(c ^ StringGetChar(buf,i)) & 0xFF ] ^ (c >> 8 );
    }
     return (c ^ 0xFFFFFFFF );
}
 
alsu :

Ve burada ayrıca CRC32 kullanarak bir sihir atayabilirsiniz, böylece kesinlikle benzersizdir. Veya daha önce depolanan veya başka bir terminalden, örneğin İnternet aracılığıyla alınan verilerin bütünlüğünü hızlı bir şekilde kontrol edin. Bu durumda, tüm işlevi daraltın))) Akıllıca kullanın).


Alexey, ilginç ve iyi yazılmış bir işlev için teşekkür ederim. Bir bakacağım. Bir şekilde kendim de benzer bir fikir düşünüyorum ve işte buradasın ..

borilunad :


Victor, ben de seni Dock'ta aradım. Bu yüzden, bu kodları manuel ticaret için kullandığım CodeBase'in göstergelerinde gördüm. Bütün bunların her derde deva olmaktan uzak olduğu ortaya çıktı. Bu yüzden neredeyse tüm göstergeleri attım ve şimdi Uzman Danışmanım kendi göstergesidir ve neredeyse başka hiçbir şeye ihtiyaç yoktur!

Bu arada, Üssü kazarak çok şey öğrendim! Dock'taki her şeyi anlamak için zaten kendin de bir dock olmalısın! Ders kitabında daha fazla ayrıntı var, ancak çok şey eksik!


Boris, aslında göstergeleri kendim kullanmıyorum. mashki olmadığı sürece ve başka amaçlar için string fonksiyonlarına ihtiyaç duyulur. Yukarıda bunun hakkında yazdım. Burada:

saat :

Herhangi bir çarpık kodu okumamak için buradaki gibi https://www.mql5.com/ru/articles/1524

(Orada bir paket söve fark ettim. Ve yazarın bu kodu yazarken ne düşündüğü hiç de net değil)

Lütfen beni bu seçeneğin algoritmasına itin. Böylece, bekleyen bir sipariş, tabiri caizse, bir nesne boyunca, örneğin bir trend çizgisi boyunca uzanır. Ya da bekleyen bir emir hattın gerisindeydi...

Genel olarak nasıl uygulanır? Gerçekten anlamadığım bir şey.

Bir nesne yaratmanız gerektiği gerçeği açıktır. Ancak bir şekilde, fiyat nesnenin "arkasında" ise, o zaman .. bir şey yapın veya fiyat hattaysa, o zaman bekleyen bir emir ..

 

Arkadaşlar söyleyin.

Terminalin yaptığı her şeyi yazan bir program var mı?

Veya sunucudan bağımsız olarak danışmanın günlük yazmasını nasıl sağlayabilirim?

 
polycomp :
Açıklama için teşekkürler! Statiklerin kütüphanelerde kullanılmaması gerektiği görülüyor.


Ve onların dışında da buna değmez. MT4'te Statik değişkenler ASLA yeniden başlatılmaz.
 
herhuman :

danışmanın sunucudan bağımsız olarak günlük yazmasını nasıl sağlayabilirim?

O yapıyor.
 
hoz :


Yeni başlayanlar için, ne istediğinizi açıkça formüle edin. Geometrik yaklaşımlar memnuniyetle karşılanmaktadır.
 
hoz :


Alexey, ilginç ve iyi yazılmış bir işlev için teşekkür ederim. Bir bakacağım. Bir şekilde kendim de benzer bir fikir düşünüyorum ve işte buradasın ..


Boris, aslında göstergeleri kendim kullanmıyorum. mashki olmadığı sürece ve başka amaçlar için string fonksiyonlarına ihtiyaç duyulur. Yukarıda bunun hakkında yazdım. Burada:


Victor, bunu da yapmadı, Üs'te bunlardan çok gördü. Anladığım kadarıyla, çizgilerle fiyat kesişimleri noktalara benzer. Ayrıca, siparişlerinizin ve pozisyonlarınızın parametreleriyle vb. çizgi kesişimlerini de tespit edin. Kazın!
 

Sayın Baylar, Lütfen acemilere bu sorunun cevabını söyleyin

if (((((Teklif>1.2153)&&(Teklif<1.2160) || (Teklif>1.2173)&&(Teklif<1.2180))) || ((Teklif>1.2100)&&(Teklif<1.2107) || (Teklif> 1.2094)&&(Teklif<1.2101)) || (((Teklif>1.2092)&&(Teklif<1.2099) || (Teklif>1.2091)&&(Teklif<1.2098))||(((Teklif>1.2073)&&(Teklif< 1.2080)||(Teklif>1.2005)&&(Teklif<1.2012))))) // fiyat if başlığında listelenen koşullardan biriyle eşleşirse

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // bir sipariş aç .

3000 civarında tekrarlanmayan koşullar verisine sahibim, bu yüzden hepsini tek boyutlu bir diziye koydum.

çift dizi [3000];

if ((Bid==masiv[5]) // fiyat , dizin 5'li dizi öğesinin değerine karşılık geliyorsa

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // bir sipariş aç .

S: Aşağıdaki komutu yazmak için kod nedir

Fiyat, double masiv dizisinin 3000 yinelenmeyen değerinden herhangi birinin değeriyle eşleşirse [3000]

Bir sipariş açın.

En basit seçenek if(.....) başlığına 3000 koşul koymaktır.

Ama belki biraz daha kompakt kod seçenekleri vardır.

Yardım için teşekkürler.


 
solnce600 :

Sayın Baylar, Lütfen acemilere bu sorunun cevabını söyleyin

if (((((Teklif>1.2153)&&(Teklif<1.2160) || (Teklif>1.2173)&&(Teklif<1.2180))) || ((Teklif>1.2100)&&(Teklif<1.2107) || (Teklif> 1.2094)&&(Teklif<1.2101)) || (((Teklif>1.2092)&&(Teklif<1.2099) || (Teklif>1.2091)&&(Teklif<1.2098))||(((Teklif>1.2073)&&(Teklif< 1.2080)||(Teklif>1.2005)&&(Teklif<1.2012))))) // fiyat if başlığında listelenen koşullardan biriyle eşleşirse

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // bir sipariş aç .

3000 civarında tekrarlanmayan koşullar verisine sahibim, bu yüzden hepsini tek boyutlu bir diziye koydum.

çift dizi [3000];

if ((Bid==masiv[5]) // fiyat , dizin 5'li dizi öğesinin değerine karşılık geliyorsa

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // bir sipariş aç .

S: Aşağıdaki komutu yazmak için kod nedir

Fiyat, double masiv dizisinin 3000 yinelenmeyen değerinden herhangi birinin değeriyle eşleşirse [3000]

Bir sipariş açın.

En basit seçenek if(.....) başlığına 3000 koşul koymaktır.

Ama belki biraz daha kompakt kod seçenekleri vardır.

Yardım için teşekkürler.




Gerekirse bir çözüm bulunabilir. Örneğin, tamsayı sıralı bir diziye gidin. İçinde istenen değeri arayın.
 
solnce600 :

Sayın Baylar, Lütfen acemilere bu sorunun cevabını söyleyin

if (((((Teklif>1.2153)&&(Teklif<1.2160) || (Teklif>1.2173)&&(Teklif<1.2180))) || ((Teklif>1.2100)&&(Teklif<1.2107) || (Teklif> 1.2094)&&(Teklif<1.2101)) || (((Teklif>1.2092)&&(Teklif<1.2099) || (Teklif>1.2091)&&(Teklif<1.2098))||(((Teklif>1.2073)&&(Teklif< 1.2080)||(Teklif>1.2005)&&(Teklif<1.2012))))) // fiyat if başlığında listelenen koşullardan biriyle eşleşirse

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // bir sipariş aç .

3000 civarında tekrarlanmayan koşullara sahibim, bu yüzden hepsini tek boyutlu bir diziye koydum.

çift dizi [3000];

if ((Bid==masiv[5]) // fiyat , dizin 5'li dizi öğesinin değerine karşılık geliyorsa

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 ) // bir sipariş aç .

S: Aşağıdaki komutu yazmak için kod nedir

Fiyat, double masiv dizisinin 3000 yinelenmeyen değerinden herhangi birinin değeriyle eşleşirse [3000]

Bir sipariş açın.

En basit seçenek if(.....) başlığına 3000 koşul koymaktır.

Ama belki biraz daha kompakt kod seçenekleri vardır.

Yardım için teşekkürler.



Döngü:

   double massiv[];  
//----------------------------------------------------------------------
   for ( int i= 0 ; i< ArrayRange (massiv, 0 ); i++) {
       if ( MathAbs ( NormalizeDouble (Bid-massiv[i], Digits ))<= 0.5 * Point ) {
         // цена примерно совпадает со значением в massiv[i]
         // ... обрабатываем совпадение
         }
      }
//----------------------------------------------------------------------