Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 697
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
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());
}
//+------------------------------------------------------------------+
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.
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.
Teşekkürler, ancak MQL4 için nasıl ayarlayabilirim? Hemen açıklamadığım için üzgünüm.
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]
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
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)????
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.