Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 400

 
khorosh :


Teşekkürler, Yuri.
Kodunuzu kullanmaya çalışacağım, ancak daha sonra, çünkü demonte edilmesi ve çalışma prensibini anlaması gerekiyor.
Yukarıdaki aşama zor değil, o zaman Bay "N" nin her bir kullanıcı işlevini ayrıştırmam gerekecek ve bu sırasıyla en yüksek karmaşıklık derecesine sahip, 3 ila 10 saat arasında çok zaman alacak (çünkü onlar de ki: - Bir gün. -).

Kodumu sonlandıracağım, "yaşam alanım" var ve içinde çalışılacak bir şey yok.

Tekrar teşekkürler, Yuri.




borilunad :
1-Hiçbir şey yapamaz! 2 - Sadece yazılmak istiyor! 3 - Açıklamak gereksiz! 4 - Mantık tamamen yok! 5 - İdrak edilemez kaybeden!

1 - Nispeten - evet.
2 - Durumu çözmeye yardımcı oldu.
3 - Hiç de işe yaramaz.
4 - Size cevap verdiğim için - evet.
5 - Yarım yılı beş dörtlü, diğer tüm dereceler - beş ile bitirdi.

Sen de benim gibi forum kurallarını çiğnedin.
Artık senin hesabın ihtara, benim hesabım banlanmaya lâyıktır.

Lütfen irrasyonel eylemler için beni bağışlayın (eleştirilere yanıt).
 
Link_x :

Teşekkürler, Yuri.
Kodunuzu kullanmaya çalışacağım, ancak daha sonra, çünkü demonte edilmesi ve çalışma prensibini anlaması gerekiyor.
Yukarıdaki aşama zor değil, o zaman Bay "N" nin her bir kullanıcı işlevini ayrıştırmam gerekecek ve bu sırasıyla en yüksek karmaşıklık derecesine sahip, 3 ila 10 saat arasında çok zaman alacak (çünkü onlar de ki: - Bir gün. -).

Kodumu sonlandıracağım, "yaşam alanım" var ve içinde çalışılacak bir şey yok.

Tekrar teşekkürler, Yuri.






Başlangıç olarak, her bir fonksiyonun kodunu araştırmak gerekli değildir. Fonksiyonda kullanılan parametreleri, amacını ve kullanımını anlamak yeterlidir. Aslında her işlevin içini kendim araştırmadım. Ve onu sadece bir şeyde değiştirmesi gerektiğinde araştırdı. Yani bir cep telefonu, bilgisayar, TV'yi hayatta başarılı bir şekilde kullanıyorsunuz, devrelerini ve çalışmalarını ayrıntılı olarak bilmiyorsanız, ancak bu onları kendi amaçlarınız için kullanmanıza engel değil. Yani burada asıl mesele bu fonksiyonları kullanabilmek. Tüm işlevler ve amaçları burada açıklanmıştır. Bunların nasıl kullanılacağı her fonksiyon için verilen testlerden anlaşılabilir. Bu yolu izlerseniz bir programcı olarak gelişiminiz daha hızlı olacaktır. Ve kendi bisikletinizi icat etmek uzun ve verimsiz bir yolculuktur. Bir uzman inşa etmek - sizin versiyonunuza göre - inşaat malzemelerinin yokluğunda bir ev inşa etmeye benzer. Her şey kendiniz icat edilmelidir. Yapı taşları (fonksiyonlar) olduğunda bir ev inşa etmek çok daha hızlıdır.
 

Tünaydın!

Lütfen söyleyin, AccountEquity() işlevi terminale mi yoksa komisyoncuya mı bir istekte bulunuyor?

Soru, her bir işarette bu işlevin çağrılmasının aracıyı rahatsız edebileceği (özellikle aynı anda birkaç çizelgede Uzman Danışmanı çalıştırırken) ve buna bağlı olarak hesabı bloke edebileceği varsayımından kaynaklanmaktadır.

 
yan720 :

Tünaydın!

Lütfen söyleyin, AccountEquity() işlevi terminale mi yoksa komisyoncuya mı bir istekte bulunuyor?

Soru, her bir işarette bu işlevin çağrılmasının aracıyı rahatsız edebileceği (özellikle aynı anda birkaç çizelgede Uzman Danışmanı çalıştırırken) ve buna bağlı olarak hesabı engelleyebileceği varsayımından kaynaklanmaktadır.


Evet, elbette komisyoncuya)))

Terminal umursamıyor....Size bilinen son verileri verir...

 
vadynik :
Magic işlevinde bir soru aktarmanın gerekli olup olmadığı?

Sihrin ne için olduğunu bilirseniz bu anlaşılabilir. Ve uzmanın kendi emirlerini başka bir uzmanın emirlerinden veya manuel olarak açılan emirlerden ayırt edebilmesi için gereklidir. Ayarlanmış birkaç satın alma-durdurma emriniz varsa ve bunların arasında farklı sihir veya manuel emirler (sihirsiz) varsa, o zaman sihir, işlev için gereklidir. Ve genel olarak, işlevi evrenselleştirmek için sihri işlev için bir parametre olarak ayarlamak daha iyidir. Ve varsayılan olarak, örneğin -1'e eşit yapın.

 double BuystopPrice( int Magic = - 1 )
{
double Price= 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) 
     {
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
        {
           if ( OrderMagicNumber ()==Magic && OrderType ()== OP_BUYSTOP )
          {
           Price = OrderOpenPrice ();
           break ;
          }
        }
     }
     return (Price);
}

Genel olarak, fonksiyonunuzun kodu for döngüsüne yalnızca ilk buy-stop emrini vermenin fiyatını belirlediğinden, prensipte döngünün kendisine ihtiyaç duyulmaz.

 
khorosh :
Başlangıç olarak, her bir fonksiyonun kodunu araştırmak gerekli değildir. Fonksiyonda kullanılan parametreler, amacı ve kullanımı ile ilgilenmek yeterlidir. Aslında her işlevin içini kendim araştırmadım. Ve onu sadece bir şeyde değiştirmesi gerektiğinde araştırdı. Yani bir cep telefonu, bilgisayar, TV'yi hayatta başarılı bir şekilde kullanıyorsunuz, devrelerini ve çalışmalarını ayrıntılı olarak bilmiyorsanız, ancak bu onları kendi amaçlarınız için kullanmanıza engel değil. Yani burada asıl mesele bu fonksiyonları kullanabilmek. Tüm işlevler ve amaçları burada açıklanmıştır. Bunların nasıl kullanılacağı her fonksiyon için verilen testlerden anlaşılabilir. Bu yolu izlerseniz bir programcı olarak gelişiminiz daha hızlı olacaktır. Ve kendi bisikletinizi icat etmek uzun ve verimsiz bir yolculuktur. Bir uzman inşa etmek - sizin versiyonunuza göre - inşaat malzemelerinin yokluğunda bir ev inşa etmeye benzer. Her şey kendiniz icat edilmelidir. Yapı taşları (fonksiyonlar) olduğunda bir ev inşa etmek çok daha hızlıdır.


Gerektiğinde nasıl anlatacağını ve ikna edeceğini bilen bilge bir insansın. :)
Bununla, tekrar teşekkür ederim.

Bu durumda, ökaryotik hücrelerin organellerinden bir evin yapımını bırakıyorum ve yapımı için sıradan yapı malzemeleri kullanıyorum.
 

Lütfen bu iki işlevdeki hatalara bakın.

İlkinin özü: Eğer fiyat belirli sayıda puanı (TP-puan sayısı) doğru yönde geçerse, emirler tablosunu (martin tarafından açılan) kapattıktan sonra düşüşten çıkmak için gereken lotu hesaplamalıdır.

İkincinin özü: en eskisinden başlayarak ızgara sıralarının yarısını kapatmalıdır.

 double FindRightLot ( int otype) // функция поиска лота, необходимого для выхода из просадки после 
                               //закрытия сетки ордеров
{
   double Lot= 0 ; double TotalLot= 0 ;
   for ( int i = OrdersTotal ()- 1 ; i> 0 ; i--)
  {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
    {
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic && OrderType () == otype)
       {
         if (otype == OP_BUY )
         {
           Lot = NormalizeDouble (( OrderOpenPrice ()- Bid )* OrderLots ()/TP, 2 ); 
           if (Lot> 0 )
           {
              TotalLot= NormalizeDouble (TotalLot+Lot, 2 );
           }
         }
           
       
         else if (otype == OP_SELL )
         {
           Lot = NormalizeDouble (( Ask - OrderOpenPrice ())* OrderLots ()/TP, 2 );
           if (Lot> 0 )
           {
            TotalLot= NormalizeDouble (TotalLot+Lot, 2 );
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }
//+------------------------------------------------------------------+

void CloseHalfOrders ( int otype) // ф-ция закрытия половины ордеров сетки
{
   int count = 0 ;
   for ( int i = 0 ; i<= OrdersTotal (); i++)
  {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
    {
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic && OrderType () == otype)
       {
         if (otype == OP_BUY )
         { 
           if (count<CountTrades( OP_BUY )/ 2 && CountTrades( OP_BUY )> 3 )
           
             OrderClose ( OrderTicket (), OrderLots (), Bid , 0 ,Black);
             count++;
           
         }
       
       
         else if (otype == OP_SELL )
         {
           if (count<CountTrades( OP_SELL )/ 2 && CountTrades( OP_SELL )> 3 )
           
           OrderClose ( OrderTicket (), OrderLots (), Ask , 0 ,Black);
           count++;
           
         }
       }
     }
   }
   
 }
 
Beyler, bunu yapamazsınız... MQL5'te haklısınız, orada sadece POZİSYONLAR tam olarak açılıyor....
 
yan720 :


Lütfen söyleyin, AccountEquity() işlevi terminale mi yoksa komisyoncuya mı bir istekte bulunuyor?

terminale
 
vadynik :


Muhtemelen soruyu tam olarak sormadım, yani fonksiyon global değişkende ayarlanan sihri görecek mi?

veya bir işleve geçirilmelidir, ancak küresel olduğu için gerekli olmadığından şüpheleniyorum

Global bir değişkende ise, evet, görecektir. Ancak fonksiyon evrensel olmalı ve birden fazla büyü ile çalışmalıdır ve bunun için onu bir fonksiyon parametresi olarak geçmek daha iyidir.