Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 27
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
işte kapatmanın şartı şu, ters sinyal kullanılıyor ama çalışmıyor.İşlemler sadece stop al ile kapatılıyor.Sizin sebebiniz nedir?
Doğru değil.
Başlangıçta bir koşulunuz ve başlangıçta bir kapatma fonksiyonunuz olmalıdır.
int i;
//
void Start() {
if ((FMA1<GrossMA1 && FMA2>GrossMA2 && Bid <FMA1-Distanse*GetPoint()) // тут так надо бы Bid < NormalizeDouble (FMA1-Distanse*GetPoint(), Digits )
|| (FRMA1>GrossMA1 && FRMA2<GrossMA2 && Ask >FRMA1+Distanse*GetPoint())){
for (i= OrdersTotal() -1;i>=0;i--) if( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol() == Symbol() && OrderMagicNumber() ==magic) {
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL) CloseOpBuySell(); // тут закроются все ордера и бай и селл
}
}
} // end start
void CloseOpBuySell()
{
for (i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==magic ) //свой магик
{
if ( OrderType ()== OP_BUY )
{
if ( OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( Bid , Digits ), 3 ,LawnGreen); { continue ;}
}
if ( OrderType ()== OP_SELL )
{
if ( OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( Ask , Digits ), 3 ,LawnGreen); { continue ;}
}
}
}
}
return ;
}
Doğru değil.
Hepsini birden değil, ayrı koşullarda kapatmak gerekiyorsa, kapatma işlevi farklı olmalıdır.Başlangıçta bir koşulunuz ve başlangıçta bir kapatma fonksiyonunuz olmalıdır.
Doğru, zaten akımı yaptım ve ona attım, o yüzden sessiz
{
//закрытие по МА-шкам
if (FMA1<GrossMA1 && FMA2>GrossMA2 && Bid <FMA1-Distanse*GetPoint()) CloseOpBuySell( "BUY" );
if (FRMA1>GrossMA1 && FRMA2<GrossMA2 && Ask >FRMA1+Distanse*GetPoint()) CloseOpBuySell( "SELL" );
return ( 0 );
}
//----
//-----------------------------------+
void CloseOpBuySell( string TypeClose)
{
for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==mn )
{
if (TypeClose== "BUY" )
{
if ( OrderType ()== OP_BUY ) OrderClose ( OrderTicket (), OrderLots (), Bid , 3 ,LawnGreen);
}
if (TypeClose== "SELL" )
{
if ( OrderType ()== OP_SELL ) OrderClose ( OrderTicket (), OrderLots (), Ask , 3 ,LawnGreen);
}
}
}
}
}
Bilançoda değil, ücretsiz fon bazında hesaplamak daha doğrudur. Aksi takdirde, işlemin açıldığı anda karşılayabileceğinizden çok daha fazlasını alma riskiyle karşı karşıya kalırsınız.
Pekala, parti adımına bağımlılığı hesaplayın ve ardından partinin hesapta izin verilen maksimum ve minimum lotların ötesine geçip geçmediğini kontrol edin.
double lots,lotstep,free,margin, lotmin, lotmax;
lotmax= MarketInfo ( Symbol (), MODE_MAXLOT );
lotmin= MarketInfo ( Symbol (), MODE_MINLOT );
lotstep = MarketInfo ( Symbol (), MODE_LOTSTEP );
reqmargin = MarketInfo ( Symbol (), MODE_MARGINREQUIRED );
free= AccountFreeMargin ();
lots = NormalizeDouble (lotstep* MathRound ((free*MaximumRisk* 0.01 /reqmargin)/lotstep), 2 );
if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
Bilançoda değil, ücretsiz fon bazında hesaplamak daha doğrudur. Aksi takdirde, işlemin açıldığı anda karşılayabileceğinizden çok daha fazlasını alma riskiyle karşı karşıya kalırsınız.
Pekala, parti adımına bağımlılığı hesaplayın ve ardından partinin hesapta izin verilen maksimum ve minimum lotların ötesine geçip geçmediğini kontrol edin.
double lots,lotstep,free,margin, lotmin, lotmax;
lotmax= MarketInfo ( Symbol (), MODE_MAXLOT );
lotmin= MarketInfo ( Symbol (), MODE_MINLOT );
lotstep = MarketInfo ( Symbol (), MODE_LOTSTEP );
reqmargin = MarketInfo ( Symbol (), MODE_MARGINREQUIRED );
free= AccountFreeMargin ();
lots = NormalizeDouble (lotstep* MathRound ((free*MaximumRisk* 0.01 /reqmargin)/lotstep), 2 );
if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
Etkilenmiş:
Gevorg Hakobyan , 2016.12.08 15:26
Merhaba. Meta Trader 4 döviz çiftlerinde mevcut olan tüm listeleri nasıl alabilirim? Ve listedeki herhangi bir değişiklikten nasıl haberdar olunur?Etkilenmiş:
Gevorg Hakobyan , 2016.12.08 15:26
Merhaba. Meta Trader 4 döviz çiftlerinde mevcut olan tüm listeleri nasıl alabilirim? Ve listedeki herhangi bir değişiklikten nasıl haberdar olunur?SembollerToplam
Kullanılabilir (MarketWatch'ta veya tümünde seçilen) simgelerin sayısını döndürür.
int SembollerToplam (
bool seçilmiş // true - MarketWatch'ta yalnızca semboller
);
Seçenekler
seçilmiş
[içinde] İstek modu. Doğru veya yanlış olabilir.
Geri dönüş değeri
Seçilen parametre doğruysa, MarketWatch'ta seçilen sembol sayısı döndürülür. Değer false ise, tüm karakterlerin toplam sayısı döndürülür.
Etkilenmiş:
Gevorg Hakobyan , 2016.12.08 15:26
Merhaba. Meta Trader 4 döviz çiftlerinde mevcut olan tüm listeleri nasıl alabilirim? Ve listedeki herhangi bir değişiklikten nasıl haberdar olunur?