Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 27

 
Movlat Baghiyev :
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 ;
  }

Hepsini birden değil, ayrı koşullarda kapatmak gerekiyorsa, kapatma işlevi farklı olmalıdır.
 
Natashe4ka :

Doğru değil.
Başlangıçta bir koşulunuz ve başlangıçta bir kapatma fonksiyonunuz olmalıdır.

Hepsini birden değil, ayrı koşullarda kapatmak gerekiyorsa, kapatma işlevi farklı olmalıdır.

Doğru, zaten akımı yaptım ve ona attım, o yüzden sessiz

int start()
{
     //закрытие по МА-шкам
   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);
                          }
                     }
               }
         }
   }
 
Renat Akhtyamov, Natashe4ka çok teşekkür ederim.

 
lot= NormalizeDouble ( AccountBalance ()*MaximumRisk/( MarketInfo ( Symbol (), MODE_MARGINREQUIRED )* 100 ), 1 );
İşte bir lot hesaplama seçeneği. MaximumRisk==100 .Partinin her seferinde maksimumda otomatik olarak hesaplanmasına ihtiyacım var. Anlaşma açarken mümkün olan maksimum lotu hesaplamak için MaximumRisk==100 olarak ayarladım.Bu ne kadar doğru?
 
Movlat Baghiyev :
lot= NormalizeDouble ( AccountBalance ()*MaximumRisk/( MarketInfo ( Symbol (), MODE_MARGINREQUIRED )* 100 ), 1 );
İşte bir lot hesaplama seçeneği. MaximumRisk==100 .Partinin her seferinde maksimumda otomatik olarak hesaplanmasına ihtiyacım var. Anlaşma açarken mümkün olan maksimum lotu hesaplamak için MaximumRisk==100 olarak ayarladım.Bu ne kadar doğru?

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.

int MaximumRisk= 100 ;
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;
 
Vitalie Postolache :


Kayıt oldum. Teşekkürler. Kontrol edelim. Ne olur..
 
Vitalie Postolache :

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.

int MaximumRisk= 100 ;
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;
Bu seçenek olması gerektiği gibi çalışmıyor.. Mümkün olan maksimum lot ile bir anlaşma açılıyor ve ilkini kapattıktan sonra ikincisi açılmıyor, yeterli para yok diyor..
 

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?
 
Vladimir Karputov :

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.

 
Vladimir Karputov :

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?
Ve aktarıldığından, çapraz platform çalışacak kod yazmak gerçekten imkansız mı, görevde iki platformda karakter almaktan hiçbir fark yok.