Açık pozisyonları gruplara ayırma - sayfa 8

 
Sergey Voytsekhovsky :

Lütfen söyleyin https://www.mql5.com/ru/articles/567 yazısında böyle bir kod var ve bahsi geçiyor.

Ama standart pakette bulamadım. Kötü arandı veya makale güncel değil ???

Hayır, sadece bir hata yaptım.

Oradan, buradan kod parçalarını "çekiyorsunuz" .. ve tahmin etmemiz gerekiyor.

Listenin sonuna öğe eklemek için gösterdiğiniz kod, standart kitaplıktan bir listenin sonuna öğe eklemek için kullanılan koda çok benzer.

Ve bir yerden bir şey çıkardığın ortaya çıktı ...

 
Sergey Voytsekhovsky :

Fikir açık, neden kanıtlanmış hazır algoritmaların kullanılmadığı açık değil, ancak "üç döngü" hakkında - çok anlaşılır, teşekkürler. Yüksek kaliteli basit çözümler elde ettiğinizde, neden kendim tahmin etmediğimi merak ediyorum, yüzeyde öyle. Teşekkür ederim.

Orada da çok fazla hata var ve başkalarının kodlarında sorun aramam tamamen imkansız. Üstelik aniden bir hata bulursanız, kendiniz düzeltin ve rapor etseniz bile mesajın görülüp düzeltileceği bir gerçek değil. Ve bir sonraki güncelleme ile her şey en baştan başlayacak.
 
Alexey Viktorov :
Ayrıca çok fazla hata var ve başkalarının kodlarında sorun aramam kesinlikle imkansız. Üstelik aniden bir hata bulursanız, kendiniz düzeltin ve rapor etseniz bile mesajın görülüp düzeltileceği bir gerçek değil. Ve bir sonraki güncelleme ile her şey en baştan başlayacak.

SB'de birçok hata olduğundan emin misiniz? Yoksa bir yemek kitabınız olmadığı için mi kedileri sevmiyorsunuz?

 
Artyom Trishkin :

Hayır, sadece bir hata yaptım.

Oradan, buradan kod parçalarını "çekiyorsunuz" .. ve tahmin etmemiz gerekiyor.

Listenin sonuna öğe eklemek için gösterdiğiniz kod, standart kitaplıktan bir listenin sonuna öğe eklemek için kullanılan koda çok benzer.

Ve bir yerden bir şey çıkardığın ortaya çıktı ...

Listenin sonuna eleman ekleme kodu standart kitaplıktan alınmıştır, haklısınız. Ve makaledeki kodu bulamadıktan sonra "çekmeye" çalıştım. :-))

 
Artyom Trishkin :

SB'de birçok hata olduğundan emin misiniz? Yoksa bir yemek kitabınız olmadığı için mi kedileri sevmiyorsunuz?

Artyom'a söyle , bir pozisyonun kısmen kapanmasıyla ilgili sorunu hatırlıyor musun? Yöntemin bu davranışının nedenini bulmak yerine daha sonra başka bir yöntem eklediklerini hatırlıyor musunuz?

Deviation=ULONG_MAX'ın tüm yöntemin başarısız olmasına nasıl neden olduğunu bilmiyorum, ancak bunu deviasyon=1000 olarak değiştirdim ve her şey yolunda gitti. "Hata hataları ..." Konusunda bunun hakkında yazdım, ancak konu o kadar hızlı büyüyor ki bu mesaj uçuruma battı ve fark edilmedi. Sonuç olarak, başka bir yöntem ortaya çıktı, ancak gerekli mi ??? Ve şimdi başka hiçbir yerde hata olmadığından nasıl emin olabilirsiniz ??? Mesajın fark edileceğinden nasıl emin olunur?

 
Sergey Voytsekhovsky :

Listenin sonuna eleman ekleme kodu standart kitaplıktan alınmıştır, haklısınız. Ve makaledeki kodu bulamadıktan sonra "çekmeye" çalıştım. :-))

Nesnelerle temsil edilen verilerinizi depolamak için standart kitaplığı kullanırsanız, veriler bir yapı değil, standart kitaplığın CObject'ine dayalı bir nesne olmalıdır ve ardından standart kitaplıktan nesnelere dinamik işaretçi dizileri kullanabilirsiniz. onları saklayın. Bir parça çıkaramayacaksın.

Документация по MQL5: Стандартная библиотека / Базовый класс CObject
Документация по MQL5: Стандартная библиотека / Базовый класс CObject
  • www.mql5.com
Класс CObject обеспечивает всем своим потомкам возможность быть элементом связанного списка. Кроме того определяется ряд виртуальных методов для дальнейшей реализации в классах-потомках.
 
Alexey Viktorov :

Artyom'a söyle , bir pozisyonun kısmen kapanmasıyla ilgili sorunu hatırlıyor musun? Yöntemin bu davranışının nedenini bulmak yerine daha sonra başka bir yöntem eklediklerini hatırlıyor musunuz?

Deviation=ULONG_MAX'ın tüm yöntemin başarısız olmasına nasıl neden olduğunu bilmiyorum, ancak bunu deviasyon=1000 olarak değiştirdim ve her şey yolunda gitti. "Hata hataları ..." Konusunda bunun hakkında yazdım, ancak konu o kadar hızlı büyüyor ki bu mesaj uçuruma battı ve fark edilmedi. Sonuç olarak, başka bir yöntem ortaya çıktı, ancak gerekli mi ??? Ve şimdi başka hiçbir yerde hata olmadığından nasıl emin olabilirsiniz ??? Mesajın fark edileceğinden nasıl emin olunur?

Hayır, kısmi kapanma sorununu hatırlamıyorum. Ve işi etkileyen sapmayı bilmiyorum. Ve maksimum sapmanın, ULONG_MAX noktalarının boyutunun (sapmanın yokluğuna eşdeğerdir) kısmi kapanmayı nasıl etkileyebileceğini hayal bile edemiyorum. Ben de yeni yöntemi duymadım. Yöntem nedir?

Ve mesajın kaybolmaması için - bulun, cebinize kopyalayın ve muhtemelen " MQL != C ++ ve == " olması gerektiği tartışmalarda bir yerde kaybolduğunu not ederek yeniden yayınlayın.

 
Artyom Trishkin :

Hayır, kısmi kapanma sorununu hatırlamıyorum. Ve işi etkileyen sapmayı bilmiyorum. Ve maksimum sapmanın, ULONG_MAX noktalarının boyutunun (sapmanın yokluğuna eşdeğerdir) kısmi kapanmayı nasıl etkileyebileceğini hayal bile edemiyorum. Ben de yeni yöntemi duymadım. Yöntem nedir?

Ve mesajın kaybolmaması için - bulun, cebinize kopyalayın ve muhtemelen " MQL != C ++ ve == " olması gerektiği tartışmalarda bir yerde kaybolduğunu not ederek yeniden yayınlayın.

, bir pozisyonun kısmen kapanmasıyla ilgili sorunu hatırlıyor musun? Yöntemin bu davranışının nedenini bulmak yerine daha sonra başka bir yöntem eklediklerini hatırlıyor musunuz?

Deviation=ULONG_MAX tüm yöntemin başarısız olmasına nasıl neden olduğunu bilmiyorum , ancak bunu deviasyon=1000 olarak değiştirdim ve her şey yolunda gitti. "Hata hataları ..." Konusunda bunun hakkında yazdım, ancak konu o kadar hızlı büyüyor ki bu mesaj uçuruma battı ve fark edilmedi. Sonuç olarak, başka bir yöntem ortaya çıktı, ancak gerekli mi ??? Ve şimdi başka hiçbir yerde hata olmadığından nasıl emin olabilirsiniz ??? Mesajın fark edileceğinden nasıl emin olunur?


 
Artyom Trishkin :

Hayır, kısmi kapanma sorununu hatırlamıyorum. Ve işi etkileyen sapmayı bilmiyorum. Ve maksimum sapmanın, ULONG_MAX noktalarının boyutunun (sapmanın yokluğuna eşdeğerdir) kısmi kapanmayı nasıl etkileyebileceğini hayal bile edemiyorum. Ben de yeni yöntemi duymadım. Yöntem nedir?

Ve mesajın kaybolmaması için - bulun, cebinize kopyalayın ve muhtemelen " MQL != C ++ ve == " olması gerektiği tartışmalarda bir yerde kaybolduğunu not ederek yeniden yayınlayın.

Böylece, diğer mesajları geri taşımayı mı teklif ediyorsunuz? Onları kimse hatırlamasın mı? Bu doğru değil.

Bence her sorunun ayrı bir konu olacağı forumda ayrı bir bölüm belirlemek daha doğru olur. Konu sayısı, bir konudaki gönderi sayısından çok daha azdır. Bu nedenle, önemli sayıda konu olmasına rağmen, bireysel sorular ve hata mesajları artık geri itildiği kadar geriye itilmeyecektir.

 
Alexey Viktorov :

"Pozisyonun gerçekten yeni olduğunu" belirlemek için pozisyonları numaralandırmayı reddedin. Başka bir yol bul. Örneğin OnTradeTransaction'da . Ve diziyi yeniden doldurmak yerine ArrayRemove işlevini kullanın.

Eğer seni doğru anladıysam, o zaman doğru yol budur. Daha deneyimli bir yoldaş olarak, söyle bana pliz, yeni doğan pozisyonları yakalamak için böyle bir filtre işe yarayacak ??? Ya da belki daha iyi bir seçenek var mı?

 void OnTradeTransaction ( const MqlTradeTransaction & trans,
                         const MqlTradeRequest & request,
                         const MqlTradeResult & result)
 {
     if (trans.type == TRADE_TRANSACTION_DEAL_ADD )
      {
         if (trans.type != TRADE_TRANSACTION_ORDER_DELETE )
            {
             if ( HistoryDealGetInteger (trans.deal, DEAL_ENTRY ) == DEAL_ENTRY_IN ) // открылась позиция
               {