Benim durumumda çalışmıyor. Yeni bir pozisyon istemiyorum. Tek bir ticaret türü için marjı hesapladığını ve döndürdüğünü biliyorum. Ancak ticaret zaten açıksa işe yaramaz ve belirli bir sembolün bir ticareti tarafından tüketilen marjı bilmek istiyorum.
Bana yardım edebilir misiniz, lütfen? Durumumu anlamıyorsanız, lütfen bana bildirin.
Basit komut dosyası açıklaması:
Bu alanı ToolBox'ta görürsünüz:
Bu, semboller için marjdır: AUDJPY, EURUSD ve EURTRY.
AccountInfoDouble(ACCOUNT_MARGIN) ile bu değeri alabileceğimi biliyorum. Ama belirli bir karakterin değerini alamıyorum. Örneğin, EURUSD'nin ne kadar marj tükettiğini bilmek istiyorum. Hiçbir işlevi yerine getiremem. Bu nedenle, bunu nasıl hesaplayabileceğimi bilmek istiyorum.
Umarım bu açıklama mantıklı olmak için yeterlidir.
//+------------------------------------------------------------------+#include <Trade\PositionInfo.mqh> CPositionInfo m_position;
//+------------------------------------------------------------------+struct str__
{
string symbol;
double margin;
};
str__ symb[];
//+------------------------------------------------------------------+voidOnTick ()
{
int total = PositionsTotal (), c = 0 ;
ArrayResize (symb, total);
for ( int k = total - 1 ; k >= 0 ; k--)
if (m_position.SelectByIndex(k))
{
symb[c].symbol = m_position. Symbol ();
if (m_position.PositionType() == POSITION_TYPE_BUY )
symb[c].margin = SymbolMargin(symb[c].symbol, ORDER_TYPE_BUY , m_position.Volume());
if (m_position.PositionType() == POSITION_TYPE_SELL )
symb[c].margin = SymbolMargin(symb[c].symbol, ORDER_TYPE_SELL , m_position.Volume());
c++;
}
ArrayPrint (symb, 2 );
}
//+------------------------------------------------------------------+double SymbolMargin( string aSymbol, ENUM_ORDER_TYPE aType, double aLot = 1.0 )
{
double margin = 0 ;
MqlTick m_tick;
if ( SymbolInfoTick (aSymbol, m_tick))
{
if (m_tick.ask != 0.0 )
if ( OrderCalcMargin (aType, aSymbol, aLot, m_tick.ask, margin))
return (margin * aLot);
if (m_tick.bid != 0.0 )
if ( OrderCalcMargin (aType, aSymbol, aLot, m_tick.bid, margin))
return (margin * aLot);
}
return - 1 ;
}
//+------------------------------------------------------------------+
@Vladimir Pastushak Deneyeceğim. Ama size bunun uygulanabilir bir çözüm olmadığını söylememe izin verin. OrderCalcMargin() işlevi tarafından ayarlanan değer her seferinde değişir. Ama marj değişmiyor. Herhangi bir anlaşmayı kapatırsam, marj anlaşmayı açtığım zamankiyle aynı olacaktır. Ama OrderCalcMargin()'i kullandığımda, aldığım değer değişiyor ve orijinaline hiç benzemiyor.
Bunu sizin tarafınızda da denediyseniz lütfen bana bildirin. İşe yaramayacağını biliyorum. Ancak, ısrar ettiğiniz gibi kullanacağım.
Diğer semboller için marj değeri hala değişmektedir. Bu nedenle OrderCalcMargin() bir çözüm değildir. Anlıyor musun. Önce kendi tarafında dene, lütfen.
2 sipariş 5891 * 2 = 11782 Dizi karakterini karakter karakter işlemeniz gerekiyorsa... Sorun değil...
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
@ Artyom Trishkin @ Vladimir Pastushak
Benim durumumda çalışmıyor. Yeni bir pozisyon istemiyorum. Tek bir ticaret türü için marjı hesapladığını ve döndürdüğünü biliyorum. Ancak ticaret zaten açıksa işe yaramaz ve belirli bir sembolün bir ticareti tarafından tüketilen marjı bilmek istiyorum.
Bana yardım edebilir misiniz, lütfen? Durumumu anlamıyorsanız, lütfen bana bildirin.
Basit komut dosyası açıklaması:
Bu alanı ToolBox'ta görürsünüz:
Bu, semboller için marjdır: AUDJPY, EURUSD ve EURTRY.
AccountInfoDouble(ACCOUNT_MARGIN) ile bu değeri alabileceğimi biliyorum. Ama belirli bir karakterin değerini alamıyorum. Örneğin, EURUSD'nin ne kadar marj tükettiğini bilmek istiyorum. Hiçbir işlevi yerine getiremem. Bu nedenle, bunu nasıl hesaplayabileceğimi bilmek istiyorum.
Umarım bu açıklama mantıklı olmak için yeterlidir.
@Vladimir Pastushak Deneyeceğim. Ama size bunun uygulanabilir bir çözüm olmadığını söylememe izin verin. OrderCalcMargin() işlevi tarafından ayarlanan değer her seferinde değişir. Ama marj değişmiyor. Herhangi bir anlaşmayı kapatırsam, marj anlaşmayı açtığım zamankiyle aynı olacaktır. Ama OrderCalcMargin()'i kullandığımda, aldığım değer değişiyor ve orijinaline hiç benzemiyor.
Bunu sizin tarafınızda da denediyseniz lütfen bana bildirin. İşe yaramayacağını biliyorum. Ancak, ısrar ettiğiniz gibi kullanacağım.
EURUSD'de 50 lot büyüklüğünde bir işlem açtım. İşlevini kullandıktan sonra ne aldığıma bak:
Bak, marj sürekli değişiyor. Ancak önceden açılmış bir işlemin değeri değişmez. Şimdi ne yapacağımı söyle?
EURUSD'de 50 lot büyüklüğünde bir işlem açtım. İşlevini kullandıktan sonra ne aldığıma bak:
Bak, marj sürekli değişiyor. Ancak önceden açılmış bir işlemin değeri değişmez. Şimdi ne yapacağımı söyle?
Yukarıdaki kodu denedim.
Bende var:
Ancak beklenen değer şuydu:
Diğer semboller için marj değeri hala değişmektedir. Bu nedenle OrderCalcMargin() bir çözüm değildir. Anlıyor musun. Önce kendi tarafında dene lütfen.
Diğer semboller için marj değeri hala değişmektedir. Bu nedenle OrderCalcMargin() bir çözüm değildir. Anlıyor musun. Önce kendi tarafında dene, lütfen.
2 sipariş 5891 * 2 = 11782 Dizi karakterini karakter karakter işlemeniz gerekiyorsa... Sorun değil...
2 sipariş 5891 * 2 = 11782 Dizi karakterini karakter karakter işlemeniz gerekiyorsa... Sorun değil...
Ama EURUSD'de sadece bir işlem yaptım. Ve işlev diğer karakterlerle düzgün çalışmıyor.
Söyle bana, mql5 göstergesi için bir kanca var mı? İki görüntüleme özelliği ayarlayın.
Ve her biri kendi görüntüleme özelliğine farklı bir çıktı nasıl bağlanır.
Söyle bana, mql5 göstergesi için bir kanca var mı? İki görüntüleme özelliği ayarlayın.
Ve her biri kendi görüntüleme özelliğine farklı bir çıktı nasıl bağlanır.
Böyle kancalar yok. Ne sağ ne sol. Ne MQL5 ne de MQL4 için.
Alt penceredeki ana çizelgede kendi yapılarınızı kullanın.