İşlem işleme OnTradeTransaction - sayfa 3

 
Илья Ребенок :

bu durumda, istekten gelen sipariş biletini yine de bir yerde saklamam gerekiyor, böylece daha sonra anlaşmadan gelen biletle karşılaştırabilirim. Ve sadece yerel değişkenlerdeki tüm depolamadan uzaklaşmak ve yerel altyapı risklerini ortadan kaldırmak için yalnızca pazardan/terminalden bilgi almak istiyorum.

Biraz safsın.

Bu Uzman Danışmanın tüm işlemleri için tek bir sihir var!

Ama siparişler farklı (benzersiz)!

 
prostotrader :

Otkryvashka'da gerçek olarak işlem yapıyorum ve demoda test ediyorum, ancak yeniden kullanılabilir pozitiflerim yok.

TRADE_TRANSACTION_DEAL_ADD için kod parçanızı gönderin

Daha bugün yaşadım. Yukarıda, aynı robot için 2 özdeş işlem için günlükten bir kesim yayınladım.

2019.02.08 10:55:29 [BİLGİ]: (PChBreak_RTS-3.19_22) TRADE_TRANSACTION_DEAL_ADD
TRADE_TRANSACTION_DEAL_ADD
Sembol: RTS-3.19
Anlaşma bileti: 12674810
Anlaşma türü: DEAL_TYPE_BUY
Bilet siparişi: 82646001
Sipariş türü: ORDER_TYPE_BUY
Sipariş durumu: ORDER_STATE_STARTED
Sipariş süresi türü: ORDER_TIME_GTC
Sipariş bitiş tarihi: 1970.01.01 00:00
Fiyat: 119700
Fiyat tetikleyici: 0
Kaybı Durdur: 0
Kâr Al: 0
Ses seviyesi 1
Pozisyon: 82646001
Pozisyona göre: 0

2019.02.08 10:55:32 [BİLGİ]: (PChBreak_RTS-3.19_22) TRADE_TRANSACTION_DEAL_ADD
TRADE_TRANSACTION_DEAL_ADD
Sembol: RTS-3.19
Anlaşma bileti: 12674810
Anlaşma türü: DEAL_TYPE_BUY
Bilet siparişi: 82646001
Sipariş türü: ORDER_TYPE_BUY
Sipariş durumu: ORDER_STATE_STARTED
Sipariş süresi türü: ORDER_TIME_GTC
Sipariş bitiş tarihi: 1970.01.01 00:00
Fiyat: 119700
Fiyat tetikleyici: 0
Kaybı Durdur: 0
Kâr Al: 0
Ses seviyesi 1
Pozisyon: 82646001
Pozisyona göre: 0

Deal_add için kod

 case TRADE_TRANSACTION_DEAL_ADD :
        {
         drop_info2( "TRADE_TRANSACTION_DEAL_ADD\r\n" +TransactionDescription(trans));
         if ((trans.deal_type== DEAL_TYPE_BUY || trans.deal_type== DEAL_TYPE_SELL ) && trans.order!= 0 )
           {
             if (getIsDealOfExpert(trans.deal)) //функция проверки принадлежности сделки к роботу
              {
               drop_info2( "Сделка наша" );
               analyzeFilledOrder(trans.order,trans.volume); //процедура по выставлению отложенных стоп ордеров
              }
           }
        }
       break ;

iki özdeş işlem içeren bir hatadan sonra, mevcut işlemin biletinin öncekine eşit olmadığına dair bir kontrol eklendi.

 
Илья Ребенок :

Daha bugün yaşadım. Yukarıda, aynı robot için 2 özdeş işlem için günlükten bir kesim yayınladım.

2019.02.08 10:55:29 [BİLGİ]: (PChBreak_RTS-3.19_22) TRADE_TRANSACTION_DEAL_ADD
TRADE_TRANSACTION_DEAL_ADD
Sembol: RTS-3.19
Anlaşma bileti: 12674810
Anlaşma türü: DEAL_TYPE_BUY
Bilet siparişi: 82646001
Sipariş türü: ORDER_TYPE_BUY
Sipariş durumu: ORDER_STATE_STARTED
.........

Deal_add için kod

iki özdeş işlem içeren bir hatadan sonra, mevcut işlemin biletinin öncekine eşit olmadığına dair bir kontrol eklendi.

Açık.

Sipariş durumu: ORDER_STATE_STARTED - BU, TRADE_TRANSACTION_DEAL_ADD'DE OLAMAZ !

Katma

Eminim yapmazsın ( Ilya Baranov gibi)

 switch (trans.type)
  {
     case TRADE_TRANSACTION_DEAL_ADD :
     //Place you code here
     break ;  
  }

Katma

Bu forumda "Borsa ticareti" bölümü var, oradan iletişim kursanız iyi olur...

 
prostotrader :

Açık.

Sipariş durumu: ORDER_STATE_STARTED - BU, TRADE_TRANSACTION_DEAL_ADD'DE OLAMAZ !

Katma

eminim yapmazsın

Katma

Bu forumda "Borsa ticareti" bölümü var Orada iletişim kurmanız daha iyi olur ...

Uzun zaman önce hareket ettirirdim - ama @Ilya Rebenok asla söylemedi - borsada işlem görüyor veya sadece forex netleştiriyor. burada oturuyorum bekliyorum...

 
Vladimir Karputov :

Uzun zaman önce hareket ettirirdim - ama @Ilya Rebenok asla söylemedi - borsada işlem görüyor veya sadece forex netleştiriyor. burada oturuyorum bekliyorum...

Sembol: RTS-3.19 FORTS'dur

 
prostotrader :

Sembol: RTS-3.19 FORTS'dur

anlamıyorum . Borsa var, forex var. Diğer her şey saçmalıktan.

 
Vladimir Karputov :

anlamıyorum . Borsa var, forex var. Diğer her şey saçmalıktan.

FORTS, RTS Vadeli İşlemler ve Opsiyonlar - Moskova Borsasının Türev Piyasasının bir bölümü :)

 
prostotrader :

Açık.

Sipariş durumu: ORDER_STATE_STARTED - BU, TRADE_TRANSACTION_DEAL_ADD'DE OLAMAZ !

Katma

Eminim yapmazsın ( Ilya Baranov gibi)

Katma

Bu forumda "Borsa ticareti" bölümü var, oradan iletişim kursanız iyi olur...

ben seni pek anlamadım İşte işlem işlemem

 case TRADE_TRANSACTION_DEAL_ADD :
        {
         drop_info2( "TRADE_TRANSACTION_DEAL_ADD\r\n" +TransactionDescription(trans));
         if ((trans.deal_type== DEAL_TYPE_BUY || trans.deal_type== DEAL_TYPE_SELL ) && trans.order!= 0 )
           {
             if (getIsDealOfExpert(trans.deal)) //функция проверки принадлежности сделки к роботу
              {
               drop_info2( "Сделка наша" );
               analyzeFilledOrder(trans.order,trans.volume); //процедура по выставлению отложенных стоп ордеров
              }
           }
        }
       break ;

Anlaşmadaki siparişin durumu ile ilgili. Bunu kendim icat etmediğimi anlıyorsunuz. Bu, tüm Deal_add işlemlerindeki sipariş durumudur. Lütfen dikkat, bir pazar haline geldi, ancak bir gecikme oldu.

Şimdi yanlış anlaşılmanın başka bir kısmı geldi. Deal_add işlemi geldi, ancak pozisyon görünmedi ve mevcut olmayan pozisyon için gecikmeler yerleştirildi.

Katma.

Deal_add işlemi geldi, ancak pozisyon görünmedi ve mevcut olmayan pozisyon için gecikmeler yerleştirildi. Anlaşma türü satış, sipariş türü satın almadır. Başlangıçta limit Sell_limit olmasına rağmen

 
fxsaber :

TP/SL gerektiren limitlerin kendileri kısmen uygulanabilir. Aynı zamanda limitler şeklinde TP de benzerdir. Örneğin, TP hacmin üçte biri kadar tamamlandı - SL'yi aynı miktarda azaltmak gerekiyor.

Genel olarak, tüm şakaları yakalamak için oldukça nahoş bir mantık.


ZY Görev, OnTrade'de uygulanacaktır. Zor olmamalıydı.

Görev

Bekleyen siparişler Netleştirme üzerine verilir (çok yönlü ve her türden herhangi bir sayıda olabilir). Asıl bekleyen emir her tetiklendiğinde SL/TP'nizi bekleyen emirleri Durdur/Limit olarak yerleştirmeniz gerekir. Aynı zamanda, SL/TP siparişleri bağımlı olmalıdır: biri çalıştı, diğeri kaldı. İlk ve SL/TP bekleyen siparişler kısmen tetiklenebilir. Expert Advisor, başka bir Terminale transfer de dahil olmak üzere herhangi bir zamanda yeniden yüklenebilir.


Karar

 #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

input int inTP = 100 ;
input int inSL = 200 ;
sinput MAGIC_TYPE inMagicNumber = 0 ;
sinput string inStrKey = "SLTP" ;

int GetAmountDeals()
{
   return ( HistorySelect ( 0 , INT_MAX ) ? HistoryDealsTotal () : 0 );
}

bool IsMyString( const string Str, const string Key )
{
   return ( StringSubstr (Str, 0 , StringLen (Key)) == Key);
}

string ToMyString( const string Str, const string Key )
{
   return (Key + Str);
}

struct ORDER
{
   int Type;
  TICKET_TYPE Ticket;
   double Lots;
   double OpenPrice;
  MAGIC_TYPE Magic;
   string Comment ;
  
  ORDER() : Type( OrderType ()), Ticket( OrderTicket ()), Lots( OrderLots ()),
            OpenPrice( OrderOpenPrice ()), Magic( OrderMagicNumber ()), Comment ( OrderComment ())
  {
  }
};

#define _CS(A) ((!:: IsStopped ()) && (A))

bool GetPairOrder()
{
   bool Res = false ;

  ORDER Order;
  Order.Type = 6 - Order.Type + ((Order.Type & 1 ) << 1 );
  
   for ( int i = OrdersTotal () - 1 ; _CS((i >= 0 ) && (!Res)); i--)
    Res = OrderSelect (i, SELECT_BY_POS ) && ( OrderType () == Order.Type) &&
          ( OrderMagicNumber () == Order.Magic) && ( OrderComment () == Order. Comment );
    
   return (Res);
}

void CheckSLTP( const string Symb, const MAGIC_TYPE Magic, const string Key, const int Slip = 100 )
{    
   for ( int i = OrdersTotal () - 1 ; _CS(i >= 0 ); i--)
     if ( OrderSelect (i, SELECT_BY_POS ) && ( OrderType () > OP_SELL )  &&
        ( OrderMagicNumber () == Magic) && ( OrderSymbol () == Symb) && IsMyString( OrderComment (), Key))
    {
       const ORDER Order;      
      
       if (!_CS(GetPairOrder()))
      {
         OrderDelete (Order.Ticket);
        
        i = OrdersTotal ();
      }
       else if (_CS( OrderLots () < Order.Lots))
      {
         if ( OrderDelete (Order.Ticket))
           OrderSend ( OrderSymbol (), Order.Type, OrderLots (), Order.OpenPrice, Slip, 0 , 0 , Order. Comment , Order.Magic);
          
        i = OrdersTotal ();          
      }
    }
}

void CheckFill( const string Symb, const MAGIC_TYPE Magic, const string Key, const int SL, const int TP )
{    
   static int PrevDeals = GetAmountDeals();
  
   const double point = SymbolInfoDouble (Symb, SYMBOL_POINT );
   const int NewDeals = GetAmountDeals();
  
   while (_CS(PrevDeals < NewDeals))
  {
     const ulong Ticket = HistoryDealGetTicket (PrevDeals);
    
     if (Ticket && ( HistoryDealGetInteger (Ticket, DEAL_MAGIC ) == Magic) &&
                  ( HistoryDealGetString (Ticket, DEAL_SYMBOL ) == Symb) &&
                  !IsMyString( HistoryDealGetString (Ticket, DEAL_COMMENT ), Key))
    {
       const double Lots = HistoryDealGetDouble (Ticket, DEAL_VOLUME );
       const double Price = HistoryDealGetDouble (Ticket, DEAL_PRICE );
       const int Type = 1 - ( int ) HistoryDealGetInteger (Ticket, DEAL_TYPE );
       const double Koef = Type ? -point : point;
       const string Comment = ToMyString(( string )Ticket, Key);
      
       if ( OrderSend (Symb, Type + OP_BUYLIMIT , Lots, Price - Koef * TP, 0 , 0 , 0 , Comment ))
         OrderSend (Symb, Type + OP_BUYSTOP , Lots, Price + Koef * SL, 0 , 0 , 0 , Comment );
    }
    
    PrevDeals++;
  }
}

void System()
{
  CheckFill( _Symbol , inMagicNumber, inStrKey, inSL, inTP);
  CheckSLTP( _Symbol , inMagicNumber, inStrKey);
}

void OnTrade ()
{
  System();
}

void OnInit ()
{
   OnTrade ();
}
 
Илья Ребенок :

ben seni pek anlamadım İşte işlem işlemem


anahtarınız yok(trans.type)

 void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result )
{
   switch (trans.type) //<<---- ОТФИЛЬТРОВАТЬ ПО ТИПУ ТРАЗАКЦИИ!!!!!!!!!!!!!!!!!!!!!!
  {
   //А вот здесь уже TRADE_TRANSACTION_DEAL_ADD


  }
}