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

 

Güzel gün!!! Herkese mutlu yıllar!!!

İşte ızgaradaki siparişlerin ortalama fiyatının görüntüsünü gösteren bir ekran görüntüsü

İşte ortalama fiyatın yatay bir çizgisini ve bir yazıt oluşturma kodu

 //+----------------------------------------------------------------------------+
//| Расчет среденй цены (0)-buy (1)-sell ()-all                                |
//+----------------------------------------------------------------------------+
double GetAveragePrice( int ot=- 1 )
  {
   double order_lots = 0 , order_price = 0 , avg_price = 0 ;
     {
       for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--)
        {
         if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType()==ot||ot< 0 )
                 {
                  order_lots += OrderLots();
                  order_price += OrderOpenPrice() * OrderLots();
                 }
              }
           }
        }
     }
   avg_price = NormalizeDouble (order_price / order_lots, Digits );

   if ( ObjectFind ( 0 , "AveragePriceLine" + IntegerToString (ot))!= 0 )
       ObjectCreate ( 0 , "AveragePriceLine" + IntegerToString (ot), OBJ_HLINE , 0 , 0 , avg_price);
   else
       ObjectSetDouble ( 0 , "AveragePriceLine" + IntegerToString (ot), OBJPROP_PRICE ,avg_price);
   if (ot== 0 )
      ObjectSet( "AveragePriceLine" + IntegerToString (ot), OBJPROP_COLOR , clrLime );
   ObjectCreate ( "signal4" , OBJ_LABEL , 0 , 0 , 0 , 0 , 0 );
   ObjectSet( "signal4" , OBJPROP_XDISTANCE , 100 );
   ObjectSet( "signal4" , OBJPROP_YDISTANCE , 260 );
   ObjectSetText( "signal4" , "- Средняя цена сетки ордеров на покупку" , 14 , "Times New Roman" , clrLime );
   if (ot== 1 )
      ObjectSet( "AveragePriceLine" + IntegerToString (ot), OBJPROP_COLOR , clrRed );
   ObjectCreate ( "signal3" , OBJ_LABEL , 0 , 0 , 0 , 0 , 0 );
   ObjectSet( "signal3" , OBJPROP_XDISTANCE , 100 );
   ObjectSet( "signal3" , OBJPROP_YDISTANCE , 280 );
   ObjectSetText( "signal3" , "- Средняя цена сетки ордеров на продажу" , 14 , "Times New Roman" , clrRed );
   return (avg_price);
  }

Yatay çizgiyi kaldırmak için kodu girin

 //-------------------------------------------------------------------+  Команда на удаление линий отображающую среднюю цену
   if (CountTrade() == 0 )
     {
       if ( ObjectFind ( 0 , "AveragePriceLine" + IntegerToString ( 0 ))== 0 &&CountTrade( 0 )< 1 ) //для бай
        {
         ObjectDelete ( 0 , "AveragePriceLine" + IntegerToString ( 0 ));
        }
       if ( ObjectFind ( 0 , "AveragePriceLine" + IntegerToString ( 1 ))== 0 &&CountTrade( 1 )< 1 ) //для селл
        {
         ObjectDelete ( 0 , "AveragePriceLine" + IntegerToString ( 1 ));
        }
     }

Lütfen kodu değiştirmeme yardım edin, böylece yazı satırın üstünde görünecek ve satır kaldırıldığında kaldırılacaktır.

Yardım için teşekkürler.

 
EVGENII SHELIPOV # :

Lütfen kodu değiştirmeme yardım edin, böylece

Yardımcı olabilirseniz, tam olarak işinize yaramayan şey nedir?

 
Andrey Sokolov # :

Yardımcı olabilirseniz, tam olarak işinize yaramayan nedir?

Kabalık etmeyelim, nasıl yapılacağını bilseydim buraya başvurmazdım.

Soru çok basit, yatay çizgiye göre yazının koordinatlarını bilmeniz gerekiyor, nasıl hesaplayacağımı bilmiyorum.


 
EVGENII SHELIPOV # :

Kabalık etmeyelim, nasıl yapılacağını bilseydim buraya başvurmazdım.

Soru çok basit, yatay çizgiye göre yazının koordinatlarını bilmeniz gerekiyor, nasıl hesaplayacağımı bilmiyorum.


" Kaba olmayalım" anlamında mı? "Beni yap" değil de "yardım" yazdım mı?

 
EVGENII SHELIPOV # :

Güzel gün!!! Herkese mutlu yıllar!!!

Yatay çizgiyi kaldırmak için kodu girin

Yardım için teşekkürler.

bu fazlasıyla yeterli

 //-------------------------------------------------------------------+  Команда на удаление линий отображающую среднюю цену
   if (CountTrade() == 0 )
     {
       ObjectsDeleteAll ( 0 , "AveragePriceLine" );
     }
EVGENII SHELIPOV # :

Soru çok basit, yatay çizgiye göre yazının koordinatlarını bilmeniz gerekiyor, nasıl hesaplayacağımı bilmiyorum.

İşte sana yardımcı olacak

GrafikZamanFiyatToXY

GrafikXYToZamanFiyat

 
Tretyakov Rostyslav # :

fazlasıyla yeterli

İşte sana yardımcı olacak

GrafikZamanFiyatToXY

GrafikXYZamanFiyat

İpucu için teşekkürler Rostislav, ama bir şeyi yanlış yapıyorum.

Şimdiye kadar sadece 0Y ekseni boyunca değişikliklere ihtiyacım var, ancak yazıt yatay bir çizgiyle evlenmek istemiyor.

Kodu ve ekran görüntüsünü ekliyorum, bana hatanın nerede olduğunu söyle?

 //+----------------------------------------------------------------------------+
//| Расчет среденй цены (0)-buy (1)-sell ()-all                                |
//+----------------------------------------------------------------------------+
double GetAveragePrice( int ot=- 1 )
  {
   double order_lots = 0 , order_price = 0 , avg_price = 0 ;
   int x = 0 , y = 0 ;
     {
       for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--)
        {
         if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType()==ot||ot< 0 )
                 {
                  order_lots += OrderLots();
                  order_price += OrderOpenPrice() * OrderLots();
                 }
              }
           }
        }
     }
   avg_price = NormalizeDouble (order_price / order_lots, Digits );

   if ( ObjectFind ( 0 , "AveragePriceLine" + IntegerToString (ot))!= 0 )
       ObjectCreate ( 0 , "AveragePriceLine" + IntegerToString (ot), OBJ_HLINE , 0 , 0 , avg_price);
   else
       ObjectSetDouble ( 0 , "AveragePriceLine" + IntegerToString (ot), OBJPROP_PRICE ,avg_price);
   if (ot== 0 )
      ObjectSet( "AveragePriceLine" + IntegerToString (ot), OBJPROP_COLOR , clrLime );
   ObjectCreate ( "signal4" , OBJ_LABEL , 0 , 0 , 0 , 0 , 0 );
   ObjectSet( "signal4" , OBJPROP_XDISTANCE , 500 );
   ChartTimePriceToXY ( 0 , 0 , 0 ,avg_price, x, y);
   ObjectSet( "signal4" , OBJPROP_YDISTANCE , y + 10 );
   ObjectSetText( "signal4" , "- Средняя цена сетки ордеров на покупку" , 14 , "Times New Roman" , clrLime );
   if (ot== 1 )
      ObjectSet( "AveragePriceLine" + IntegerToString (ot), OBJPROP_COLOR , clrRed );
   ObjectCreate ( "signal3" , OBJ_LABEL , 0 , 0 , 0 , 0 , 0 );
   ObjectSet( "signal3" , OBJPROP_XDISTANCE , 500 );
   ChartTimePriceToXY ( 0 , 0 , 0 , avg_price, x, y) ;
   ObjectSet( "signal3" , OBJPROP_YDISTANCE , y + 10 );
   ObjectSetText( "signal3" , "- Средняя цена сетки ордеров на продажу" , 14 , "Times New Roman" , clrRed );
   return (avg_price);
  }


 
EVGENII SHELIPOV # :

İpucu için teşekkürler Rostislav, ama bir şeyi yanlış yapıyorum.

Şimdiye kadar sadece 0Y ekseni boyunca değişikliklere ihtiyacım var, ancak yazıt yatay bir çizgiyle evlenmek istemiyor.

Kodu ve ekran görüntüsünü ekliyorum, bana hatanın nerede olduğunu söyle?

parantezleri unutma

 //+----------------------------------------------------------------------------+
//| Расчет среденй цены (0)-buy (1)-sell ()-all                                |
//+----------------------------------------------------------------------------+
double GetAveragePrice( int ot=- 1 )
  {
   double order_lots = 0 , order_price = 0 , avg_price = 0 ;
   int x = 0 , y = 0 ;
     {
       for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--)
        {
         if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType()==ot||ot< 0 )
                 {
                  order_lots += OrderLots();
                  order_price += OrderOpenPrice() * OrderLots();
                 }
              }
           }
        }
     }
   avg_price = NormalizeDouble (order_price / order_lots, Digits );

   if ( ObjectFind ( 0 , "AveragePriceLine" + IntegerToString (ot))!= 0 )
       ObjectCreate ( 0 , "AveragePriceLine" + IntegerToString (ot), OBJ_HLINE , 0 , 0 , avg_price);
   else
       ObjectSetDouble ( 0 , "AveragePriceLine" + IntegerToString (ot), OBJPROP_PRICE ,avg_price);
   if (ot== 0 )
     {
      ObjectSet( "AveragePriceLine" + IntegerToString (ot), OBJPROP_COLOR , clrLime );
       ObjectCreate ( "signal4" , OBJ_LABEL , 0 , 0 , 0 , 0 , 0 );
      ObjectSet( "signal4" , OBJPROP_XDISTANCE , 500 );
       ChartTimePriceToXY ( 0 , 0 , 0 ,avg_price, x, y);
      ObjectSet( "signal4" , OBJPROP_YDISTANCE , y + 10 );
      ObjectSetText( "signal4" , "- Средняя цена сетки ордеров на покупку" , 14 , "Times New Roman" , clrLime );
     }
   if (ot== 1 )
     {
      ObjectSet( "AveragePriceLine" + IntegerToString (ot), OBJPROP_COLOR , clrRed );
       ObjectCreate ( "signal3" , OBJ_LABEL , 0 , 0 , 0 , 0 , 0 );
      ObjectSet( "signal3" , OBJPROP_XDISTANCE , 500 );
       ChartTimePriceToXY ( 0 , 0 , 0 , avg_price, x, y);
      ObjectSet( "signal3" , OBJPROP_YDISTANCE , y + 10 );
      ObjectSetText( "signal3" , "- Средняя цена сетки ордеров на продажу" , 14 , "Times New Roman" , clrRed );
     }
   return (avg_price);
  }
 
Tretyakov Rostyslav # :

parantezleri unutma

Başka bir şey eksik değil

 
EVGENII SHELIPOV # :

Başka bir şey eksik değil

Günlükte hatalar olmalı
 

diziye kopyala

 MqlRates CopySymb[];  
if ( CopyRates (mSymbol, PERIOD_CURRENT , 0 , 6 ,CopySymb)< 0 ) return ;
Print ( ArrayMaximum ( ??? ) );

Bir dizide maksimum yükseklik nasıl elde edilir?