OrderSendAsync

OrderSendAsync() fonksiyonu, alım-satım isteklerini, sunucunun isteğe vereceği cevabı beklemeden, asenkron şekilde göndermek için kullanılır. Bu fonksiyon yüksek frekanslı (algoritma kuralları çerçevesinde, sunucudan gelecek cevabı beklemenin kabul edilemez olduğu) alım-satım yöntemleri için geliştirilmiştir.

bool  OrderSendAsync(
   MqlTradeRequest&  request,      // İstek yapısı
   MqlTradeResult&   result        // Sonuç yapısı
   );

Parametreler

request

[in]  Müşterinin alım-satım eylemini tarif eden MqlTradeRequest tipli yapının işaretçisi.

result

[in,out]  Başarıyla tamamlanması (true dönüşü) durumunda, bir alım-satım işleminin sonucunu tarif eden MqlTradeResult tipi yapının işaretçisi.

Dönüş değeri

İstek sunucuya başarıyla gönderilmişse 'true' dönüşü yapar. İstek gönderilememişse 'false' dönüşü yapar. İsteğin gönderilmiş olması durumunda, result değişkeni içindeki cevap kodu TRADE_RETCODE_PLACED değerini içerir (kod 10008 – "emir alındı"). Başarılı bir uygulama sadece emrin gönderildiği anlamına gelir ve isteğin alım satım sunucusuna ulaştığını veya işlem için kabul edildiğini garanti etmez. Alınan bir istek işlenirken, alım-satım sunucusu, müşteri terminaline, Trade olayının oluşmasına yol açan (pozisyonların, emirlerin ve işlemlerin durumundaki) değişimler hakkında uyarılar gönderir.

OrderSendAsync() fonksiyonu ile alım-satım sunucusuna gönderilen bir isteğin işlenme sonucu, OnTradeTransaction işleyicisi ile takip edilebilir. Bir alım-satım isteğinin uygulanması sırasında, OnTradeTransaction işleyicisinin birkaç defa çağrılacağı not edilmelidir.

Ö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. OnTradeTransaction fonksiyonu, bu olayların her biri için çağrılacaktır. Böyle bir veriyi alabilmek için, fonksiyon parametrelerinin incelenmesi gerekir:

  • trans - bu parametre, hesaba uygulanan alım-satım faaliyetini tanımlayan MqlTradeTransaction yapısını alır;
  • request - bu parametre, bir alım-satım faaliyeti içinde sonuçlanmış bir isteği tarif eden MqlTradeRequest yapısını alır;
  • result - bu parametre, alım-satım isteğinin sonucunu tanımlayan MqlTradeResult yapısını alır.

Not

Bu fonksiyon amacı ve parametreleri açısından OrderSend() fonksiyonu ile aynıdır ama onun aksine asenkron yapıdadır; yani, uygulama sonucunu beklemek için programı duraklatmaz. Bu iki fonksiyonun alım-satım işlem oranlarını, bir Uzman Danışman kullanarak karşılaştırabilirsiniz.

Örnek:

#property description "Alım-satım istekleri göndermek için bir Uzman Danışman "
                      " alım-satım istekleri göndermek için bir Uzman Danışman.\r\n"
#property description "OnTrade() ve OnTradeTransaction() fonksiyonlarıyla"
                      " alım-satım olaylarının işlenmesi göstergilmiştir.\r\n"
#property description "Uzman Danışman parametreleri, Magic Number değerinin "
                      " ayarlanmasını ve mesajların Uzmanlar günlüğünde "
#property description "görüntülenmesini sağlar. Versayılan olarak tüm detaylar. görüntülenir.\r\n"
//--- giriş parametreleri
input int  MagicNumber=1234567;      // Uzman Danışman kimliği
input bool DescriptionModeFull=true// Detaylandırılmış çıktı modu
//--- HistorySelect() çağrısında kullanmak için değişkenler
datetime history_start;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- otomatik alım-satıma izin veriliyor mu kontrol et
   if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
     {
      Alert("Otomatik alım-satım devre dışı, Uzman Danışman silinecek");
      ExpertRemove();
      return(-1);
     }
//--- gerçek hesapta alım-satım yapılamıyor
   if(AccountInfoInteger(ACCOUNT_TRADE_MODE)==ACCOUNT_TRADE_MODE_REAL)
     {
      Alert("Uzman danışman gerçek hesapta alım-sayım yapamaz!");
      ExpertRemove();
      return(-2);
     }
//--- Bu hesapta alım-satım yapılabilir mi öğren (örneğin, yatırımcı şifresi kullanırken alım-satım imkansız)
   if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
     {
      Alert("Bu hesapta alım-satım devre dışı bırakılmış");
      ExpertRemove();
      return(-3);
     }
//--- Uzman Danışmanı çalıştırmak için gereken zamanı alım-satım geçmişini almak için kullan
   history_start=TimeCurrent();
//---
   CreateBuySellButtons();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- tüm grafiksel nesneleri sil
   ObjectDelete(0,"Buy");
   ObjectDelete(0,"Sell");
//---
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- alım-satım olayının işleyicisinin ismine göre bir başlık
   Print("=> ",__FUNCTION__," zaman: ",TimeToString(TimeCurrent(),TIME_SECONDS));
//--- faaliyet tipini, sayım değeri olarak al
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- eğer faaliyet, isteğin işlenmesinin bir sonucu ise
   if(type==TRADE_TRANSACTION_REQUEST)
     {
      //--- faaliyet ismini görüntüle
      Print(EnumToString(type));
      //--- işlenen isteğin metin şeklindeki açıklamasını görüntüle
      Print("------------RequestDescription\r\n",
            RequestDescription(request,DescriptionModeFull));
      //--- ve istek sonucunun açıklamasını göster
      Print("------------ ResultDescription\r\n",
            TradeResultDescription(result,DescriptionModeFull));
     }
   else // diğer tipteki faaliyetler için, bu faaliyetin tam açıklamasını görüntüle
     {
      Print("------------ TransactionDescription\r\n",
            TransactionDescription(trans,DescriptionModeFull));
     }
//---     
  }
//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//--- hesap durumunu saklamak için statik değişkenler
   static int prev_positions=0,prev_orders=0,prev_deals=0,prev_history_orders=0;
//--- alım-satım geçmişini iste
   bool update=HistorySelect(history_start,TimeCurrent());
   PrintFormat("HistorySelect(%s , %s) = %s",
               TimeToString(history_start),TimeToString(TimeCurrent()),(string)update);
//--- alım-satım olayının işleyicisinin ismine göre bir başlık
   Print("=> ",__FUNCTION__," zaman: ",TimeToString(TimeCurrent(),TIME_SECONDS));
//--- işleyici ismini ve işleme anındaki emir sayısını görüntüle
   int curr_positions=PositionsTotal();
   int curr_orders=OrdersTotal();
   int curr_deals=HistoryOrdersTotal();
   int curr_history_orders=HistoryDealsTotal();
//--- emirlerin, pozisyonların, işlemlerin ve değişimlerin (parantez içinde) sayısını görüntüle
   PrintFormat("PositionsTotal() = %d (%+d)",
               curr_positions,(curr_positions-prev_positions));
   PrintFormat("OrdersTotal() = %d (%+d)",
               curr_orders,curr_orders-prev_orders);
   PrintFormat("HistoryOrdersTotal() = %d (%+d)",
               curr_deals,curr_deals-prev_deals);
   PrintFormat("HistoryDealsTotal() = %d (%+d)",
               curr_history_orders,curr_history_orders-prev_history_orders);
//--- günlüğü daha uygun şekilde görebilmek için dizgi ayırma karakteri ekle
   Print("");
//--- hesap durumunu sakla
   prev_positions=curr_positions;
   prev_orders=curr_orders;
   prev_deals=curr_deals;
   prev_history_orders=curr_history_orders;
//---
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- CHARTEVENT_CLICK olayının ("Çizelge üzerinde tıklama") işlenmesi
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      Print("=> ",__FUNCTION__,": sparam = ",sparam);
      //--- minimum işlem hacmi
      double volume_min=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
      //--- "Buy" basılı ise satın al
      if(sparam=="Buy")
        {
         PrintFormat("Al %s %G lot",_Symbol,volume_min);
         BuyAsync(volume_min);
         //--- düğmeyi serbest bırak
         ObjectSetInteger(0,"Buy",OBJPROP_STATE,false);
        }
      //--- "Sell" düğmesi basılı ise sat
      if(sparam=="Sell")
        {
         PrintFormat("Sat %s %G lot",_Symbol,volume_min);
         SellAsync(volume_min);
         //--- düğmeyi serbest bırak
         ObjectSetInteger(0,"Sell",OBJPROP_STATE,false);
        }
      ChartRedraw();
     }
//---         
  }
//+------------------------------------------------------------------+
//| Bir faaliyetin metin açıklamasına dönüş yapar                    |
//+------------------------------------------------------------------+
string TransactionDescription(const MqlTradeTransaction &trans,
                              const bool detailed=true)
  {
//--- Fonksiyonun dönüş yapacağı dizgiyi hazırla
   string desc=EnumToString(trans.type)+"\r\n";
//--- ayrıntılı modda, mümkün olan tüm veriler eklenir
   if(detailed)
     {
      desc+="Sembol: "+trans.symbol+"\r\n";
      desc+="İşlem fişi: "+(string)trans.deal+"\r\n";
      desc+="İşlem tipi: "+EnumToString(trans.deal_type)+"\r\n";
      desc+="Emir fişi: "+(string)trans.order+"\r\n";
      desc+="Emir tipi: "+EnumToString(trans.order_type)+"\r\n";
      desc+="Emir durumu: "+EnumToString(trans.order_state)+"\r\n";
      desc+="Emir zaman tipi: "+EnumToString(trans.time_type)+"\r\n";
      desc+="Emir zaman aşımı tipi: "+TimeToString(trans.time_expiration)+"\r\n";
      desc+="Fiyat: "+StringFormat("%G",trans.price)+"\r\n";
      desc+="Fiyat eşiği: "+StringFormat("%G",trans.price_trigger)+"\r\n";
      desc+="Stop Loss: "+StringFormat("%G",trans.price_sl)+"\r\n";
      desc+="Take Profit: "+StringFormat("%G",trans.price_tp)+"\r\n";
      desc+="Hacim: "+StringFormat("%G",trans.volume)+"\r\n";
     }
//--- alınan dizgiye dönüş yap
   return desc;
  }
//+------------------------------------------------------------------+
//| Bir alım-satım isteğinin metin açıklamasına dönüş yapar          |
//+------------------------------------------------------------------+
string RequestDescription(const MqlTradeRequest &request,
                          const bool detailed=true)
  {
//--- Fonksiyonun dönüş yapacağı dizgiyi hazırla
   string desc=EnumToString(request.action)+"\r\n";
//--- mevcut olan tüm verileri ayrıntılı modda ekle
   if(detailed)
     {
      desc+="Sembol: "+request.symbol+"\r\n";
      desc+="Magic Number (sihirli sayı): "+StringFormat("%d",request.magic)+"\r\n";
      desc+="Emir fişi: "+(string)request.order+"\r\n";
      desc+="Emir tipi: "+EnumToString(request.type)+"\r\n";
      desc+="Emrin karşılanma: "+EnumToString(request.type_filling)+"\r\n";
      desc+="Emir zaman tipi: "+EnumToString(request.type_time)+"\r\n";
      desc+="Emir zaman aşımı tipi: "+TimeToString(request.expiration)+"\r\n";
      desc+="Fiyat: "+StringFormat("%G",request.price)+"\r\n";
      desc+="Sapma noktaları: "+StringFormat("%G",request.deviation)+"\r\n";
      desc+="Stop Loss: "+StringFormat("%G",request.sl)+"\r\n";
      desc+="Take Profit: "+StringFormat("%G",request.tp)+"\r\n";
      desc+="Stop Limit: "+StringFormat("%G",request.stoplimit)+"\r\n";
      desc+="Hacim: "+StringFormat("%G",request.volume)+"\r\n";
      desc+="Yorum: "+request.comment+"\r\n";
     }
//--- alınan dizgiye dönüş yap
   return desc;
  }
//+------------------------------------------------------------------+
//| İstek işleme sonucunun metin açıklamasına dönüş yapar            |
//+------------------------------------------------------------------+
string TradeResultDescription(const MqlTradeResult &result,
                              const bool detailed=true)
  {
//--- fonksiyonun dönüş yapacağı dizgiyi hazırla
   string desc="Retcode "+(string)result.retcode+"\r\n";
//--- mevcut olan tüm verileri ayrıntılı modda ekle
   if(detailed)
     {
      desc+="İstek kimliği: "+StringFormat("%d",result.request_id)+"\r\n";
      desc+="Emir fişi: "+(string)result.order+"\r\n";
      desc+="İşlem fişi: "+(string)result.deal+"\r\n";
      desc+="Hacim: "+StringFormat("%G",result.volume)+"\r\n";
      desc+="Fiyat: "+StringFormat("%G",result.price)+"\r\n";
      desc+="Ask: "+StringFormat("%G",result.ask)+"\r\n";
      desc+="Bid: "+StringFormat("%G",result.bid)+"\r\n";
      desc+="Yorum: "+result.comment+"\r\n";
     }
//--- alınan dizgiye dönüş yap
   return desc;
  }
//+------------------------------------------------------------------+
//| Alım ve Satım için iki düğme oluştur                             |
//+------------------------------------------------------------------+
void CreateBuySellButtons()
  {
//--- "Buy" isimli nesneyi kontrol et
   if(ObjectFind(0,"Buy")>=0)
     {
      //--- bulunan nesne bir düğme değilse sil
      if(ObjectGetInteger(0,"Buy",OBJPROP_TYPE)!=OBJ_BUTTON)
         ObjectDelete(0,"Buy");
     }
   else
      ObjectCreate(0,"Buy",OBJ_BUTTON,0,0,0); // "Buy" düğmesini oluştur
//--- "Buy" düğmesini şekillendir
   ObjectSetInteger(0,"Buy",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetInteger(0,"Buy",OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,"Buy",OBJPROP_YDISTANCE,50);
   ObjectSetInteger(0,"Buy",OBJPROP_XSIZE,70);
   ObjectSetInteger(0,"Buy",OBJPROP_YSIZE,30);
   ObjectSetString(0,"Buy",OBJPROP_TEXT,"Buy");
   ObjectSetInteger(0,"Buy",OBJPROP_COLOR,clrRed);
//--- "Sell" isimli nesnenin varlığını kontrol et
   if(ObjectFind(0,"Sell")>=0)
     {
      //--- bulunan nesne bir düğme değilse sil
      if(ObjectGetInteger(0,"Sell",OBJPROP_TYPE)!=OBJ_BUTTON)
         ObjectDelete(0,"Sell");
     }
   else
      ObjectCreate(0,up_arrow,OBJ_ARROW,0,0,0,0,0);          // Bir ok oluştur
//--- "Buy" düğmesini şekillendir
   ObjectSetInteger(0,"Sell",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetInteger(0,"Sell",OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,"Sell",OBJPROP_YDISTANCE,100);
   ObjectSetInteger(0,"Sell",OBJPROP_XSIZE,70);
   ObjectSetInteger(0,"Sell",OBJPROP_YSIZE,30);
   ObjectSetString(0,"Sell",OBJPROP_TEXT,"Sell");
   ObjectSetInteger(0,"Sell",OBJPROP_COLOR,clrBlue);
//--- düğmeleri hemen görebilmek için çizelgeyi zorla güncele
   ChartRedraw();
//---
  }
//+------------------------------------------------------------------+
//| OrderSendAsync() fonksiyonunu kullanarak al                      |
//+------------------------------------------------------------------+
void BuyAsync(double volume)
  {
//--- isteği hazırla
   MqlTradeRequest req={};
   req.action      =TRADE_ACTION_DEAL;
   req.symbol      =_Symbol;
   req.magic       =MagicNumber;
   req.volume      =0.1;
   req.type        =ORDER_TYPE_BUY;
   req.price       =SymbolInfoDouble(req.symbol,SYMBOL_ASK);
   req.deviation   =10;
   req.comment     ="OrderSendAsync() kullanarak Alış";
   MqlTradeResult  res={};
   if(!OrderSendAsync(req,res))
     {
      Print(__FUNCTION__,": hata ",GetLastError(),", retcode = ",res.retcode);
     }
//---
  }
//+------------------------------------------------------------------+
//| OrderSendAsync() fonksiyonunu kullanarak sat                     |
//+------------------------------------------------------------------+
void SellAsync(double volume)
  {
//--- isteği hazırla
   MqlTradeRequest req={};
   req.action      =TRADE_ACTION_DEAL;
   req.symbol      =_Symbol;
   req.magic       =MagicNumber;
   req.volume      =0.1;
   req.type        =ORDER_TYPE_SELL;
   req.price       =SymbolInfoDouble(req.symbol,SYMBOL_BID);
   req.deviation   =10;
   req.comment     ="OrderSendAsync() kullanarak Satış";
   MqlTradeResult  res={};
   if(!OrderSendAsync(req,res))
     {
      Print(__FUNCTION__,": hata ",GetLastError(),", retcode = ",res.retcode);
     }
//---
  }
//+------------------------------------------------------------------+

"Uzmanlar" günlüğünde görüntülenen mesajlara örnek:

 12:52:52   ExpertAdvisor (EURUSD,H1)   => OnChartEvent: sparam = Sell
 12:52:52   ExpertAdvisor (EURUSD,H1)   Sell EURUSD 0.01 lot
 12:52:52   ExpertAdvisor (EURUSD,H1)   => OnTradeTransaction at 09:52:53
 12:52:52   ExpertAdvisor (EURUSD,H1)   TRADE_TRANSACTION_REQUEST
 12:52:52   ExpertAdvisor (EURUSD,H1)   ------------RequestDescription
 12:52:52   ExpertAdvisor (EURUSD,H1)   TRADE_ACTION_DEAL
 12:52:52   ExpertAdvisor (EURUSD,H1)   Symbol: EURUSD
12:52:52   ExpertAdvisor (EURUSD,H1)   Magic Number (sihirli sayı): 1234567
12:52:52   ExpertAdvisor (EURUSD,H1)   Emir fişi: 16361998
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir tipi: ORDER_TYPE_SELL
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emrin karşılanma: ORDER_FILLING_FOK
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir zaman tipi: ORDER_TIME_GTC
12:52:52   ExpertAdvisor (EURUSD,H1)   Emir zaman aşımı tipi: 1970.01.01 00:00
12:52:52   ExpertAdvisor (EURUSD,H1)   Fiyat: 1.29313
12:52:52   ExpertAdvisor (EURUSD,H1)   Sapma noktaları: 10
 12:52:52   ExpertAdvisor (EURUSD,H1)   Stop Loss: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   Take Profit: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   Stop Limit: 0
12:52:52   ExpertAdvisor (EURUSD,H1)   Hacim: 0.1
 12:52:52   ExpertAdvisor (EURUSD,H1)   Comment: Sell using OrderSendAsync()
 12:52:52   ExpertAdvisor (EURUSD,H1)   
 12:52:52   ExpertAdvisor (EURUSD,H1)   ------------ ResultDescription
 12:52:52   ExpertAdvisor (EURUSD,H1)   Retcode 10009
 12:52:52   ExpertAdvisor (EURUSD,H1)   Request ID: 2
12:52:52   ExpertAdvisor (EURUSD,H1)   Emir fişi: 16361998
12:52:52   ExpertAdvisor (EURUSD,H1)   İşlem fişi: 15048668
12:52:52   ExpertAdvisor (EURUSD,H1)   Hacim: 0.1
12:52:52   ExpertAdvisor (EURUSD,H1)   Fiyat: 1.29313
 12:52:52   ExpertAdvisor (EURUSD,H1)   Ask: 1.29319
 12:52:52   ExpertAdvisor (EURUSD,H1)   Bid: 1.29313
 12:52:52   ExpertAdvisor (EURUSD,H1)   Comment
 12:52:52   ExpertAdvisor (EURUSD,H1)   
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistorySelect( 09:34 , 09:52) = true
 12:52:52   ExpertAdvisor (EURUSD,H1)   => OnTrade at 09:52:53
 12:52:52   ExpertAdvisor (EURUSD,H1)   PositionsTotal() = 1 (+1)
 12:52:52   ExpertAdvisor (EURUSD,H1)   OrdersTotal() = 0 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistoryOrdersTotal() = 2 (+2)
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistoryDealsTotal() = 2 (+2)
 12:52:52   ExpertAdvisor (EURUSD,H1)   
 12:52:52   ExpertAdvisor (EURUSD,H1)   => OnTradeTransaction at 09:52:53
 12:52:52   ExpertAdvisor (EURUSD,H1)   ------------ TransactionDescription
 12:52:52   ExpertAdvisor (EURUSD,H1)   TRADE_TRANSACTION_ORDER_ADD
 12:52:52   ExpertAdvisor (EURUSD,H1)   Symbol: EURUSD
12:52:52   ExpertAdvisor (EURUSD,H1)   İşlem fişi: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   İşlem tipi: DEAL_TYPE_BUY
12:52:52   ExpertAdvisor (EURUSD,H1)   Emir fişi: 16361998
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir tipi: ORDER_TYPE_SELL
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir durumu: ORDER_STATE_STARTED
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir zaman tipi: ORDER_TIME_GTC
12:52:52   ExpertAdvisor (EURUSD,H1)   Emir zaman aşımı tipi: 1970.01.01 00:00
12:52:52   ExpertAdvisor (EURUSD,H1)   Fiyat: 1.29313
 12:52:52   ExpertAdvisor (EURUSD,H1)   Price trigger: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   Stop Loss: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   Take Profit: 0
12:52:52   ExpertAdvisor (EURUSD,H1)   Hacim: 0.1
 12:52:52   ExpertAdvisor (EURUSD,H1)   
 12:52:52   ExpertAdvisor (EURUSD,H1)   => OnTradeTransaction at 09:52:53
 12:52:52   ExpertAdvisor (EURUSD,H1)   ------------ TransactionDescription
 12:52:52   ExpertAdvisor (EURUSD,H1)   TRADE_TRANSACTION_ORDER_DELETE
 12:52:52   ExpertAdvisor (EURUSD,H1)   Symbol: EURUSD
12:52:52   ExpertAdvisor (EURUSD,H1)   İşlem fişi: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   İşlem tipi: DEAL_TYPE_BUY
12:52:52   ExpertAdvisor (EURUSD,H1)   Emir fişi: 16361998
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir tipi: ORDER_TYPE_SELL
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir durumu: ORDER_STATE_STARTED
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir zaman tipi: ORDER_TIME_GTC
12:52:52   ExpertAdvisor (EURUSD,H1)   Emir zaman aşımı tipi: 1970.01.01 00:00
12:52:52   ExpertAdvisor (EURUSD,H1)   Fiyat: 1.29313
 12:52:52   ExpertAdvisor (EURUSD,H1)   Price trigger: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   Stop Loss: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   Take Profit: 0
12:52:52   ExpertAdvisor (EURUSD,H1)   Hacim: 0.1
 12:52:52   ExpertAdvisor (EURUSD,H1)   
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistorySelect( 09:34 , 09:52) = true
 12:52:52   ExpertAdvisor (EURUSD,H1)   => OnTrade at 09:52:53
 12:52:52   ExpertAdvisor (EURUSD,H1)   PositionsTotal() = 1 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   OrdersTotal() = 0 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistoryOrdersTotal() = 2 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistoryDealsTotal() = 2 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   
 12:52:52   ExpertAdvisor (EURUSD,H1)   => OnTradeTransaction at 09:52:53
 12:52:52   ExpertAdvisor (EURUSD,H1)   ------------ TransactionDescription
 12:52:52   ExpertAdvisor (EURUSD,H1)   TRADE_TRANSACTION_HISTORY_ADD
 12:52:52   ExpertAdvisor (EURUSD,H1)   Symbol: EURUSD
12:52:52   ExpertAdvisor (EURUSD,H1)   İşlem fişi: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   İşlem tipi: DEAL_TYPE_BUY
12:52:52   ExpertAdvisor (EURUSD,H1)   Emir fişi: 16361998
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir tipi: ORDER_TYPE_SELL
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir durumu: ORDER_STATE_FILLED
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir zaman tipi: ORDER_TIME_GTC
12:52:52   ExpertAdvisor (EURUSD,H1)   Emir zaman aşımı tipi: 1970.01.01 00:00
12:52:52   ExpertAdvisor (EURUSD,H1)   Fiyat: 1.29313
 12:52:52   ExpertAdvisor (EURUSD,H1)   Price trigger: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   Stop Loss: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   Take Profit: 0
12:52:52   ExpertAdvisor (EURUSD,H1)   Hacim: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistorySelect( 09:34 , 09:52) = true
 12:52:52   ExpertAdvisor (EURUSD,H1)   => OnTrade at 09:52:53
 12:52:52   ExpertAdvisor (EURUSD,H1)   PositionsTotal() = 1 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   OrdersTotal() = 0 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistoryOrdersTotal() = 2 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistoryDealsTotal() = 2 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   
 12:52:52   ExpertAdvisor (EURUSD,H1)   => OnTradeTransaction at 09:52:53
 12:52:52   ExpertAdvisor (EURUSD,H1)   ------------ TransactionDescription
 12:52:52   ExpertAdvisor (EURUSD,H1)   TRADE_TRANSACTION_DEAL_ADD
 12:52:52   ExpertAdvisor (EURUSD,H1)   Symbol: EURUSD
12:52:52   ExpertAdvisor (EURUSD,H1)   İşlem fişi: 15048668
 12:52:52   ExpertAdvisor (EURUSD,H1)   İşlem tipi: DEAL_TYPE_SELL
12:52:52   ExpertAdvisor (EURUSD,H1)   Emir fişi: 16361998
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir tipi: ORDER_TYPE_BUY
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir durumu: ORDER_STATE_STARTED
 12:52:52   ExpertAdvisor (EURUSD,H1)   Emir zaman tipi: ORDER_TIME_GTC
12:52:52   ExpertAdvisor (EURUSD,H1)   Emir zaman aşımı tipi: 1970.01.01 00:00
12:52:52   ExpertAdvisor (EURUSD,H1)   Fiyat: 1.29313
 12:52:52   ExpertAdvisor (EURUSD,H1)   Price trigger: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   Stop Loss: 0
 12:52:52   ExpertAdvisor (EURUSD,H1)   Take Profit: 0
12:52:52   ExpertAdvisor (EURUSD,H1)   Hacim: 0.1
 12:52:52   ExpertAdvisor (EURUSD,H1)   
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistorySelect( 09:34 , 09:52) = true
 12:52:52   ExpertAdvisor (EURUSD,H1)   => OnTrade at 09:52:53
 12:52:52   ExpertAdvisor (EURUSD,H1)   PositionsTotal() = 1 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   OrdersTotal() = 0 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistoryOrdersTotal() = 2 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)   HistoryDealsTotal() = 2 (+0)
 12:52:52   ExpertAdvisor (EURUSD,H1)