Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 697

 
yaaarik777 :

Herkese iyi günler! Lütfen sipariş silme işlemini danışmana nasıl koyacağımı söyleyin.

Durum şu:

farklı yönlere bekleyen 2 emir veririz, biri tetiklenir, diğeri silinir ve artık verilmez.

Yardımın için çok minnettar olacağım.

Teşekkür ederim.

Birkaç yol var. Bunlardan biri OnTradeTransaction kullanıyor.

İşlemi yakalarız

TRADE_TRANSACTION_DEAL_ADD

Tarihe bir anlaşma ekleme. Hesap bakiyesi ile emir yürütme veya işlemler sonucunda gerçekleştirilir.

ve bu işlemin piyasaya giriş olduğundan emin olun:

DEAL_ENTRY_IN

Market girişi


//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//--- get transaction type as enumeration value
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
   if (type== TRADE_TRANSACTION_DEAL_ADD )
     {
       long      deal_entry        = 0 ;
       long      deal_type         = 0 ;
       string    deal_symbol       = "" ;
       long      deal_magic        = 0 ;
       if ( HistoryDealSelect (trans.deal))
        {
         deal_entry= HistoryDealGetInteger (trans.deal, DEAL_ENTRY );
         deal_type= HistoryDealGetInteger (trans.deal, DEAL_TYPE );
         deal_symbol= HistoryDealGetString (trans.deal, DEAL_SYMBOL );
         deal_magic= HistoryDealGetInteger (trans.deal, DEAL_MAGIC );
        }
       else
         return ;
       if (deal_symbol== Symbol () && deal_magic==m_magic)
         if (deal_entry== DEAL_ENTRY_IN )
           {
            CloseAll();
           }
     }
  }

Bu işlem, bekleyen emir tetiklendikten ve işlem geçmişe kaydedildikten sonra gerçekleşecektir.

Bu işlemi yakaladıktan sonra, kalan tüm bekleyen emirleri silmemiz gerekecek:

//+------------------------------------------------------------------+
//| Close All Orders                                                 |
//+------------------------------------------------------------------+
void CloseAll()
  {
   Print ( __FUNCTION__ );
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--) // returns the number of open positions
       if (m_order.SelectByIndex(i))
         if (m_order. Symbol ()== Symbol () && m_order.Magic()==m_magic)
            m_trade. OrderDelete (m_order.Ticket());
  }

Danışmanın genel kodu (sadece burada sihri "0" a eşit olarak belirttim - sihrinizi ayarlamanız gerekir):

//+------------------------------------------------------------------+
//|                                       There will be only one.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.00"
#include <Trade\Trade.mqh>
#include <Trade\OrderInfo.mqh>
CTrade         m_trade;                       // trading object
COrderInfo     m_order;                       // pending orders object
//---
ulong           m_magic= 0 ;                 // magic number
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---

  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//--- get transaction type as enumeration value
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
   if (type== TRADE_TRANSACTION_DEAL_ADD )
     {
       long      deal_entry        = 0 ;
       long      deal_type         = 0 ;
       string    deal_symbol       = "" ;
       long      deal_magic        = 0 ;
       if ( HistoryDealSelect (trans.deal))
        {
         deal_entry= HistoryDealGetInteger (trans.deal, DEAL_ENTRY );
         deal_type= HistoryDealGetInteger (trans.deal, DEAL_TYPE );
         deal_symbol= HistoryDealGetString (trans.deal, DEAL_SYMBOL );
         deal_magic= HistoryDealGetInteger (trans.deal, DEAL_MAGIC );
        }
       else
         return ;
       if (deal_symbol== Symbol () && deal_magic==m_magic)
         if (deal_entry== DEAL_ENTRY_IN )
           {
            CloseAll();
           }
     }
  }
//+------------------------------------------------------------------+
//| Close All Orders                                                 |
//+------------------------------------------------------------------+
void CloseAll()
  {
   Print ( __FUNCTION__ );
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--) // returns the number of open positions
       if (m_order.SelectByIndex(i))
         if (m_order. Symbol ()== Symbol () && m_order.Magic()==m_magic)
            m_trade. OrderDelete (m_order.Ticket());
  }
//+------------------------------------------------------------------+
Dosyalar:
 

OnDeinit etkinliğiyle ilgili başka bir soru:

bu kod çalışacak:

geçersiz OnDeinit(const int nedeni)

{

if(sebep==REASON_REMOVE)

{

pozisyon kapatma kodu (varsa)

}

}

genel olarak, OnDeinit olayının işlenmesinde bir pozisyonu kapatmanın mümkün olup olmadığını öğrenmeniz gerekir.

 

İyi zaman uzmanları, deneyimlerinizi paylaşın.

Bir dizi değer vardır, belirli bir nesneyi/alanı yansıtır, yani görev bir şekilde bu nesneyi/alanı belirlemekse, o zaman hangi eylemler mümkündür.

Örneğin, dizinin hacmi x ve y'de binlerce hücreye ulaşabiliyorsa, bu diziyi Kohonen haritaları ağına koymak uygun olur mu?

İki boyutlu dizilerden (büyük boyutlu) birini Kohonen ağına nasıl koyacağımı söyleyebilir misiniz?

Ve Cohon analiz için uygun mu - dizi özyinelemeleri (bir dizideki diziler)

Ya da belki birileri doğru soruları sormaya yardım eder.


1 1 1 1 1 2 4 6 sekiz
1 1 1 1 2 3 5 7 dokuz
1 1 1 1 3 4 6 sekiz on
1 1 1 2 4 5 7 dokuz on bir
1 1 1 3 5 6 sekiz on 12
1 1 1 4 6 7 dokuz on bir on üç
1 1 1 5 7 sekiz on 12 on dört
1 1 2 6 sekiz dokuz on bir on üç on beş
1 1 3 7 dokuz on 12 on dört on altı
1 1 4 sekiz on on bir on üç on beş 17
1 2 5 dokuz on bir 12 on dört on altı on sekiz
1 3 6 on 12 on üç on beş 17 on dokuz
1 4 7 on bir on üç on dört on altı on sekiz 20
1 5 sekiz 12 on dört on beş 17 on dokuz 21
1 6 dokuz on üç on beş on altı on sekiz 20 22
2 7 on on dört on altı 17 on dokuz 21 1
3 sekiz on bir on beş 17 on sekiz 20 22 1
4 dokuz 12 on altı on sekiz on dokuz 21 1 1
5 on on üç 17 on dokuz 20 22 1 1
6 on bir on dört on sekiz 20 21 1 1 1
7 12 on beş on dokuz 21 22 1 1 1
sekiz on üç on altı 20 22 1 1 1 1
dokuz on dört 17 21 1 1 1 1 1
on on beş on sekiz 22 1 1 1 1 1
 
Vladimir Karputov :

Birkaç yol var. Bunlardan biri OnTradeTransaction kullanıyor.

İşlemi yakalarız

TRADE_TRANSACTION_DEAL_ADD

Tarihe bir anlaşma ekleme. Hesap bakiyesi ile emir yürütme veya işlemler sonucunda gerçekleştirilir.

ve bu işlemin piyasaya giriş olduğundan emin olun:

DEAL_ENTRY_IN

Market girişi


//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//--- get transaction type as enumeration value
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
   if (type== TRADE_TRANSACTION_DEAL_ADD )
     {
       long      deal_entry        = 0 ;
       long      deal_type         = 0 ;
       string    deal_symbol       = "" ;
       long      deal_magic        = 0 ;
       if ( HistoryDealSelect (trans.deal))
        {
         deal_entry= HistoryDealGetInteger (trans.deal, DEAL_ENTRY );
         deal_type= HistoryDealGetInteger (trans.deal, DEAL_TYPE );
         deal_symbol= HistoryDealGetString (trans.deal, DEAL_SYMBOL );
         deal_magic= HistoryDealGetInteger (trans.deal, DEAL_MAGIC );
        }
       else
         return ;
       if (deal_symbol== Symbol () && deal_magic==m_magic)
         if (deal_entry== DEAL_ENTRY_IN )
           {
            CloseAll();
           }
     }
  }

Bu işlem, bekleyen emir tetiklendikten ve işlem geçmişe kaydedildikten sonra gerçekleşecektir.

Bu işlemi yakaladıktan sonra, kalan tüm bekleyen emirleri silmemiz gerekecek:

//+------------------------------------------------------------------+
//| Close All Orders                                                 |
//+------------------------------------------------------------------+
void CloseAll()
  {
   Print ( __FUNCTION__ );
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--) // returns the number of open positions
       if (m_order.SelectByIndex(i))
         if (m_order. Symbol ()== Symbol () && m_order.Magic()==m_magic)
            m_trade. OrderDelete (m_order.Ticket());
  }

Danışmanın genel kodu (sadece burada sihri "0" a eşit olarak belirttim - sihrinizi ayarlamanız gerekir):

//+------------------------------------------------------------------+
//|                                       There will be only one.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.00"
#include <Trade\Trade.mqh>
#include <Trade\OrderInfo.mqh>
CTrade         m_trade;                       // trading object
COrderInfo     m_order;                       // pending orders object
//---
ulong           m_magic= 0 ;                 // magic number
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---

  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//--- get transaction type as enumeration value
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
   if (type== TRADE_TRANSACTION_DEAL_ADD )
     {
       long      deal_entry        = 0 ;
       long      deal_type         = 0 ;
       string    deal_symbol       = "" ;
       long      deal_magic        = 0 ;
       if ( HistoryDealSelect (trans.deal))
        {
         deal_entry= HistoryDealGetInteger (trans.deal, DEAL_ENTRY );
         deal_type= HistoryDealGetInteger (trans.deal, DEAL_TYPE );
         deal_symbol= HistoryDealGetString (trans.deal, DEAL_SYMBOL );
         deal_magic= HistoryDealGetInteger (trans.deal, DEAL_MAGIC );
        }
       else
         return ;
       if (deal_symbol== Symbol () && deal_magic==m_magic)
         if (deal_entry== DEAL_ENTRY_IN )
           {
            CloseAll();
           }
     }
  }
//+------------------------------------------------------------------+
//| Close All Orders                                                 |
//+------------------------------------------------------------------+
void CloseAll()
  {
   Print ( __FUNCTION__ );
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--) // returns the number of open positions
       if (m_order.SelectByIndex(i))
         if (m_order. Symbol ()== Symbol () && m_order.Magic()==m_magic)
            m_trade. OrderDelete (m_order.Ticket());
  }
//+------------------------------------------------------------------+

Teşekkürler, ancak MQL4 için nasıl ayarlayabilirim? Hemen açıklamadığım için üzgünüm.

 
yaaarik777 :

Teşekkürler, ancak MQL4 için nasıl ayarlayabilirim? Hemen açıklamadığım için üzgünüm.

Mümkün değil. Eski dile ve terminale danışmıyorum. Bölümde eski terminal hakkında sorular sorun: MQL4 ve MetaTrader 4 (22693)  
 

Hisse senedi ve vadeli işlem piyasalarında neden bir hata yakalıyorum da Forex ve Komodis'te her şey yolunda?

başarısız satış limiti 1.00 USDRUB_TOM 63.8679 sl'de: 63.8829 tp: 63.8329 [Geçersiz süre sonu]

 
-Aleks- :

Hisse senedi ve vadeli işlem piyasalarında neden bir hata yakalıyorum da Forex ve Komodis'te her şey yolunda?

başarısız satış limiti 1.00 USDRUB_TOM 63.8679 sl'de: 63.8829 tp: 63.8329 [Geçersiz süre sonu]

parametre eklemek gerekiyor

request.type_time= ORDER_TIME_DAY ;
 

Merhaba meslektaşlarım, mql5'te böyle bir soru:

Bugün açılan pozisyonların (işlemlerin) karı nasıl hesaplanır (pozisyon dün açılıp bugün kapandıysa, bu pozisyon dikkate alınmaz)????

 
Dmitry Melnichenko :

Merhaba meslektaşlarım, mql5'te böyle bir soru:

Bugün açılan pozisyonların (işlemlerin) karı nasıl hesaplanır (pozisyon dün açılıp bugün kapandıysa, bu pozisyon dikkate alınmaz)????

Açıkçası, bir pozisyon açma zamanını günün başlangıç saatiyle karşılaştırmak.
 
Vitalie Postolache :
Açıkçası, bir pozisyon açma zamanını günün başlangıç saatiyle karşılaştırmak.
Ancak pozisyon dün açıldıysa ve bugün kapandıysa, tarihte bugün açılış saati ile bir Anlaşma görünecektir , bu sadece pozisyonu dün kapatır! Ya da ben hatalıyım?