MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 716

 
Alex Pirate :
Merhaba! neyi kontrol etmeliyim??? değiştirme ve açma konusunda uyarı veriyor ... bir değer döndürüyor ve kontrol etmeniz gerekiyor ... Nasıl ??? EA siparişleri rastgele açar... (((
 extern string MMM          = "MMM" ;
extern double Lot          = 0.1 ;
extern int     TakeProfit   = 50 ;
extern int     StopLoss     = 20 ;
extern int     Slippage     = 3 ;
extern int     Magic        = 888 ;
// Moving Average 1
extern string Indi_MA1        = "MA1" ;
extern int     MA1_Period   = 22 ;
extern int     MA1_Shift    = 0 ;
extern int     MA1_Method   = 0 ;
extern int     MA1_Price    = 0 ;
// Moving Average 2
extern string Indi_MA2        = "MA2" ;
extern int     MA2_Period   = 55 ;
extern int     MA2_Shift    = 0 ;
extern int     MA2_Method   = 0 ;
extern int     MA2_Price    = 0 ;
//+------------------------------------------------------------------+
double MA1,MA2,SL,TP;
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
     if ( Digits == 3 || Digits == 5 )
    {
      TakeProfit = TakeProfit * 10 ;
      StopLoss = StopLoss     * 10 ;
      Slippage = Slippage     * 10 ;
    }
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
{
 return ( 0 );
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick () 
 {           
    MA1 = iMA ( Symbol (), 0 ,MA1_Period,MA1_Shift,MA1_Method,MA1_Price, 0 );
    MA2 = iMA ( Symbol (), 0 ,MA2_Period,MA2_Shift,MA2_Method,MA2_Price, 0 );
    
     if ( Ask >= MA1 && MA1 >= MA2 && CountBuy() == 0 )
    {
       SL = NormalizeDouble ( Ask - StopLoss   * Point , Digits );
       TP = NormalizeDouble ( Ask + TakeProfit * Point , Digits );
       ticket = OrderSend ( Symbol (), OP_BUY ,Lot, Ask ,Slippage, 0 , 0 , "" ,Magic, 0 ,Green);
       if (ticket > 0 )
       { 
         if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ) == true )
             if ( ! OrderModify (ticket, OrderOpenPrice (),SL,TP, 0 ) )   return ;

       }      
        
     if ( Bid <= MA1 && MA1 <= MA2 && CountSell() == 0 ) 
    
       SL = NormalizeDouble ( Bid + StopLoss   * Point , Digits );
       TP = NormalizeDouble ( Bid - TakeProfit * Point , Digits );
       ticket = OrderSend ( Symbol (), OP_SELL ,Lot, Bid ,Slippage, 0 , 0 , "" ,Magic, 0 ,Red);
       if (ticket > 0 )
       { 
         if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ) == true )
             if ( !OrderModify (ticket, OrderOpenPrice (),SL,TP, 0 ) ) return ;

       }                
    }
 }
//+------------------------------------------------------------------+
int CountBuy()
{
   int count = 0 ; 
   for ( int trade = OrdersTotal () - 1 ; trade >= 0 ; trade--)
   {
       if ( ! OrderSelect (trade, SELECT_BY_POS , MODE_TRADES ) ) continue ;
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () ==  Magic)
      {
         if ( OrderType () == OP_BUY )
        count++; 
      } 
   }
   return (count);
}
//+------------------------------------------------------------------+
int CountSell()
{
   int count = 0 ;
   for ( int trade = OrdersTotal () - 1 ; trade >= 0 ; trade--)
   {
       if ( ! OrderSelect (trade, SELECT_BY_POS , MODE_TRADES ) ) continue ;
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () ==  Magic) 
      {
         if ( OrderType () == OP_SELL )
        count++; 
      }
   }
   return (count);
}
//+------------------------------------------------------------------+
 
Konstantin Nikitin :

Teşekkürler!!! Deneyeceğim

 
hatalar ortadan kalktı... ama nedense siparişleri açıyor ve her şeyi yükseltmiyor. nerede karıştırdım...
 
Alex Pirate :
hatalar ortadan kalktı... ama nedense siparişleri açıyor ve her şeyi yükseltmiyor. nerede karıştırdım...

Kodu anlamadım. Yani uzman sizin ve kartlar sizin elinizde.

 
Konstantin Nikitin :

Kodu anlamadım. Yani uzman sizin ve kartlar sizin elinizde.

anladım..yine de teşekkürler

 
Maxim Kuznetsov :

bu, global terminal değişkenleri aracılığıyla yapılabilir. Göstergenin kaynak koduna sahip olmanız ve düzenleyebilmeniz şartıyla.

Yani gösterge, parametreyi extern aracılığıyla değil, GlobalVariableGet() çağrısından alarak hesaplamayı yapacaktır. Ve danışman buna göre GlobalVariableSet aracılığıyla bu değişkeni değiştirecektir.

Teşekkürler Maxim, en azından artık nereden başlayacağımı biliyorum.
 
Bir üst sınıfın sanal yöntemi nasıl çağrılır?
 
Ekstremin fiyatının değerini öğrenebileceğiniz bir zikzak göstergesi var, ekstremumdan geleceğe (ertesi gün) bir trend çizgisi çizmem gerekiyor.Bunu koordinatlarını bilmeden nasıl yapabilirim? ikinci nokta ve ilk noktanın Zaman değeri?
 
Vladimir Pastushak :
Bir üst sınıfın sanal yöntemi nasıl çağrılır?

sanal bir yöntem sanaldır çünkü yalnızca bir açıklaması vardır ve gövde her sınıfta ayrı yazılır

Göreviniz yalnızca ana sınıftan bir yöntemi çağırmaksa (yani yöntemin zaten bir gövdesi var), o zaman (yöntem) kalıtım yoluyla normal bir yöntem olarak kullanılabilir olacaktır - kaynağa bakmanız gerekir

 
Igor Makanu :

sanal bir yöntem sanaldır çünkü yalnızca bir açıklaması vardır ve gövde her sınıfta ayrı yazılır

Göreviniz yalnızca ana sınıftan bir yöntemi çağırmaksa (yani yöntemin zaten bir gövdesi var), o zaman (yöntem) kalıtım yoluyla normal bir yöntem olarak kullanılabilir olacaktır - kaynağa bakmanız gerekir

Sayesinde. Üst sınıf yöntemini çağıramıyorum.

Hatırladığım kadarıyla bu parent :: yöntemiyle yapılıyor.