"MQL5 Tarif Defteri: Pozisyon Özelliklerini Elde Etmek için İşlemler Geçmişi ve Fonksiyon Kitaplığı" makalesi için tartışma
Makale güzel, beğendim. Genellikle mevcut pozisyon birkaç anlaşmadan oluşur ve ilk ve sonuncunun yanı sıra 2, 3, vb. anlaşmaların parametrelerini bilmek isterim. Böyle bir özellik makaleyi zenginleştirecektir.
Makalenin yazarına soru.
Pozisyon açıldıktan hemen sonra işlemin dahil olduğu pozisyonuntanımlayıcısı nasıl alınır ?
PositionSelect() fonksiyonunu kullanarak pozisyonu seçin ve PositionGetInteger() fonksiyonunu ve mql5 tanımlayıcısını - POSITION_IDENTIFIER kullanarak tanımlayıcısını alın.
Yardım'dan örnek:
//+------------------------------------------------------------------+ //| Ticaret fonksiyonu| //+------------------------------------------------------------------+ void OnTrade() { //--- pozisyonun mevcut olup olmadığını kontrol edin ve değişim zamanını yazdırın if(PositionSelect(_Symbol)) { //--- onunla daha fazla çalışmak için konum tanımlayıcısını alın ulong position_ID=PositionGetInteger(POSITION_IDENTIFIER); Print(_Symbol," postion #",position_ID); //--- 01.01.1970 tarihinden itibaren pozisyon oluşum zamanını milisaniye cinsinden al long create_time_msc=PositionGetInteger(POSITION_TIME_MSC); PrintFormat("Position #%d POSITION_TIME_MSC = %i64 milliseconds => %s",position_ID, create_time_msc,TimeToString(create_time_msc/1000)); //--- 01.01.1970 tarihinden bu yana son konum değişikliğinin zamanını saniye cinsinden alır long update_time_sec=PositionGetInteger(POSITION_TIME_UPDATE); PrintFormat("Position #%d POSITION_TIME_UPDATE = %i64 seconds => %s", position_ID,update_time_sec,TimeToString(update_time_sec)); //--- 01.01.1970 tarihinden itibaren son konum değişikliğinin zamanını milisaniye cinsinden alır long update_time_msc=PositionGetInteger(POSITION_TIME_UPDATE_MSC); PrintFormat("Position #%d POSITION_TIME_UPDATE_MSC = %i64 milliseconds => %s", position_ID,update_time_msc,TimeToString(update_time_msc/1000)); } //--- }
PositionSelect() işlevini kullanarak bir konum seçin ve PositionGetInteger() işlevini ve mql5 tanımlayıcısını - POSITION_IDENTIFIER kullanarak tanımlayıcısını alın.
Yardım'dan örnek:
Teşekkürler, tol64! Prensip olarak haklısınız.
Ve ilk soru kısa olduğu için özür dilerim... pozisyon tanımlayıcısına bir referans vermeme rağmen.
Sorun şu şekilde. Bir pozisyon açıldıktan sonra, ::PositionId() yöntemini kullanarak CDealInfo sınıfı yardımıyla işlem geçmişinde bu açılışı yakalamak gerekir. Ve tercihen, açılış anı ile geçmiştebir DEAL_ENTRY_IN veya DEAL_ENTRY_INOUT tipi anlaşmanın göründüğü an arasındaki en küçük zaman aralığı ile.
Teşekkürler, tol64! Prensip olarak, gerçek sizindir.
Ve ilk sorunun kısalığı için özür dilerim... pozisyon kimliğine bir bağlantı vermiş olmama rağmen.
Sorun şu şekilde. Bir pozisyon açıldıktan sonra, CDealInfo sınıfını kullanarak ::PositionId() yöntemi ile işlem geçmişinde bu açılışı yakalamak gerekir. Ve tercihen açılış anı ile DEAL_ENTRY_IN veya DEAL_ENTRY_INOUT türündebir anlaşmanın geçmiştegöründüğü an arasındaki en küçük zaman aralığı ile.
Bence, yukarıdaki örnekte olduğu gibi OnTrade() içindeki olayı izlemek bunun için oldukça uygundur. Ancak aniden bir pozisyonun bir ticaret olayı tarafından seçilemeyeceğini ve bir sonrakinin yakında olmayacağını düşünürdüm. O zaman ortamı zamanlayıcı ile izlemeniz gerekir. Artık milisaniyeler bile ayarlanabilir.
Peki, ya da açık pozisyonu izlemek yerine, işlem geçmişini (işlem sayısı) tarayın. Bir öncekini hatırlıyoruz ve mevcut olanla karşılaştırıyoruz. Bunu zamanlayıcıda da yapabilirsiniz. Çok fazla varyant var. Her şey belirli göreve bağlıdır.
Anatoly, burada bir sorunla karşılaştım. Lütfen deneyiminizi paylaşın. Ya fonksiyonlarla çalışırken bir hata var ya da ben "yanlış" yapıyorum. Ama her şeyi doğru yaptığımı düşünüyorum....
İkincisinin "çalışmadığı" fonksiyon varyantları hakkında bir sorum var.
Örneğin:
1)
double HistoryOrderGetDouble( ulong ticket_number, // bilet ENUM_ORDER_PROPERTY_DOUBLE property_id // özellik tanımlayıcısı );
2)
bool HistoryOrderGetDouble( ulong ticket_number, // bilet ENUM_ORDER_PROPERTY_DOUBLE property_id, // özellik tanımlayıcısı double& double_var // burada özelliğin değerini alıyoruz );
Kaynak kodunu ekledim.
Anatoly, burada bir sorunla karşılaştım. Lütfen deneyiminizi paylaşın. Ya fonksiyonlarla çalışırken bir hata var ya da ben "yanlış" yapıyorum. Ama her şeyi doğru yaptığımı düşünüyorum....
Soru, ikincisinin "çalışmadığı" fonksiyon varyantlarıyla ilgili.
...
Günlükte ne görüyorsunuz? Betiği çalıştırırken herhangi bir sorun görmüyorum.
Kodun varsayılan ayarlarında "Failure to return HistoryOrderGetDouble() function" gibi bir girdi olduğunu görüyorum.
Yani fonksiyonun boolean versiyonu özellik değerini alamıyor.
Varsayılan kod ayarlarında "Failure to return HistoryOrderGetDouble() function" gibi bir kayıt olduğunu görüyorum.
Yani, fonksiyonun boolean versiyonu özellik değerini alamıyor.

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yeni makale MQL5 Tarif Defteri: Pozisyon Özelliklerini Elde Etmek için İşlemler Geçmişi ve Fonksiyon Kitaplığı yayınlandı:
Pozisyon özellikleri ile ilgili önceki makalelerde verilen bilgileri kısaca özetlemenin zamanı geldi. Bu makalemizde, işlemler geçmişine erişimin ardından edinilebilecek özellikleri elde etmek için birkaç ek fonksiyon oluşturacağız. Ayrıca pozisyon ve sembol özelliklerine daha rahat erişmemizi sağlayacak veri yapılarını da öğreneceğiz.
Aşağıdaki önceki makalede değiştirilen Uzman Danışmanda yeni fonksiyonların çalışmasını görmek için, pozisyon halihazırda buradayken tekrar açılış sinyali gelirse pozisyon hacmini artırma imkanını ekleyeceğiz: "MQL5 Tarif Defteri: Alım Satım Seviyelerini Ayarlarken/Değiştirirken Hatalardan Nasıl Kaçınılır?"
Pozisyon geçmişinde birkaç işlem olabilir; ve alım satım sırasında pozisyon hacminde değişiklikler olmuşsa, mevcut pozisyon fiyatında da değişiklikler olmuş olmalıdır. İlk giriş noktasının fiyatını bulmak için, bu belirli pozisyonla ilgili işlemlerin geçmişine erişmemiz gerekir. Aşağıdaki şekil, bir pozisyonun yalnızca bir işleminin (giriş noktası) olduğu durumun bir gösterimidir:
Yazar: Anatoli Kazharski