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

 
Vitalie Postolache :


Ben de aynısını söyleyeceğim. Mantıkla arkadaş olmayın. Serbest marj ve risk değerine (yaklaşık %3 yazıldığı gibi) dayalı olarak ilk lotu hemen hesaplamanın sorunu nedir? Neden hepsi tek bir yerde?

Serbest marj değerini alın, riskle çarpın, 100'e bölün ve 1 lot için marj değerine bölün - burada belirli bir serbest marj yüzdesi ile lotu hesaplamak için en basit formül. Pekala, partiyi değiştirmek için bir adım daha dikkate alınmalı ve DC'nin izin verdiği minimum-maksimum partinin ötesine geçilmemelidir:


Danışmanın kısa bir süre içinde işlem yaptığını söylüyorum, bu sırada 9 emrin dönüşümlü olarak birbirinin tersi olarak açılması ve birbirinin 2 ile çarpılması ihtimali var, bu nedenle marj dayanmayabilir ve bekleyen son emir açılmayabilir. , bu nedenle mümkün olan en son maksimum lottan hesaplamak gerekir. 5-10 dakikalık bir süre için en uygun emir sayısının 9 emir olduğunu hesapladım.Genel olarak tüm emirlerin açılması durumunda marjı hesaplamam gerekiyor ve elde edilen verilere göre ilk lotu tersten hesaplamam gerekiyor. sipariş.

 
if(OrdersTotal() >= OrderCount)
{
dönüş;
}
//----
if(r > 50 && p > m) // sipariş açma koşulları satın al
{
biletB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",111,0,Yeşil); // satın alma emri açma
}
//-----
if(r < 50 && p < m) // satış emri açma koşulları
{
biletS = OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,"",111,0,Mavi);
}
//-----kapanmış siparişler
(int i=1; i<=SiparişToplam(); i++) için
{
if(OrderSelect(ticketB,SELECT_BY_TICKET)==true)
{
if(r < 50 && p < m)
{
SiparişKapat(ticketB,0.1,Teklif,5,Kırmızı);
}
}

}

Arkadaşlar nerede yanlış yazdım? Bir örnekten aldım, lütfen bana kodu nasıl doğru yazacağımı söyle ki sipariş kapansın

ters satın alma koşullarında? beynimi çoktan kırdım

 
funnyrain8 :
if(OrdersTotal() >= OrderCount)
{
dönüş;
}
//----
if(r > 50 && p > m) // sipariş açma koşulları satın al
{
biletB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",111,0,Yeşil); // satın alma emri açma
}
//-----
if(r < 50 && p < m) // satış emri açma koşulları
{
biletS = OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,"",111,0,Mavi);
}
//-----kapanmış siparişler
(int i=1; i<=SiparişToplam(); i++) için
{
if(OrderSelect(ticketB,SELECT_BY_TICKET)==true)
{
if(r < 50 && p < m)
{
SiparişKapat(ticketB,0.1,Teklif,5,Kırmızı);
}
}

}

Arkadaşlar nerede yanlış yazdım? Bir örnekten aldım, lütfen bana kodu nasıl doğru yazacağımı söyle ki sipariş kapansın

ters satın alma koşullarında? beynimi çoktan kırdım


 if ( OrdersTotal ()>=OrderCount)   //Обрати внимание на эту конструкцию
     {                             //
       return ;
     }
//---- 
   if (r> 50 && p>m) //условия открытия ордера на покупку
     {
       for ( int i= 1 ; i<= OrdersTotal (); i++)
        {
         if ( OrderSelect (ticketB, SELECT_BY_TICKET )== true )
           {
             if ( OrderType ()== OP_SELL )
              {
               OrderClose ( OrderTicket (), 0.1 , Ask , 5 ,Red);
              }
           }
        }
      ticketB= OrderSend ( Symbol (), OP_BUY , 0.1 , Ask , 5 , 0 , 0 , "" , 111 , 0 ,Green); //открыnие ордера на покупку     

     }

//-----     
   if (r< 50 && p<m) //условия открытия ордера на продажу
     {
     for ( int i= 1 ; i<= OrdersTotal (); i++)
        {
         if ( OrderSelect (ticketB, SELECT_BY_TICKET )== true )
           {
             if ( OrderType ()== OP_BUY )
              {
               OrderClose ( OrderTicket (), 0.1 , Bid , 5 ,Red);
              }
           }
        }
      ticketS= OrderSend ( Symbol (), OP_SELL , 0.1 , Bid , 5 , 0 , 0 , "" , 111 , 0 ,Blue);
     }

Bunun gibi bir şey
 
funnyrain8 :
if(OrdersTotal() >= OrderCount)
{
dönüş;
}
//----
if(r > 50 && p > m) // sipariş açma koşulları satın al
{
biletB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",111,0,Yeşil); // satın alma emri açma
}
//-----
if(r < 50 && p < m) // satış emri açma koşulları
{
biletS = OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,"",111,0,Mavi);
}
//-----kapanmış siparişler
için (int i=1; i<=SiparişlerToplam(); i++)
{
if(OrderSelect(ticketB,SELECT_BY_TICKET)==true)
{
if(r < 50 && p < m)
{
SiparişKapat(ticketB,0.1,Teklif,5,Kırmızı);
}
}

}

Arkadaşlar nerede yanlış yazdım? Bir örnekten aldım, lütfen bana kodu nasıl doğru yazacağımı söyle ki sipariş kapansın

ters satın alma koşullarında? beynimi çoktan kırdım


Bir bilet tarafından bir sipariş seçilirse, döngüde yinelemeye gerek yoktur. danışmanın tam kodunu gönderin, hata yaptığınız bir parçada net değil. Evet ve kodu doğru bir şekilde düzenleyin , kodu mesaja eklemek için bir SRC düğmesi var.
 
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict     
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int ticketB,ticketS;
void OnTick ()
//------------------------------------------------------------------------------------------------
{
double p = iClose ( "EURUSD" , PERIOD_M15 , 0 );                                     //показание текущей цены 
double r = iRSI   ( "EURUSD" , PERIOD_M15 , 21 , PRICE_CLOSE , 0 );                     //значение индюка RSI
double m = iMA    ( "EURUSD" , PERIOD_M15 , 89 , 0 , MODE_EMA , PRICE_CLOSE , 0 );           //значение индюка МА
int     OrderCount  = 1 ;

//---------------ПОДСЧЕТ ОРДЕРОВ------------------------------------------------------------------
if ( OrdersTotal () >= OrderCount)
          {
             return ;
          }   
//-------------ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ--------------------------------------------------------------------
/*if(r > 50 && p > m)                                                        //условия открытия ордера на покупку
    {   
        ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",111,0,Green);         
    }
//------------ЗАКРЫТИЕ ОРДЕРА НА ПРОДАЖУ--------------------------------------------------------
if(r<50 && p<m)                                                           
     {
      for(int i=1; i<=OrdersTotal(); i++)
        {
         if(OrderSelect(ticketB,SELECT_BY_TICKET)==true)
           {
            if(OrderType()==OP_BUY)
              {
                  ticketB = OrderClose(OrderTicket(),0.1,Bid,5,Red);
              }
           }
        }
     }*/
//------------------ОТКРЫТИЕ ОРДЕРА НА ПРОДАЖУ---------------------------------------------------------
if (r < 50 && p < m)                                                         //условия открытия ордера на продажу
    {
        ticketS = OrderSend ( Symbol (), OP_SELL , 0.1 , Bid , 5 , 0 , 0 , "" , 111 , 0 ,Blue); 
    } 
//---------------------ЗАКРЫТИЕ ОРДЕРА НА ПРОДАЖУ---------------------------------------------------------
if (r> 50 && p>m) 
     {
   for ( int i= 1 ; i<= OrdersTotal (); i++)
        {
         if ( OrderSelect (ticketS, SELECT_BY_TICKET )== true )
           {
             if ( OrderType ()== OP_SELL )
              {
                  ticketS = OrderClose ( OrderTicket (), 0.1 , Ask , 5 ,Red);
              }
           }
        }
     }
}
//+------------------------------------------------------------------+
SRC için teşekkürler), yazabileceğim her şey böyle görünüyor, böyle görünüyor, mum doma altında kapandığında ve rsi 50'nin altında olduğunda ve sipariş zıt koşullarda kapatıldığında satış gerçekleşmeli ve aynı zamanda kapanıştan sonra bir satın alma olmalı ve kapanıştan sonra, bir sipariş ve daha fazlası yok ve döngüsel olarak böyle devam ediyor... ama şimdi bir siparişim açık ve hepsi bu ve duraklar çalışmıyor...
 
funnyrain8 :
SRC için teşekkürler), yazabileceğim her şey böyle görünüyor, böyle görünüyor, mum doma altında kapandığında ve rsi 50'nin altındayken ve sipariş zıt koşullarda kapatıldığında satış gerçekleşmeli ve aynı zamanda kapanıştan sonra bir satın alma olmalı ve kapanıştan sonra, bir sipariş ve daha fazlası yok ve döngüsel olarak böyle devam ediyor... ama şimdi bir siparişim açık ve hepsi bu ve duraklar çalışmıyor...


Kendi üslubumda yeniden yazdım umarım anlamışsındır anlaşılmayan bir yer olursa sor

 //+------------------------------------------------------------------+
//|                                                   funnyrain8.mq4 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link        "https://www.mql5.com/ru/users/sergey1294"
#property version    "1.00"
#property strict

input int              MagicNumber  = 20110315 ;       // Номер копии
input string           CommentOrder = "Origenal" ;     // Комментарий к ордеру
input int              Slippage= 100 ;             // Проскальзование (Пипс)
input double           Lot= 0.01 ;           // Объем лота 
input int              SignalBar= 0 ; // Сигнальный бар 

sinput string             s1= NULL ; // Setting indicator slow МА
input int                 ma_period= 89 ;     // Period
input ENUM_MA_METHOD      ma_method= MODE_EMA ; //Method calculation
input ENUM_APPLIED_PRICE ma_price= PRICE_CLOSE ; //Price calculation

sinput string             s2= NULL ; // Setting indicator RSI
input int                 rsi_period= 21 ; // Period
input ENUM_APPLIED_PRICE rsi_price= PRICE_CLOSE ; //Price calculation
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (TotalOrder()== 0 )OrderOpen(GetSignal());
   else OrderClose (GetSignal());
  }
//+------------------------------------------------------------------+
int GetSignal()
  {
   double rsi = iRSI ( _Symbol , PERIOD_CURRENT ,rsi_period,rsi_price,SignalBar);                     //значение индюка RSI
   double ma = iMA    ( _Symbol , PERIOD_CURRENT ,ma_period, 0 ,ma_method,ma_price,SignalBar);           //значение индюка МА

   if ( Close [SignalBar]>ma && rsi> 50.0 ) return ( OP_BUY );
   if ( Close [SignalBar]<ma && rsi< 50.0 ) return ( OP_SELL );
   return ( WRONG_VALUE );
  }
//+------------------------------------------------------------------+
int TotalOrder()
  {
   int value= 0 ;
   int total= OrdersTotal ();
   for ( int i=total- 1 ; i>= 0 ; i--)
     {
       if (! OrderSelect (i, SELECT_BY_POS )) continue ;
       if ( OrderSymbol ()!= _Symbol ) continue ;
       if ( OrderMagicNumber ()!=MagicNumber) continue ;
       if ( OrderType ()> 1 ) continue ;
      value++;
     }
   return (value);
  }
//+------------------------------------------------------------------+
void OrderOpen( int type)
  {
   if (type== WRONG_VALUE ) return ;
   double price_open=(type== OP_BUY )? NormalizeDouble ( Ask , _Digits ): NormalizeDouble ( Bid , _Digits );
   int ticket= OrderSend ( _Symbol ,type,Lot,price_open,Slippage, 0 , 0 ,CommentOrder,MagicNumber);
   if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
  }
//+------------------------------------------------------------------+
void OrderClose ( int type)
  {
   if (type== WRONG_VALUE ) return ;
   int total= OrdersTotal ();
   for ( int i=total- 1 ; i>= 0 ; i--)
     {
       if (! OrderSelect (i, SELECT_BY_POS )) continue ;
       if ( OrderMagicNumber ()!=MagicNumber) continue ;
       if ( OrderSymbol ()!= _Symbol ) continue ;
       if ( OrderType ()!=type) continue ;
       double price_close=(type== OP_BUY )? NormalizeDouble ( Bid , _Digits ): NormalizeDouble ( Ask , _Digits );
       bool res= OrderClose ( OrderTicket (), OrderLots (),price_close,Slippage);
       if (!res) Print ( "Ошибка закрытия ордера № - " , GetLastError ());
     }
  }
//+------------------------------------------------------------------+

...

 
Sergey Gritsay :


Kendi üslubumda yeniden yazdım umarım anlamışsındır anlaşılmayan bir yer olursa sor

...


oh, kapanış hariç hemen hemen her şeyi yazdığımı sanıyordum ama yine de çalışmam ve çalışmam gerekiyor...şimdi çok teşekkür ederim, en azından neler olabileceğine dair bir örnek için, mümkün olacak... kalay, tekrar teşekkürler)
 
Merhaba. Metatrader 5 programını indirdim 2 sinyale abone oldum. Hesap bakiyem 20$ pozitif. Sanal barındırma kurmaya çalışıyorum ama hiçbir şey çalışmıyor. Navigatöre basıyorum - ticaret hesabına bağlanıyorum, tabloda böyle bir sanal barındırma sekmem bile yok. ekran görüntüleri gönderiyorum. Paylaşımlı hostinge nasıl bağlanabilirim?
Dosyalar:
3p46y0.jpg  273 kb
g4ppe22.jpg  264 kb
 
Жанна Платонова :
Merhaba. Metatrader 5 programını indirdim 2 sinyale abone oldum. Hesap bakiyem 20$ pozitif. Sanal barındırma kurmaya çalışıyorum ama hiçbir şey çalışmıyor. Navigatöre basıyorum - ticaret hesabına bağlanıyorum, tabloda böyle bir sanal barındırma sekmem bile yok. ekran görüntüleri gönderiyorum. Paylaşımlı hostinge nasıl bağlanabilirim?

Ana menüde yardıma tıklayın.
 
Merhaba. Böyle bir sorum var - farklı şirketlerden (şarap yoluyla) teslim edilen tüm mt4 platformlarında bir haşhaş (sierra) üzerinde, aynı aksaklık - terminal, onu aşağıdaki normal yerinden serbest bırakırsanız, ücretsiz bir pencere gibi hareket eder - küçülür ve tamamen imkansız hale gelir. Otomatik düzenleme özelliğini devre dışı bırakmak hiçbir şey yapmaz. Terminali orijinal yerine geri döndürmek kesinlikle imkansızdır - yani. artık takılmıyor ve açılmıyor. Bir sorum var - belki birileri bir klavye kısayolu veya tüm arayüzü normal yerlerine döndürmek için bir düğme biliyordur. UV ile.
Neden: