"MetaTrader 5 Emirler, Pozisyonlar ve Yatırımlar" makalesi için tartışma - sayfa 2

 

Торговыми событиями считаются следующие изменения на счете:

  • fonların borçlandırılması ve tahsil edilmesi;
  • komisyonların, takasların ve vergilerin tahsil edilmesi;
  • emirlerin belirlenmesi, silinmesi ve değiştirilmesi;
  • emirlere dayalı olarak işlemlerin gerçekleştirilmesi;
  • pozisyonların açılması ve kapatılması;
  • pozisyonların hacminin ve yönünün değiştirilmesi.

Liste, açık bir pozisyonun "StopLoss ve/veya TakeProfit seviyelerinin değiştirilmesi"(SL & TP Modifikasyonu) gibi alım satım olaylarını içermemektedir. Yoksa " emir bazında işlemlerin gerçekleştirilmesi" özel bir durum olarak mı değerlendirilmektedir?

 
Yedelkin:

Liste, açık bir pozisyonun "StopLoss ve/veya TakeProfit seviyelerinin değiştirilmesi"(SL & TP Modifikasyonu) gibi bir alım satım olayını içermemektedir. Yoksa "emir bazlı işlemlerin" özel bir durumu olarak mı değerlendiriliyor?

"Açık bir pozisyondaki StopLoss ve/veya TakeProfitseviyelerinin değiştirilmesi(SL & TP Modifikasyonu)", "emirlerin ayarlanması, kaldırılması vedeğiştirilmesine " daha yakındır.
  • emirlerin ayarlanması, silinmesi ve değiştirilmesi;
 
Rosh:
"Açık bir pozisyonda "StopLoss ve/veya TakeProfit seviyelerinin değiştirilmesi(SL & TP Modifikasyonu)"

Bu soru hakkında düşünüyordum. Ancak, aslında, "emirlerin ayarlanması, silinmesi ve değiştirilmesi" hakkında konuşurken, bekleyen emirlerin ayarlanması, silinmesi ve değiştirilmesinden bahsediyoruz. Açık bir pozisyonun SL ve/veya TP seviyelerinin değiştirilmesi biraz farklı bir yapıya sahiptir, çünkü ilgili talepler " anında gerçekleştirme emirleri" kategorisine aittir. Yoksa"anında uygulama" konusunda yanılıyor muyum?

 
Rosh:

Makale bir günlük işlem geçmişi yükleme örneği vermektedir (bir kodda 3 günlük geçmiş yükleme örneği vardır). Evet, bu bir sınırlamadır ve örnek evrensel değildir. Ancak okuyucu makaleyi okurken bu özelliği anlarsa, hangi aralıkta ve hangi andan itibaren işlem geçmişini önbelleğe yüklemesi gerektiği sorusuna kendisi karar verebilecektir.

Okuyucu en basit örnekleri ve algoritmaları almıştır ve artık bunları gerekli olay işleme işlevlerinde bağımsız olarak uygulayabilir. Kendi işlem geçmişi tabanını bağımsız olarak oluşturabilir ve bunun başlatma ve senkronizasyonunu yapabilir vb.

Tüm durumlar için ticaret geçmişi ile optimum çalışma için özel tarifler ve işlevler verme girişimi en az bir makale daha gerektirecektir. Daha doğrusu, örneklerin kendileri değil, belirli görevleri çözmeye yönelik yaklaşımlar. Bu makale, alım satım işlevlerinin nasıl çalıştığını ve araştırma için kendi zamanınızı boşa harcamamak için hangi nüanslara dikkat edilmesi gerektiğini anlamayı amaçlıyordu.

Makaleyi okuduktan sonra bundan sonra her şeyin kolay olacağına eminim.

Rashid, makalenin yararlılığını küçümsemiyorum.

Sadece hayattan örnekler olmadan (bir EA yazarken uygulanabilecek olanlar) oldukça referanssal görünüyor.

Evet, içinde faydalı bilgiler var ve anlayışlı bir kişi bunları kullanabilir. Ancak uzman olmayan bir kullanıcı sadece bu makaleyi okuduktan sonra tarih ile normal bir çalışma düzenleyemeyecektir, yani onun için yararsız olacaktır.

 

Makalede böyle bir bölüm var:

"Örneğin, son gün için son siparişi arayan ve bununla ilgili bilgileri görüntüleyen bir komut dosyası.

// --- gerekli ticaret geçmişinin sınırlarının tanımlanması
   datetime end=TimeCurrent();                 // geçerli sunucu saati
   datetime start=end-PeriodSeconds(PERIOD_D1);// başlangıcı 24 saat öncesine ayarlayın
//--- program önbelleğindeki gün için işlem geçmişini talep edin
   HistorySelect(start,end);
//--- geçmişteki sipariş sayısını al
   int history_orders=HistoryOrdersTotal();
//--- listedeki son indekse sahip siparişin biletini geçmişten alın
   ulong order_ticket=HistoryOrderGetTicket(history_orders-1);
   if(order_ticket>0) // önbellekteki geçmiş sırayı al, onunla çalış
     {
      //--- si̇pari̇ş durumu
      ENUM_ORDER_STATE state=(ENUM_ORDER_STATE)HistoryOrderGetInteger(order_ticket,ORDER_STATE);
      long order_magic      =HistoryOrderGetInteger(order_ticket,ORDER_MAGIC);
      long pos_ID           =HistoryOrderGetInteger(order_ticket,ORDER_POSITION_ID);
      PrintFormat("Sipariş #%d: ORDER_MAGIC=#%d, ORDER_STATE=%d, ORDER_POSITION_ID=%d",
                  order_ticket,order_magic,EnumToString(state),pos_ID);

     }
   else              // başarısız bir sipariş alma girişimi

     {
      PrintFormat("Geçmişteki toplam %d sipariş, bir sipariş seçilemedi"+
                  " %d dizini ile. Hata %d",history_orders,history_orders-1,GetLastError());
     }

Kod açıklaması son siparişin arandığını söylüyor, ancak kodun kendisi geçmiş siparişler listesindeki son indekse sahip bileti almaktan bahsediyor:

//--- son dizinine  sahip geçmişten siparişin biletini al  в списке
   ulong order_ticket=HistoryOrderGetTicket(history_orders-1);
Yani, son siparişe atıfta bulunan maksimum indekse sahip bilet olduğu ima ediliyor. Ancak materyallerin hiçbir yerinde son siparişin geçmiş siparişler listesinde her zaman maksimum indekse sahip olacağının garanti edildiğini bulamadım. ...Diyelim ki listede yalnızca bir sipariş varsa, soru yok. Ancak listede daha fazla sipariş varsa - son siparişi bulmak için önerilen yönteme her zaman güvenebilir miyiz? Başka bir deyişle, son tarihsel emrin tarihsel emirler listesinde her zaman maksimum endekse sahip olması garanti edilir mi?
 

İyi günler!

1) Pozisyon özelliklerine baktım:

POSITION_PROFIT

nedir, ne ile ölçülür?

Örnek:

double profit =PositionGetDouble(POSITION_PROFIT);

sonuç:

EURUSD pozisyonu #101470723: POSITION_MAGIC=0, açılış pozisyon fiyatı=1.30825, kapanış pozisyon fiyatı=1.30835, tip=POSITION_TYPE_BUY, kar=-2061584302, yorum=.

profit=-2061584302 nasıl anlaşılır?

2) Birisi bu girdinin nasıl okunacağını doğru ama basit bir şekilde açıklayabilir mi?

ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);

Belki de PositionGetInteger(POSITION_TYPE) cis işlevi önceden seçilmiş bir konum için POSITION_TYPE adlı bir özelliğin değerini istemiştir, ancak bu değer bir numaralandırma sıra numarası olarak döndürülür ve bunu sindirilebilir bir biçimde temsil etmek için, bu sindirilebilir değeri zaten ENUM_POSITION_TYPE cis numaralandırmasından, türü aynı zamanda ENUM_POSITION_TYPE olarak bildirilen tür değişkenine alırız?

Bu durumda, kendim tarafından belirli bir sınıf yazmanın mümkün olduğunu doğru anlıyor muyum, bu da yaklaşık olarak bir işlev haline gelecektir:

başlatma textPosition = o belirli sınıf; // kurucusunda konum tamponunu okuyan ve tüm parametreleri hatırlayan

ve sonra kullanın:

tekPriceOpening=tekPosition.PriceOpening;

tekDirectionPosition=tekPosition.DirectionPosition;

tekDirectionPosition=tekPosition.DirectionPosition;

tekProfitPosition=tekPosition.ProfitPosition;

Teşekkür ederim!

 
bivmail:

2) Birisi bu yazının tam olarak ama basitçe nasıl okunacağını açıklayabilir mi?

ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);

PositionGetInteger("property identifier") işlevi long türünde bir değer döndürür. "Özellik tanımlayıcısı" long dışında bir türdeyse (örneğin POSITION_TYPE tanımlayıcısı ENUM_POSITION_TYPE türündeyse), PositionGetInteger() işlevi tarafından döndürülen değerin gerekli türde bir değere (yani ENUM_POSITION_TYPE türünde bir değere) dönüştürülmesi tercih edilir.

Örneğinizde, ENUM_POSITION_TYPE tipindeki değerin atandığı, long tipindeki değerin ENUM_POSITION_TYPE tipindeki değere açıkça dönüştürülmesi sonucunda elde edilen ENUM_POSITION_TYPE tipindeki değişken tipi bildirilmiştir.

Sayısal tiplerin değerlerinin döküm kuralları MQL5 Referans Kılavuzu / Dil Temelleri / Veri Tip leri / Tip Dökümü / Sayısal Tiplerin Dökümü bölümünde açıklanmıştır

Документация по MQL5: Торговые функции / PositionGetInteger
Документация по MQL5: Торговые функции / PositionGetInteger
  • www.mql5.com
Торговые функции / PositionGetInteger - Документация по MQL5
 

Makaleden alıntı: "Ticaret sunucusuna bağlantı kesildiğinde, terminal periyodik olarak bağlantıyı yeniden kurma girişimlerinde bulunur".

Bağlantıyı yeniden kurma denemelerinin sıklığı nedir?

 
Her 5 saniyede bir.
 

Anladım, teşekkürler.