- Tarih Tipinin Yapısı
- Giriş Parametrelerinin Yapısı
- Tarihsel Veri Yapısı
- Piyasa Derinliği Yapısı
- Alım-Satım İsteği Yapısı
- Sonuç Kontrolü İsteğinin Yapısı
- Bir Alım-Satım İsteği Sonucunun Yapısı
- Alım-Satım Faaliyeti Yapısı
- Cari fiyatların Yapısı
- Veri Yapıları
Alım-Satım Faaliyeti Yapısı (MqlTradeTransaction)
Alım-satım hesabı üzerinde bazı kesin işlemler gerçekleştirildiği zaman hesabın durumu değişir. Bu eylemler şunları kapsamaktadır:
- OrderSend ve OrderSendAsync Fonksiyonları kullanılarak herhangi bir MQL5 uygulamasından yapılan alım-satım istekleri ve bunların ilerideki kullanımları;
- Terminalin grafiksel arayüzü ile yapılan alım satım istekleri ve bunların ilerideki kullanımları;
- Sunucu üzerindeki bekleyen emir ve durdurma emri aktivasyonu;
- İşlemlerin alım-satım sunucusu tarafından gerçekleştirilmesi.
Yukarıda sayılanlar eylemlerin sonucunda şu alım-satım faaliyetleri gerçekleşir:
- alım-satım isteğinin işlenmesi;
- açık emirlerin değişimi;
- emir geçmişinin değişimi;
- işlem geçmişinin değişimi;
- pozisyonların değişimi.
Örneğin, bir piyasa alım emri gönderirken, bu emir önce işlenir, hesap için uygun bir alım emri oluşturulur, sonra uygulanır ve açık emirler listesinden kaldırılır, ardından emir geçmişine eklenir, uygun bir işlem geçmişe eklenir ve yeni bir pozisyon oluşturulur. Tüm bu eylemler alım-satım faaliyetidir
Bir hesaba uygulanan alım-satım faaliyetlerini almak için, özel OnTradeTransaction() işleyicisi MQL5 içinde sağlanır. İşleyicinin ilk parametresi, alım-satım faaliyetlerini tanımlayan MqlTradeTransaction yapısını alır.
struct MqlTradeTransaction
|
Alanların Açıklaması
Alan |
Açıklama |
---|---|
deal |
İşlem fişi. |
order |
Emir fişi. |
symbol |
Faaliyetin gerçekleştirildiği alım-satım sembolünün ismi. |
type |
Alım-satım faaliyeti tipi. Değer, ENUM_TRADE_TRANSACTION_TYPE sayımının değerlerinden biri olabilir. |
order_type |
Alım-satım emrinin tipi. Değer, ENUM_ORDER_TYPE sayımının değerlerinden biri olabilir. |
order_state |
Alım-satım emrinin durumu. Değer, ENUM_ORDER_STATE sayımının değerlerinden biri olabilir. |
deal_type |
İşlem tipi. Değer, ENUM_DEAL_TYPE sayımının değerlerinden biri olabilir. |
time_type |
Zaman-aşımında emir tipi. Değer, ENUM_ORDER_TYPE_TIME sayımının değerlerinden biri olabilir. |
time_expiration |
Bekleyen emrin zaman-aşımı dönemi (ORDER_TIME_SPECIFIED ve ORDER_TIME_SPECIFIED_DAY tipleri için). |
price |
Fiyat. Bu, alım-satım faaliyetine bağlı olarak, bir emrin, bir işlemin veya bir pozisyonun fiyatı olabilir. |
price_trigger |
Dur-sınırı emri durdurma (aktivasyon) fiyatı (ORDER_TYPE_BUY_STOP_LIMIT ve ORDER_TYPE_SELL_STOP_LIMIT). |
price_sl |
Zarar Durdur fiyatı. Alım-satım faaliyetine bağlı olarak, bir emirle, bir işlemle veya bir pozisyon ile alakalı olabilir. |
price_tp |
Kar Al fiyatı. Alım-satım faaliyetine bağlı olarak, bir emirle, bir işlemle veya bir pozisyon ile alakalı olabilir. |
volume |
Lot bazında hacim. Alım-satım işlemine bağlı olarak, bir emrin, bir işlemin veya bir pozisyonun hacmini gösterebilir. |
position |
Faaliyetten etkilenen pozisyonun fişi. |
position_by |
Ters pozisyon fişi. Aynı sembol üzerindeki bir pozisyonu yine aynı sembol üzerindeki bir ters pozisyonla kapatmak için kullanılır. |
Alım-satım faaliyetinin analizi için gereken temel parametre, faaliyetin type alanında belirtilen tipidir. Örneğin, eğer bir faaliyet TRADE_TRANSACTION_REQUEST tipinde ise (bir alım-satım isteğinin sunucu tarafından işlenmesinin sonucu alınmışsa) yapının sadece tek bir alanı doldurulacaktır - type. Diğer alanlar analiz edilmez. Bu durumda, request ve result parametrelerinin ek olarak OnTradeTransaction() işleyicisine geçirilmesini, aşağıda görüldüğü şekilde analiz edebiliriz.
Bir alım-satım işlemi ile ilgili verilere sahip olarak, alım-satım hesabındaki emirlerin, pozisyonların ve işlemlerin mevcut durumları hakkında yapılacak analize karar verebilirsiniz. Terminalden sunucuya gönderilen alım-satım isteği, birkaç yeni faaliyet oluşturabilir. Bunların terminale ulaşım öncelikleri garanti edilmez.
MqlTradeTransaction yapısı, (ENUM_TRADE_TRANSACTION_TYPE) alım-satım tipine bağlı olarak farkı yollarla doldurulur:
TRADE_TRANSACTION_ORDER_* ve TRADE_TRANSACTION_HISTORY_*
MqlTradeTransaction yapısının aşağıda belirtilen alanları, açık emirlerin işlenmesi (TRADE_TRANSACTION_ORDER_ADD, TRADE_TRANSACTION_ORDER_UPDATE ve TRADE_TRANSACTION_ORDER_DELETE) ve emir geçmişi (TRADE_TRANSACTION_HISTORY_ADD, TRADE_TRANSACTION_HISTORY_UPDATE, TRADE_TRANSACTION_HISTORY_DELETE) ile alakalı alım-satım faaliyetleri için doldurulur:
- order - emir fişi;
- symbol - emir sembolü ismi;
- type - alım-satım faaliyet tipi;
- order_type - emir tipi;
- orders_state - emrin mevcut durumu;
- time_type - emir zaman-aşımı tipi;
- time_expiration - emir zaman-aşımı zamanı (ORDER_TIME_SPECIFIED ve ORDER_TIME_SPECIFIED_DAY zaman-aşımı tiplerine sahip emirler için);
- price - müşteri tarafından belirlenen emir fiyatı;
- price_trigger - stop limit emri durdurma fiyatı (sadece ORDER_TYPE_BUY_STOP_LIMIT ve ORDER_TYPE_SELL_STOP_LIMIT tipleri için);
- price_sl - Stop Loss (kaybı durdur) emir fiyatı (emirde belirtilmişse doldurulur);
- price_tp - Take Profit (kar al) emir fiyatı (emirde belirtilmişse doldurulur);
- volume - mevcut emir hacmi (doldurulmaz). Başlangıç emir hacmi, HistoryOrders* fonksiyonu kullanılarak emir geçmişinde bulunabilir.
- position - işlem sonucunda değiştirilen veya kapatılan açık pozisyonun fişi. Sadece piyasa emirlerinde kullanılır, TRADE_TRANSACTION_ORDER_ADD için doldurulmaz.
- position_by - ters pozisyonun fişi. Sadece emir ile kapama için kullanılır (pozisyonu ters pozisyonla kapamak için).
TRADE_TRANSACTION_DEAL_*
MqlTradeTransaction yapısının aşağıda belirtilen alanları, işlemlerin işlenmesiyle alakalı alım-satım faaliyetleri (TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE and TRADE_TRANSACTION_DEAL_DELETE) için doldurulur:
- deal - işlem fişi;
- order - hangi işlemin gerçekleştiğine bağlı olarak, emir fişi;
- symbol - işlem sembolünün ismi;
- type - alım-satım faaliyet tipi;
- deal_type - işlem tipi;
- price - işlem fiyatı;
- price_sl - Zarar Durdur fiyatı (emirde belirtilmişse, hangi işlemin gerçekleştiğine bağlı olarak, doldurulur);
- price_tp - Kar Al fiyatı (emirde belirtilmişse, hangi işlemin gerçekleştiğine bağlı olarak, doldurulur);
- volume - lot bazında işlem hacmi.
- position - işlem sonucunda değiştirilen veya kapatılan açık pozisyonun fişi..
- position_by - ters pozisyonun fişi. Sadece emir ile kapama için kullanılır (pozisyonu ters pozisyonla kapamak için).
TRADE_TRANSACTION_POSITION
MqlTradeTransaction yapısının aşağıda belirtilen alanları, işlemlerin gerçekleştirilmesi ile ilgili olmayan; pozisyon değişimleri ile alakalı alım-satım faaliyetleri (TRADE_TRANSACTION_POSITION) için doldurulur:
- symbol - pozisyon sembol adı;
- type - alım-satım faaliyet tipi;
- deal_type - pzisyon tipi (DEAL_TYPE_BUY veya DEAL_TYPE_SELL);
- price - pozisyon açma fiyatı ağırlıklı ortalaması;
- price_sl - Zarar Durdur fiyatı;
- price_tp - Kar Al fiyatı;
- volume - eğer değiştirilmişse, lot bazında pozisyon fiyatı.
Pozisyon değişimi (ekleme, değiştirme veya kapatma), bir işlemin gerçekleşmesinin sonucu olarak, TRADE_TRANSACTION_POSITION faaliyetinin ortaya çıkmasına neden olmaz. |
TRADE_TRANSACTION_REQUEST
Bir alım-satım emrinin, sunucu tarafından işlendiği ve işlenme sonucunun alındığı (TRADE_TRANSACTION_REQUEST) gerçeğini açıklayan alım-satım işlemleri için, MqlTradeTransaction yapısının sadece bir alanı doldurulur:
- type - alım-satım faaliyet tipi;
Bu gibi faaliyetler için sadece type alanı (alım-satım faaliyeti tipi) analiz edilmelidir. OnTradeTransaction fonksiyonunun ikinci ve üçüncü parametreleri(request ve result), ilave veriler için analiz edilmelidir. |
Örnek:
input int MagicNumber=1234567; |
Ayrıca bakınız