Hatalar, hatalar, sorular - sayfa 2452
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Ve öyle ki diziler a = b kurallarına göre değil, ArrayCopy ( a, b ) kurallarına göre kopyalanır.
Kendin mi buldun yoksa bir yerde mi yazıyor?
Dinamik dizili yapılar için örtük bir atama operatörünün çalışmasından bahsettiğimizi hatırlatmama izin verin.
Kendin mi buldun yoksa bir yerde mi yazıyor?
Dinamik dizili yapılar için örtük bir atama operatörünün çalışmasından bahsettiğimizi hatırlatmama izin verin.
Bu benim fikrim değil, geliştiriciler
Neden hata? Yapıya sarıldı ve hata kayboldu mu? Ve neden? Temelde ne değişti? cevaplarım yukarıdaSoru yalnızca eylem ve olaylar dizisinin organizasyonundadır.
Sıralamanın garanti edilmediği söylenen kılavuzdan kendiniz alıntı yaptınız. Bu yüzden riskli.
Vladimir'in tavsiyesi üzerine kodu yeniden yazmaya başladım, ancak kapatmanın bir onay işaretinden daha uzun sürdüğü durumda tökezledim - yine çift sayım (sayımdaki filtre düğümünün çok ağır olduğu ortaya çıktı). Şimdiye kadar, optimizasyon hızıyla bir uzlaşma uğruna tamamen kapanana kadar durmaktan daha iyi bir şey bulamadım.
Bugün Cuma :) Belki dinlendikten sonra bir şeyler bulurum.
Her durumda, fikirler için teşekkürler - boşa gitmeyecekler!
Bu benim fikrim değil, geliştiriciler
Nerde yazdığını anlamadım ama önemli değil...
Soğutucu için teşekkürler.
Beni bir koltuk değneğiyle desteklediler ve koştular:
Sıralamanın garanti edilmediği söylenen kılavuzdan kendiniz alıntı yaptınız. Bu yüzden riskli.
Vladimir'in tavsiyesi üzerine kodu yeniden yazmaya başladım, ancak kapatmanın bir onay işaretinden daha uzun sürdüğü durumda tökezledim - yine çift sayım (sayımdaki filtre düğümünün çok ağır olduğu ortaya çıktı). Şimdiye kadar, optimizasyon hızıyla bir uzlaşma uğruna tamamen kapanana kadar durmaktan daha iyi bir şey bulamadım.
Bugün Cuma :) Belki dinlendikten sonra bir şeyler bulurum.
Her durumda, fikirler için teşekkürler - boşa gitmeyecekler!
Ben kendi tutarlılığımdan bahsediyordum.
Gözlemlerime göre, OnTick'ten sonra, bir işlem gerçekleştiğinde, bir sonraki tick'i beklemeden kod yürütmenin OnTradeTransaction işlevine aktarıldığı ortaya çıkıyor. Bu nedenle, kendi işlevleriyle veya OnTradeTransaction'da kapatma gerçeğini ele almak arasında hiçbir fark yoktur . Ama OnTradeTransaction ile çalışmayı daha çok seviyorum. Ana şey, sunucudan gelen işlem sırasına bağlı kalmadan işlem sırasını doğru bir şekilde düzenlemektir. Ve bu sırayı doğru anlamak önemlidir . Yine gözlemlerime göre işlem türünde sıra ihlal edilebilir. Yani önce TRADE_TRANSACTION_DEAL_ADD ve ardından TRADE_TRANSACTION_HISTORY_ADD olabilir ve mantığa göre önce siparişin geçmişe sonra anlaşmaya eklenmesi gerekiyor gibi görünüyor.
not; Ardından dediğim gibi TRADE_TRANSACTION_DEAL_ADD işlemini filtre ettikten sonra pozisyon açma ve pozisyon kapatma işlemlerini filtreleyebilirsiniz. Sonuçta bir forex piyasası danışmanından ve bir hadge hesabından bahsediyoruz değil mi? Buna göre, her hapşırma ile tüm pozisyonları yeniden hesaplamaya gerek yoktur. Bir açılış varsa bir tane eklemek, bir kapanış varsa sayılandan bir tane çıkarmak yeterlidir.forex piyasası ve hadge hesabı değil mi?
Izgara :) Evet.
Şu anki mantık şu: Her grid için tüm bilgileri saklayan bir yapı var: sembol-pozisyon sayısı-toplam lot-kâr ve bu konuşma için önemli olmayan birkaç şey daha... sipariş varsa zamanlayıcı (çok sembollü robot). Ancak lotlar ve miktarlar OnTradeTransaction'da yeniden hesaplandı (kullanıcının "yardım etmesi" durumunda).
Örneğin, bir ızgara artı 100 dolar ve diğeri eksi 50 dolar olduğunda durumu kontrol etmek istedim - büyümesine izin vermemek için her ikisini de 50 karla kapatın.
Şu anda bu şekilde yapılır:
Şimdiye kadar birkaç ızgarayı kapattıktan sonra CountOrders() eklendi. Test cihazı için - işe yarıyor. Gerçekte, bunu Vladimir'in planına göre yapacağım (bir dizi kapalı biletle)
Bu arada, çifte kapanma kendini haklı çıkarmadı - düşüş büyük ölçüde azalmaz, ancak kâr düzgün bir şekilde düşer.
Pozisyon kapatma görevi için TÜM, Uyku ve OnTimer'ı hendek yapardım. Bunu yapardım: kapatmak için ateş emri - OnTick'ten çıkın, bir sonraki onay kontrolünde: gerekli biletlerin bulunduğu pozisyonlar hala hayattaysa - onTick'teki giriş / çıkış boyunca bir daire içinde tekrar kapatmak için ateş emirleri vb.
Mantık şu şekildedir: bir pozisyonu kapatmak en önemli önceliktir, bu nedenle kapanış döngüsü OnTick'in en başındadır. Ve bir dizi kapanış biletinin oluşumu OnTick'in herhangi bir yerinde olabilir - en azından en sonunda.
Ve er ya da geç aşağıdakileri alacaksınız: pozisyonu kapatmanız, kapatmak için bir emir göndermeniz (MQL5), yani. karşıt türde bir emir gönderdi, çünkü ilgili işleyicideki alım satım işlemlerini takip etmiyorsunuz (veya pozisyonun durumunu danışmana kaydetmezsiniz), bir sonraki onay işaretinde, yakın bir emir gönderilme sürecinde olabilir , ve başka bir sipariş veriyorsunuz. Sonuç, ters yönde bir konumdur.
Ve er ya da geç aşağıdakileri alacaksınız: pozisyonu kapatmanız, kapatmak için bir emir göndermeniz (MQL5), yani. karşıt türde bir emir gönderdi, çünkü ilgili işleyicideki alım satım işlemlerini takip etmiyorsunuz (veya pozisyonun durumunu danışmana kaydetmezsiniz), bir sonraki onay işaretinde, yakın bir emir gönderilme sürecinde olabilir , ve başka bir sipariş veriyorsunuz. Sonuç, ters yönde bir konumdur.
Böyle bir durum için var:
10036
TRADE_RETCODE_POSITION_CLOSED
Belirtilen POSITION_IDENTIFIER ile pozisyon zaten kapatıldı
Kapanış pozisyonu, bilet kapatılarak gönderilir, bu nedenle tarif ettiğiniz şeyin gerçekleşmesi olası değildir.
Nerde yazdığını anlamadım ama önemli değil...
Soğutucu için teşekkürler.
Beni bir koltuk değneğiyle desteklediler ve koştular:
Eh, genel olarak, diziler garip bir şekilde kopyalanır, ancak birileri bundan hoşlanır bile ...
Kendimi dizi üzerinde az çok yeterli bir sarmalayıcı yaptım ve sorunları bilmiyorum.
https://www.mql5.com/ru/forum/221917/page26#comment_11233214
Bu benim fikrim değil, geliştiriciler
Hiç öyle dediklerini hatırlamıyorum.
Atama operatörü , bir nesnenin özdeş bir kopyasını oluşturmak için tasarlanmıştır. Bu onun anlamıdır. Bir şeyi bir şeyle eşitlediğinizde, açıkçası sol tarafta tam bir kopya almalısınız, ne olduğu değil. Yani bu açıkça bir bug.