Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 650

 
AlexeyVik :

Nesnenin parametrelerini başka bir tablodan alması gerektiğini anladım.

başka bir grafik varsa, grafik tanımlayıcısı ile fonksiyon varyantını kullanmasına izin verin.

sorun da yok.

 
sergeev :

başka bir grafik varsa, grafik tanımlayıcısı ile fonksiyon varyantını kullanmasına izin verin.

sorun da yok.

Oldukça doğru, ancak şu ana kadar grafik tanımlayıcıyı kullanmam gerekmedi ve buna yalnızca teorik olarak aşinayım, bu yüzden mevcut grafikte nesneler çizme seçeneğini önerdim.
 
rov_kvn :



Harika! Önemli olan buydu. Teşekkür ederim sevgili arkadaşım!
 
sergeev :

başka bir grafik varsa, grafik tanımlayıcısı ile fonksiyon varyantını kullanmasına izin verin.

sorun da yok.


Anladığım kadarıyla, benim durumumdaki tek seçenek fiyat için ObjectGetDouble() ve tarih için ObjectGetInteger().

Chart_id = 0 ile mevcut TF'deki fiyatı almaya çalışıyorum

 double price1 = ObjectGetDouble ( 0 , "Supply" , 3 );

- olması gerektiği gibi anlam. 0 yerine buradan hem tanımlayıcıları hem de değerleri denedim https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes , ancak 0 döndürüyor. "Doğru" chart_id nasıl görünmelidir?

 
.roman. :

Anladığım kadarıyla, benim durumumdaki tek seçenek fiyat için ObjectGetDouble() ve tarih için ObjectGetInteger().

Chart_id = 0 ile mevcut TF'deki fiyatı almaya çalışıyorum

- olması gerektiği gibi anlam. 0 yerine buradan hem tanımlayıcıları hem de değerleri denedim https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes , ancak 0 döndürüyor. "Doğru" chart_id nasıl görünmelidir?

chart_id = 0 bu bir TF değil, bu mevcut grafik. Gerekli nesneyi içeren grafik için chart_id'yi bulmanız gerekir. Geçici yararsızlıktan dolayı yapmadığım şey bu.
 
.roman. :

Anladığım kadarıyla, benim durumumdaki tek seçenek fiyat için ObjectGetDouble() ve tarih için ObjectGetInteger().

chart_id = 0 ile mevcut TF'deki fiyatı almaya çalışıyorum

 double price1 = ObjectGetDouble ( 0 , "Supply" , 3 );


3 nedir?



- olması gerektiği gibi anlam. 0 yerine buradan hem tanımlayıcıları hem de değerleri denedim https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes , ancak 0 döndürüyor. "Doğru" chart_id nasıl görünmelidir?

grafik kimliğinin TF dönemlerinin bununla ne ilgisi var?


Neyi kullanacağınızı anlamada genellikle gerçekçi olmayan bir boşluğunuz var


Görevinizi tanımlayın, karartmaya gerek yok ve çalının etrafını dokunarak tanımlayın.

tam olarak neye ihtiyacın var? bir nesneden veri almak?

- ObjectGet Neden beğenmediniz?

 
sergeev :

3 nedir?


Dikdörtgenin alt kenarlığının fiyat değeri. https://docs.mql4.com/constants/objectconstants/enum_object_property


grafik kimliğinin TF dönemlerinin bununla ne ilgisi var?

Hiçbir fikrim yok ve. Bu nedenle, rastgele kendim yapmaya çalışıyorum ve soruyorum, çünkü İşe yaramadı.

sergeev :
Görevinizi tanımlayın, karartmaya gerek yok ve çalının etrafını dokunarak tanımlayın. tam olarak neye ihtiyacın var? bir nesneden veri almak? - ObjectGet Neden beğenmediniz?

ciddi ciddi mi soruyorsun Zaten 3 kez, diğer iki zaman diliminden (H4 ve D) dikdörtgenlerin verilerini (2 fiyat koordinatları ve dikdörtgenlerin oluşturulduğu iki zaman koordinatları) almam gerektiğini, üçüncüsü (H1) üzerindeyken yazdım.

ObjectGet uygun değil çünkü onunla başka bir zaman diliminden hiçbir şey alamazsınız.

Hindi tüm zaman dilimlerinde dikdörtgenler çiziyor ve ben ona başka zaman dilimlerinin dikdörtgenlerinin koordinatlarını onlara geçmek zorunda kalmadan aktaracağı bir kod ekliyorum. Zaten başka türlü nasıl anlatılır bilmiyorum.

 
.roman. :

Dikdörtgenin alt kenarlığının fiyat değeri. https://docs.mql4.com/constants/objectconstants/enum_object_property



Hiçbir fikrim yok ve. Bu nedenle, rastgele kendim yapmaya çalışıyorum ve soruyorum, çünkü İşe yaramadı.

ciddi ciddi mi soruyorsun Zaten 3 kez, diğer iki zaman diliminden (H4 ve D) dikdörtgenlerin verilerini (2 fiyat koordinatları ve dikdörtgenlerin oluşturulduğu iki zaman koordinatları) almam gerektiğini, üçüncüsü (H1) üzerindeyken yazdım.

ObjectGet uygun değil çünkü onunla başka bir zaman diliminden hiçbir şey alamazsınız.

Hindi tüm zaman dilimlerinde dikdörtgenler çiziyor ve ben ona başka zaman dilimlerinin dikdörtgenlerinin koordinatlarını onlara geçmek zorunda kalmadan aktaracağı bir kod ekliyorum. Zaten başka türlü nasıl anlatılır bilmiyorum.

Evet, sonunda anladınız, başka bir TF ve başka bir çizelge veya çizelge farklı kavramlar ve buna bağlı olarak sorunları çözmede farklı yaklaşımlar.
 
AlexeyVik :
Evet, sonunda anladınız, başka bir TF ve başka bir çizelge veya çizelge farklı kavramlar ve buna bağlı olarak sorunları çözmede farklı yaklaşımlar.

Bu yüzden sadece fikir varsa, herhangi bir kararı anlamaktan ve kabul etmekten mutlu olurum. Bu yüzden nasıl uygulanacağı konusunda tavsiye istiyorum.
 
Top2n :

Teşekkür ederim! Seni anladım. OrderSelect'te bir hata olmadıkça, devam dışında nasıl durdurulacağı net değildir.

Mesajı geç sildi, anlatıldığı gibi hemen hemen aynısını yaptı.

Bazen bir dönüş değeri ile bir hata bayrağını birleştirmek mümkündür. Anlamına göre belirli bir değerin bir hata işareti olarak alınabileceği durumlarda. Örneğin, ortalama maliyet 0.

Ardından, OrderSelect() bir hata bayrağı döndürür döndürmez, fonksiyonumuz hemen bir hata bayrağı döndürür:

 #property strict

/******************************************************************************/
double CenaUsrednenija( const int type, const int Magic){
   double nn = 0 , bb = 0 ;

   for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--)
  {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
    {
       if (OrderSymbol() == Symbol () && OrderType() == type && OrderMagicNumber() == Magic)
      {
         double op = OrderOpenPrice();
         double llot = OrderLots();

        bb += op * llot;
        nn += llot;
         Print ( "  type = " , type, " Цена открытия = " , op, " Лот = " , llot, " itog = op * llot = " , op * llot, " factb = bb / nn = " , bb / nn);
      }
    } else {
       return 0 ; // Цена == 0 - признак ошибки (OrderSelect() не смогла выбрать ордер)
    }
  }

   return nn != 0 ? NormalizeDouble (bb / nn, _Digits ) : 0 ; // Делить на 0 не следует
}

/******************************************************************************/
void OnStart () {
   Print ( "CenaUsrednenija(OP_BUY, 536525) = " , CenaUsrednenija(OP_BUY, 536525 ));
}

Kendim koştum, aldım:

 23 : 32 : 03 Script 1 EURUSD,H1: loaded successfully
23 : 32 : 03 1 EURUSD,H1: initialized
23 : 32 : 03 1 EURUSD,H1:   type = 0 Цена открытия = 1.36626 Лот = 0.1 itog = op * llot = 0.136626 factb = bb / nn = 1.36626
23 : 32 : 03 1 EURUSD,H1:   type = 0 Цена открытия = 1.36931 Лот = 0.1 itog = op * llot = 0.136931 factb = bb / nn = 1.367785
23 : 32 : 03 1 EURUSD,H1: CenaUsrednenija(OP_BUY, 536525 ) = 1.36779
23 : 32 : 03 1 EURUSD,H1: uninit reason 0
23 : 32 : 03 Script 1 EURUSD,H1: removed

Gerçek gibi görünüyor...

Evet, bu Print() hata ayıkladığı için varsayımsal bir 0'a bölünmeyi önlemek için Print()'te koşullu bir ifade kullanmadım...