Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
geliştiricilerin çözmesine izin verin. işte bu betiğin 3 lansmanı üzerinde bir ekran.
maalesef bende çalışmıyor
Hata - eskiden çalışıyordu, ama şimdi çalışmıyor.
Mesaj için teşekkürler.
arayacak.
PrintCheckResult yönteminde küçük bir hata bulundu (Trade.mqh dosyası, Ticaret sınıfları, CTrade sınıfı).
void CTrade::PrintCheckResult(void) const
{
printf("Kontrol Sonucu");
// printf("%d,%f,%f,%f,%f,%f,%f,'%s'", - sondan bir önceki parametre gereksiz
printf("%d,%f,%f,%f,%f,%f,'%s'",
m_check_result.retcode,m_check_result.balance,m_check_result.equity,
m_check_result.margin,m_check_result.margin_free,m_check_result.margin_level,
m_check_result.comment);
}
Satır yerine: printf("%d,%f,%f,%f,%f,%f,%f,'%s'", tarafımdan yorumlandı
bir satır olmalıdır: printf("%d,%f,%f,%f,%f,%f,'%s'",
Kontrol edildi, düzeltilen fonksiyon doğru çalışıyor.
Hata - eskiden çalışıyordu, ama şimdi çalışmıyor.
Mesaj için teşekkürler. Bir sonraki güncellemede mevcut olacak. Geçerli sürümde çalışmasını sağlamak için, genel olarak bir sabit veya çarpma için açık döküm kullanın.
{
// вот так работает
Print(TimeCurrent()+2*PeriodSeconds(PERIOD_D1));
// а вот так нет (а раньше работало)
datetime time_end=0;
time_end=TimeCurrent()+ (long) 2*PeriodSeconds(PERIOD_D1);
Print(time_end);
}
PrintCheckResult yönteminde küçük bir hata bulundu (Trade.mqh dosyası, Ticaret sınıfları, CTrade sınıfı).
Mesaj için teşekkürler.
Yakında düzeltilecektir.
Mesaj için teşekkürler. Bir sonraki güncellemede mevcut olacak. Geçerli sürümde çalışmasını sağlamak için, genel olarak bir sabit veya çarpma için açık döküm kullanın.
Teşekkür ederim. Doğru anlarsam, bunun nedeni döküm türüydü . Derlerken bu mesajın olmaması üzücü, bulmak daha kolay olurdu
ENUM_TRADE_RETURN_CODES hatalarının doğru işlenmesi için doğru yorumlanmaları gerekir. Ayrıntılı açıklamalarında herhangi bir materyal var mı?
Özellikle, aşağıdaki hatalar tam olarak anlaşılmamıştır:
10008
TRADE_RETCODE_PLACED
sipariş verildi
10021
TRADE_RETCODE_PRICE_OFF
İsteği işlemek için teklif yok
10028
TRADE_RETCODE_LOCKED
İstek işlenmek üzere engellendi
10029
TRADE_RETCODE_FROZEN
Sipariş veya pozisyon donduruldu
Bu soruya yardımcı olabilecek var mı?
ENUM_TRADE_RETURN_CODES hatalarının doğru işlenmesi için doğru yorumlanmaları gerekir. Ayrıntılı açıklamalarında herhangi bir materyal var mı?
Özellikle, aşağıdaki hatalar tam olarak anlaşılmamıştır:
10008
TRADE_RETCODE_PLACED
sipariş verildi
10021
TRADE_RETCODE_PRICE_OFF
İsteği işlemek için teklif yok
10028
TRADE_RETCODE_LOCKED
İstek işlenmek üzere engellendi
10029
TİCARET_RETCODE_FROZEN
Sipariş veya pozisyon donduruldu
Bu soruya yardımcı olabilecek var mı?
Yukarıdakilerin tümü, bir terminal isteğine yanıt olarak sunucunun döndürdüğü kodları ifade eder. Bu nedenle, her şey "Ticaret sunucusu dönüş kodları" bölümünde verilmiştir.
Listenin sadece hatalar içermediğini varsaymak mantıklı olacaktır.
Şimdi sırayla
İlişkin
10008
TRADE_RETCODE_PLACED
sipariş verildi
Bu yanıtın yalnızca bir hata olmadığını, yalnızca müşteriyi (ticaret terminali) siparişin başarılı bir şekilde yerleştirilmesi hakkında bilgilendirdiğini varsaymak mantıklıdır.
Bu durumda, bunu üç şekilde yapabilirsiniz:
1. Yanıtı hiç işlemeyin;
2. OnTrade() bloğunda sipariş verme süreci - Oldukça kabul edilebilir, ancak bence çok doğru bir seçenek değil;
3. Yanıtı siparişin verildiği yerde işleyin - Bence mekanik ticareti işlemenin en uygun yolu.
not
Sunucunun yanıtlarını ticaret işleminin gerçekleştirildiği yerde ve tüccarın, sunucunun veya diğer Uzman Danışmanların eylemlerinin sonucunu yakalamak için OnTrade()'de işlemeyi tercih ederim.
Örneğin, OnTrade'de, bir tüccarın ticaret işlemlerini (bir emir verme veya silme, ayrıca pozisyonlarla çalışma) yakalayabilirsiniz.
İlişkin
10029
TİCARET_RETCODE_FROZEN
Sipariş veya pozisyon donduruldu
Bir pozisyonun veya emrin "dondurulduğu" (onlarla herhangi bir işlem yapılması yasaktır) ulaşıldığında belirli bir seviye vardır.
Bu seviye, sunucunun emir veya pozisyon ile herhangi bir eylemi yasakladığı ulaşıldığında mevcut fiyata olan mesafeyi temsil eder. Bu mesafe nokta olarak ölçülür ve her karakter için ayarlanır.
Bunu SYMBOL_TRADE_FREEZE_LEVEL parametresi ile SymbolInfoInteger() kullanarak bulabilirsiniz .
Sunucudan böyle bir yanıt alındıysa, iki şeyden biri gerçekleşene kadar beklemeniz gerekir:
1. Fiyat, gerekli mesafeye hareket etmeyecek ( sembolün özelliklerinde belirtilenden daha fazla );
2. Düzen veya pozisyon, kendilerinde belirtilen koşulları sağlamayacaktır.
İlişkin
10021
TRADE_RETCODE_PRICE_OFF
İsteği işlemek için teklif yok
Muhtemelen, böyle bir yanıt aldığınızda, sembolün adını kontrol etmelisiniz (her ihtimale karşı), sembolün seçili olduğundan emin olmalısınız (testçi ve çizgi filmlerle ilgili), üzerinde de dahil olmak üzere bir geçmişi olduğundan emin olmalısınız. sunucu (eğer yüklemeniz gerekiyorsa), muhtemelen piyasanın açık olduğundan ve enstrüman üzerinde işlem yapmanın mümkün olduğundan emin olun.
not
Her ne kadar burada geliştiricilerle açıklığa kavuşturmak gerekli olacak
sallanmak nedir
10028
TRADE_RETCODE_LOCKED
İstek işlenmek üzere engellendi
Bu, belki de yukarıdaki sunucu yanıtlarının en belirginidir. burada, büyük olasılıkla, geliştiricilerin açıklamalarına ihtiyaç var (sadece belirli bir süre beklemeye değer olduğunu varsayacağım) ...
İlişkin
10029
TİCARET_RETCODE_FROZEN
Sipariş veya pozisyon donduruldu
Bir pozisyonun veya emrin "dondurulduğu" (onlarla herhangi bir işlem yapılması yasaktır) ulaşıldığında belirli bir seviye vardır.
Bu seviye, sunucunun emir veya pozisyon ile herhangi bir eylemi yasakladığı ulaşıldığında mevcut fiyata olan mesafeyi temsil eder. Bu mesafe nokta olarak ölçülür ve her karakter için ayarlanır.
Bunu SYMBOL_TRADE_FREEZE_LEVEL parametresi ile SymbolInfoInteger() kullanarak öğrenebilirsiniz.
Sunucudan böyle bir yanıt alındıysa, iki şeyden biri gerçekleşene kadar beklemeniz gerekir:
1. Fiyat, gerekli mesafeye hareket etmeyecek ( sembolün özelliklerinde belirtilenden daha fazla );
2. Düzen veya pozisyon, kendilerinde belirtilen koşulları sağlamayacaktır.
Detaylı cevap için teşekkürler. "10029: TRADE_RETCODE_FROZEN: Sipariş veya pozisyon donduruldu" kodu anlaşılabilir.
Ancak, geri kalanıyla ilgili sorular kaldı (varsayımları değil, kesin cevabı duymak istiyorum):
10008
TRADE_RETCODE_PLACED
sipariş verildi
10021
TRADE_RETCODE_PRICE_OFF
İsteği işlemek için teklif yok
10028
TRADE_RETCODE_LOCKED
İstek işlenmek üzere engellendi
Özellikle, "10008: Sipariş verildi"nin ne anlama geldiği tam olarak açık değildir, çünkü bir sipariş sunucuda sıraya alındığında, ona bir bilet atanır ve "10009: TRADE_RETCODE_DONE: Sipariş tamamlandı" kodu döndürülür.