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

 
alexey1979621 :
Herkese selam! Soru. Birinci, ikinci, üçüncü mumun Yüksek ve Alçakları arasındaki mesafe nasıl ölçülür ve her mumun böyle bir mesafesinin en az 10 puan olması gerektiği koşulunu belirler. Şimdiden teşekkürler.

İşte size yardımcı olacak piyasa ortamı değişkenleri https://docs.mql4.com/en/predefined/variables
 
artmedia70 :
Robotların Yükselişi... :)


Aha ha ha. yosuf, seni Cyborg gönderdi...)))))))
 
artmedia70 :

İşte özelliği test etmek için bir EA. İçinde, aslında, işlevin kendisi ve çağrısı. Aramadan önce, maksimum dört satırdan oluşabilen bir mesaj hazırlamanız gerekir. Her satırın uzunluğu, eğer hafızam bana doğru geliyorsa, 64 karakteri geçmemelidir. Bu yüzden bir mesajı birkaç satıra böldüm. Bir mesajın her satırı kendi renginde görüntülenebilir. Kodda her şey açık görünüyor - önce mesaj satırlarını hazırlıyoruz, sonra fonksiyonu çağırıyoruz. Özellikle orada yorum yapmadım - uzun süre tek nefeste yazdım. Şimdi ne için olduğunu unuttum. Sorular varsa - hatırlayacağım, şimdi sadece en gerekli olanı hatırladım.

Peki, türkiye:

Bunun gibi bir şey ... umarım anlarsın

Tabi ki hindi penceresini göstermek yerine arka plan yapıp ana grafikte gösterebilirsiniz ama ben çok tembelim... :)



Artyom, kodunuza baktım hindi genelde bomba :)))))) Aslında, daha geniş bir bakış açısıyla her şey açık, uygulamada birkaç an görmeme rağmen, yapacağımdan biraz farklı, ama bunlar zaten önemsiz.

İlginç olan bu. Sadece Türkiye'de uzmanında ne varsa basılıyor. Ama bunu kendi yararına nasıl kullanacaksın, seçenekler var mı?

 
hoz :


Artyom, kodunuza baktım hindi genelde bomba :)))))) Aslında, daha geniş bir bakış açısıyla her şey açık, uygulamada birkaç an görmeme rağmen, yapacağımdan biraz farklı, ama bunlar zaten önemsiz.

İlginç olan bu. Sadece Türkiye'de uzmanında ne varsa basılıyor. Ama bunu kendi yararına nasıl kullanacaksın, seçenekler var mı?

Bir şekilde soruyu anlamadım... Print() işlevinin yerini alıyor. Gösterge penceresindeki tüm mesajları görüntüler. Bir mesajın her satırı için bir renk belirleyebilirsiniz (örneğin - mesajın öneminin önceliği). Baskıdan daha iyi. İyi olan bu.
 

Aynı işlev. Uzman yalnızca işlevin ne yaptığını göstermek için oradadır. Bu nedenle , Uzman Danışmanınızdan gelen mesajlarınızı görüntülemek için bu işlevi kullanın.

Bu Uzman Danışman, yalnızca kullanım prensibini gösterir.

 
artmedia70 :

Aynı işlev. Uzman yalnızca işlevin ne yaptığını göstermek için oradadır. Bu nedenle , Uzman Danışmanınızdan gelen mesajlarınızı görüntülemek için bu işlevi kullanın.

Bu Uzman Danışman, yalnızca kullanım prensibini gösterir.


Evet olsa da .. Bu bir fonksiyon .. Arabayı sürerken oradaki en önemli şeyi kaçırdım :(
 

Yeni bir kafa ortaya çıktı. İşte gerçekleşmesi için gerekenler:

1. Piyasada belirli sayıda emir toplanıyor, yani. piyasada her zaman piyasa ve bekleyen emirler var

2. Bir noktada, o ana kadar açılan emirlerin sonuncusu TP tarafından kapatıldığında, açılan ve bekleyen tüm emirleri de dahil olmak üzere kapatmamız gerekiyor.

Bunu şöyle yaptım ( start() işlevine koydum):

 for ( int ord= OrdersTotal ()- 1 ; ord>= 0 ; ord--)
   {
       if (! OrderSelect (ord,SELECT_BY_POS)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
        
      g_ticket = OrderTicket();
      g_type = OrderType();
              
       // Блок модификации ордеров       
       if (i_sl != 0 || i_tp != 0 )
      {
         if (OrderStopLoss() == 0 && OrderTakeProfit() == 0 )
         {
            OrdersModifyer(g_ticket);
         }
      }
       // Закрытие всех ордеров, если последний ордер закрыт
       if (GetLastOrderState() != 0 )              
      {
           if (g_type > 1 )
          {
              DeletePendingOrders(g_ticket);
          }
           else
          {
              CloseMarketOrders(g_ticket);
          }
      }
   }

GetLastOrderState() işlevi, son siparişin kapalı olup olmadığını öğrenir:

 //+-------------------------------------------------------------------------------------+
//| Получаем состояние последней позиции (Открыта или закрыта)                          |
//+-------------------------------------------------------------------------------------+
datetime GetLastOrderState()
{
   datetime lastOrderCloseTime = - 1 ,                   // Время закрытия последнего ордера
            lastOrderOpenTime = - 1 ;                     // Время открытия последнего ордера
   
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
  
       if (lastOrderOpenTime < OrderOpenTime())
          lastOrderOpenTime = OrderOpenTime();
   }
   Comment ( "Время открытия последнего открытого ордера = " , lastOrderOpenTime);
   for ( int h=OrdersHistoryTotal()- 1 ; i>= 0 ; i--)
   {
       if (! OrderSelect (h, SELECT_BY_POS, MODE_HISTORY)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
      
       if (OrderOpenPrice() == lastOrderOpenTime)
          lastOrderCloseTime = OrderCloseTime();
   }
   // Comment("Время закрытия последнего открытого ордера = ", lastOrderCloseTime);
   return (lastOrderCloseTime);
}

Peki, o zaman bekleyen ve piyasa emirlerini kapatma işlevleri. Bir şeyin doğru çalışmadığını görüyorum. İşlevim tamam mı?

Fonksiyonun teoride sırayla olduğunu anlıyorum. Ama burada mantık yok. Bu konuda herhangi bir fikriniz var mı? Her halükarda, danışmanın emirlerinin hiçbiri TP tarafından kapatılmadığında bile, bir sinyalle açıldıktan kısa bir süre sonra her şeyin anında kapandığı ortaya çıktı...

 
hoz :

Aha ha ha. yosuf, seni Cyborg gönderdi...)))))))
Her neyse, iyi, duyarlı bir proger. Sanki tüm sorunlar onunmuş gibi, çünkü bu kader şüphesiz ödüllendirecek ya da kâseye tökezleyecek.
 
yosuf :
Her neyse, iyi, duyarlı bir proger. Sanki tüm sorunlar onunmuş gibi, çünkü bu kader şüphesiz ödüllendirecek ya da kâseye tökezleyecek.


Ve hiçbir özellik yoktu ve buna göre soru da vardı. Orada ne cevap vereceğimi asla bilemeyeceğim .... Size cevap vermek için durumu mümkün olduğunca netleştirmeye çalışmanız gerekiyor.
 
hoz :

Yeni bir kafa ortaya çıktı. İşte gerçekleşmesi için gerekenler:

1. Piyasada belirli sayıda emir toplanıyor, yani. piyasada her zaman piyasa ve bekleyen emirler var

2. Bir noktada, o ana kadar açılan emirlerin sonuncusu TP tarafından kapatıldığında, açılan ve bekleyen tüm emirleri de dahil olmak üzere kapatmamız gerekiyor.

Ben şöyle yaptım ( start() fonksiyonuna koydum):

GetLastOrderState() işlevi, son siparişin kapalı olup olmadığını öğrenir:

Peki, o zaman bekleyen ve piyasa emirlerini kapatma işlevleri. Bir şeyin doğru çalışmadığını görüyorum. İşlevim tamam mı?

Fonksiyonun teoride sırayla olduğunu anlıyorum. Ama burada mantık yok. Bu konuda herhangi bir fikriniz var mı? Her halükarda, danışmanın emirlerinin hiçbiri TP tarafından kapatılmadığında bile, bir sinyalle açıldıktan kısa bir süre sonra her şeyin anında kapandığı ortaya çıktı...

Victor, pozisyonun TP tarafından kapatılıp kapatılmadığını kontrol eden Kim'in test edilmiş fonksiyonunu al:

isCloseLastPosByTake - Al ile son pozisyonu kapatmak için bayrağı döndürür. Yalnızca yararlı işlevler bölümünde bulacaksınız.
Ve sonra her şeyi kapatın.