Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 712
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Birkaç Uzman Danışman, farklı pencerelerde tek bir cihaz üzerinde çalışmalıdır.
PositionsTotal() öğesinin yalnızca kendi konumlarını saymasını sağlamanın bir yolu var mı? Ve sonra bir danışman bir pozisyon açar açmaz, diğerleri de zaten pozisyonda olduklarına inanırlar.
MagicNumber farklı koymak, yardımcı olmuyor.
Birkaç Uzman Danışman, farklı pencerelerde tek bir cihaz üzerinde çalışmalıdır.
PositionsTotal() öğesinin yalnızca kendi konumlarını saymasını sağlamanın bir yolu var mı? Ve sonra bir danışman bir pozisyon açar açmaz, diğerleri de zaten pozisyonda olduklarına inanırlar.
MagicNumber farklı koymak, yardımcı olmuyor.
Mucizeler gerçekleşmez. Sihirbazlar farklı olduğundan, danışmanın pozisyonları ayırt edilmelidir. Bir kod olacak mı?
İlki (test, sadece ortak bir deney için):
CTrade trade;
int OnInit ()
{
trade.SetAsyncMode( true );
trade.SetExpertMagicNumber(111);
return ( INIT_SUCCEEDED );
}
void OnTick ()
{
if ( PositionsTotal ()== 0 )
{
trade.Buy( 1 );
}
}
İkincisi (aynı, farklı bir sihirbazla):
CTrade trade;
int OnInit ()
{
trade.SetAsyncMode( true );
trade.SetExpertMagicNumber( 222 );
return ( INIT_SUCCEEDED );
}
void OnTick ()
{
if ( PositionsTotal ()== 0 )
{
trade.Buy( 1 );
}
}
Üstelik pozisyonu manuel olarak kapatır kapatmaz danışmanlar bunu anında görüyor ve aynı anda yeni pozisyonlar açıyor. İkincisi aktif değilken biri açılırsa, ikincisi artık açık değildir.
Birkaç Uzman Danışman, farklı pencerelerde tek bir cihaz üzerinde çalışmalıdır.
PositionsTotal() öğesinin yalnızca kendi konumlarını saymasını sağlamanın bir yolu var mı? Ve sonra bir danışman bir pozisyon açar açmaz, diğerleri de zaten pozisyonda olduklarına inanırlar.
MagicNumber farklı koymak, yardımcı olmuyor.
Tüm pozisyonlardan geçen ve sadece KENDİ pozisyonlarını kapatan bir danışman örneği - sadece sembolü ve Sihri ile:
//| CloseALL.mq5 |
//| Copyright © 2017, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
CTrade m_trade; // trading object
CPositionInfo m_position; // trade position object
//--- input parameter
input ulong m_magic= 159753698 ; // magic number
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---
CloseAll();
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
//---
}
//+------------------------------------------------------------------+
//| Close All |
//+------------------------------------------------------------------+
void CloseAll()
{
Print ( __FUNCTION__ );
for ( int i= PositionsTotal ()- 1 ;i>= 0 ;i--) // returns the number of open positions
if (m_position.SelectByIndex(i))
if (m_position. Symbol ()== Symbol () && m_position.Magic()==m_magic)
m_trade.PositionClose(m_position.Ticket());
}
//+------------------------------------------------------------------+
Eklendi: Umarım hedge ticaret hesabı üzerinde çalışıyorsunuzdur???
Üstelik pozisyonu manuel olarak kapatır kapatmaz danışmanlar hemen yeni bir pozisyon açıyor.
Ve elbette, PositionsTotal pozisyonları sihir veya başka bir şeyle ayırt etmez, hesaptaki toplam sayılarını verir. 0'dan PositionsTotal() -1'e kadar olan pozisyonlar arasında dolaşmak, büyüyü izlemek ve saymak gerekir.
Ah, ben yazarken zaten tam olarak nasıl olması gerektiğini göstermişler (:Birkaç Uzman Danışman, farklı pencerelerde tek bir cihaz üzerinde çalışmalıdır.
PositionsTotal() öğesinin yalnızca kendi konumlarını saymasını sağlamanın bir yolu var mı? Ve sonra bir danışman bir pozisyon açar açmaz, diğerleri de zaten pozisyonda olduklarına inanırlar.
MagicNumber farklı koymak, yardımcı olmuyor.
Добавлено: я надеюсь Вы работает на торговом счетё hedge???
Hayır, Hedge değil. Yani PositionTotal() sadece kendi pozisyonlarını hesaba katamayacak mı?
CTrade sınıfı bu durumda pozisyonlarını diğerlerinden ayrı olarak dikkate alabilecek mi?
Hayır, Hedge değil. Yani PositionTotal() sadece kendi pozisyonlarını hesaba katamayacak mı?
CTrade sınıfı bu durumda pozisyonlarını diğerlerinden ayrı olarak dikkate alabilecek mi?
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
sihirli sayı
Vladimir Karputov , 2016.12.25 12:38
Netleştirmede, sonuncusu kim ve spor ayakkabılar - yani, pozisyonun büyüsü bu enstrüman için son anlaşma ile aynı olacak..
Kontrol ediyoruz:
//| ReplacementMagic.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"
#property description "Что происходит с magic на netting"
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
CPositionInfo m_position; // trade position object
CTrade m_trade; // trading object
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---
if ( AccountInfoInteger ( ACCOUNT_MARGIN_MODE )== ACCOUNT_MARGIN_MODE_RETAIL_HEDGING )
{
Print ( "Этот пример только для netting!" );
return ( INIT_FAILED );
}
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
//---
static int counter=- 10 ;
if (counter% 300 == 0 )
{
//--- генерируем Magic
ulong m_magic= MathRand ();
Print ( "new Magic: " , IntegerToString (m_magic));
//--- устанавливаем новый Magic
m_trade.SetExpertMagicNumber(m_magic);
//--- определим лот
double lots= 0.0 ;
if ( MathRand ()% 2 == 0 )
lots= 0.01 ;
else
lots= 0.02 ;
//--- определяем, что открывать: Buy или Sell
if ( MathRand ()% 2 == 0 ) // значит Buy
{
m_trade.Buy(lots);
}
else // значит Sell
{
m_trade.Sell(lots);
}
}
counter++;
}
//+------------------------------------------------------------------+
//| 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 )
{
for ( int i= PositionsTotal ()- 1 ;i>= 0 ;i--) // returns the number of open positions
if (m_position.SelectByIndex(i))
if (m_position. Symbol ()== Symbol ())
{
//string text=ChartGetString(0,CHART_COMMENT)+"\n"+
// "Magic: "+IntegerToString(m_position.Magic());
//Comment(text);
Print ( "Обнаружена позиция с Magic: " + IntegerToString (m_position.Magic()));
}
}
}
//+------------------------------------------------------------------+