Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1214

 
Igorz2006 :
Teşekkürler, deneyeceğim. Bitcoin ve kripto için tekliflerin geçmişi analiz için içe aktarılmalıdır

beşinin kapalı bir geçmiş formatı var, imports hakkında bir şey duymadım. gerekli tüm sembollerin bulunduğu demoyu açmak daha kolaydır.

 

Güzel gün!

İki alış pozisyonu ve üç satış pozisyonu açın. Açık pozisyonları hesaplayın.

Pozisyon açma ile ilgili herhangi bir sorun yaşanmadı, ancak hesaplamada zorluklar yaşandı.

Lütfen yeni bir öğrenciye yardım edin

 input int PositionSell = 
5;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

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

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
  
   int buy_count  = 0 ;
   int sell_count = 0 ;

//---объявление и инициализация запроса и резкльтата
   MqlTradeResult   result_sell  = { 0 };
   MqlTradeRequest request_sell = { 0 };

   request_sell.action = TRADE_ACTION_DEAL ;
   request_sell.symbol = Symbol ();
   request_sell.volume = 0.1 ;
   request_sell.type   = ORDER_TYPE_SELL ;

   MqlTradeResult   result_bay  = { 0 };
   MqlTradeRequest request_bay = { 0 };

   request_bay.action = TRADE_ACTION_DEAL ;
   request_bay.symbol = Symbol ();
   request_bay.volume = 0.1 ;
   request_bay.type   = ORDER_TYPE_BUY ;



   if ( PositionsTotal () < PositionSell)
     {
       OrderSend (request_sell,result_sell);
       OrderSend (request_sell,result_sell);
       OrderSend (request_sell,result_sell);

       OrderSend (request_bay,result_bay);
       OrderSend (request_bay,result_bay);
     } else return ;

   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( PositionSelect ( _Symbol ))
     {
       switch ( PositionGetInteger ( POSITION_TYPE )) //Здесь выдает  ошибку implicit conversion from 'number' to 'string'
           {
             case POSITION_TYPE_BUY :  buy_count++;   break ; 
             case POSITION_TYPE_SELL : sell_count++; break ;
           }

        }
     }
     Print ( "Ордеров на покупку: " + buy_count + ", Ордеров на продажу: " + sell_count);
  }
 
Mihail Marchukajtes :

Meslektaşlarım hoş geldiniz!

Aşağıdakileri sor. OnTester işlevinde iki parametre hesaplanır. Bir parametreyi optimize ederken, sadece ikinci parametreyi optimizasyon tablosunda görüntülemek mümkün müdür??? Ve eğer öyleyse nasıl yapılır? Teşekkür ederim!

Meslektaşlarım, soruma cevap yok mu?
 
Pineapple88 :

Güzel gün!

İki alış pozisyonu ve üç satış pozisyonu açın. Açık pozisyonları hesaplayın.

Pozisyon açma ile ilgili herhangi bir sorun yaşanmadı, ancak hesaplamada zorluklar yaşandı.

Lütfen yeni bir öğrenciye yardım edin

     for ( int i= 0 ; i< PositionsTotal (); i++)
     {
           if ( PositionGetTicket (i) == 0 )                         continue ;
           if ( PositionGetString ( POSITION_SYMBOL ) != _Symbol )     continue ;
           switch ( ( int ) PositionGetInteger ( POSITION_TYPE ) )
           {
               case POSITION_TYPE_BUY :  buy_count++;   break ; 
               case POSITION_TYPE_SELL : sell_count++; break ;
           }
     }
 
Konstantin Nikitin :

Teşekkür ederim! Bunu halledeceğim...

 
Pineapple88 :

Teşekkür ederim! Bunu halledeceğim...

PositionGetTicket , PositionGetSymbol, PositionSelect'i okuyun. Özellikle not edin.

 
Tünaydın! Yardıma ihtiyacım var. nedenini anlayamıyorum
Örneğin:
çift f=1.11215;
çift g=1.17545;
çift j=f-(fg);
Yazdır (j);
//Sonuç: 1.17545

Neden 1.1661 değil?
Bununla ilgili nerede okuyabilirsiniz?
 
Reznik Nikolai :
Tünaydın! Yardıma ihtiyacım var. nedenini anlayamıyorum
Örneğin:
çift f=1.11215;
çift g=1.17545;
çift j=f-(fg);
yazdır(j);
//Sonuç: 1.17545

Neden 1.1661 değil?
Bununla ilgili nerede okuyabilirsiniz?

İlkokul üçüncü sınıf aritmetik ders kitabında mutlaka okunması gereken bir kitap.

 
Sonuç olarak, MT4'ü buldum, görevi büyük ölçüde basitleştiriyor
 

Herkese iyi günler!

yardımınızı rica ediyorum.

EA, iki annenin kesiştiği yerde bir pozisyon açar. Bir pozisyonu zıt bir pozisyonla kapatmaya çalışıyorum, [Geçersiz istek] hatası veriyor. İstek parametrelerini doldurmadaki hatayı anlıyorum?

 void OnTick ()
  {

   MqlTradeResult   result_bay  = { 0 };
   MqlTradeRequest request_bay = { 0 };

   request_bay.action = TRADE_ACTION_DEAL ;
   request_bay.symbol = Symbol ();
   request_bay.volume = 0.1 ;
   request_bay.type   = ORDER_TYPE_BUY ;

   MqlTradeResult   result_sell  = { 0 };
   MqlTradeRequest request_sell = { 0 };

   request_sell.action = TRADE_ACTION_DEAL ;
   request_sell.symbol = Symbol ();
   request_sell.volume = 0.1 ;
   request_sell.type   = ORDER_TYPE_CLOSE_BY ;

   double MovingAverage1[], MovingAverage2[]; //задаем два массиса для МА

   int MovingAverageIndic1 = iMA ( _Symbol , 0 , 20 , 0 , MODE_EMA , PRICE_CLOSE );
   int MovingAverageIndic2 = iMA ( _Symbol , 0 , 200 , 0 , MODE_EMA , PRICE_CLOSE );

   ArraySetAsSeries (MovingAverage1, true );
   ArraySetAsSeries (MovingAverage2, true );

   CopyBuffer (MovingAverageIndic1, 0 , 0 , 3 ,MovingAverage1);
   CopyBuffer (MovingAverageIndic2, 0 , 0 , 3 ,MovingAverage2);

   if (
      (MovingAverage1[ 0 ]>MovingAverage2[ 0 ]) &&
      (MovingAverage1[ 1 ]<MovingAverage2[ 1 ])
   )
     {

       if ( PositionsTotal ()== 0 )
         OrderSend (request_bay,result_bay);
     }

   if (
      (MovingAverage1[ 0 ]<MovingAverage2[ 0 ]) &&
      (MovingAverage1[ 1 ]>MovingAverage2[ 1 ])
   )

     {
       if (
         (MovingAverage1[ 0 ]<MovingAverage2[ 0 ]) &&
         (MovingAverage1[ 1 ]>MovingAverage2[ 1 ])
      )
        {
         if ( PositionsTotal ()== 1 )
         
         OrderSend (request_sell,result_sell); 
           }


     }




  }