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

 
Roman :

Çünkü H1'in altındaki dakika zaman dilimleri doğru değerleri döndürür.
Yardımda açıklandığı gibi, sürekli saçmalıktan değil , zaman çerçevesinin değerini döndürürler.

ne saçmalığı?

Gözlerinizi silin, ancak ENUM_TIMEFRAMES öğesinin dahili temsilini gösterdim

set bit no.16, haftalık ve aylık zaman dilimlerini tanımlar

15 numaralı set, saatlik zaman dilimlerini ve D1 = 100000000011000 --> 11000 --> 24 zaman dilimlerini tanımlar, yani geliştiriciler D1'i 24 saat olarak karşılaştırdı, kalan saatlik zaman dilimleri ondalık sisteme dönüşüme karşılık gelir

dakika zaman dilimleri için, saatlik zaman dilimlerine benzer, ancak yüksek bitler sıfırlanır


başka bir soru, ENUM_TIMEFRAMES döndüren işlevlerin dakika cinsinden TF zamanını döndürmesine karar vermiş olmanızdır - bu böyle değil, bu işlevler ENUM_TIMEFRAMES numaralandırmasını döndürür - ne daha fazla ne daha az, sadece ENUM_TIMEFRAMES

https://www.mql5.com/ru/docs/basis/types/integer/enumeration yardımından örneğe bakın

numaralandırmalar, numaralandırmanın bir üyesine herhangi bir sabit değer atanmasıyla da olabilir.

İhtiyaçlarınıza göre kendi listenizi oluşturabilirsiniz.

 

Çok teşekkürler! Yardımcı olan wchar_t oldu! Bunu okudum, karakterin aksine karakter başına 2 bayt depolar.


 extern "C" __declspec(dllexport) wchar_t* __stdcall ToString(wchar_t* str)

{

        str = L " - 889 - dsa - просто!" ;

         return L "--- Привет! ---" ;

}


Doğru, fonksiyon parametresi "str" hala kendisine atanan değeri döndürmüyor ... Acaba neden? ..

 

Merhaba, sorunu nasıl çözeceğimi söyle. Grafik üzerinde birçok seviye (satır) oluşturan bir göstergeye (donanım bağlı) dayalı bir Expert Advisor yazmak istiyorum, satır sayısı 500'ü bulabiliyor.

Tek uygulamak istediğim, fiyat grafikteki çizgileri geçtiğinde bir emir veya başka bir olay (örneğin bir uyarı veya mesaj) açmak. Ancak sorun, göstergenin herhangi bir değer döndürmemesi ve yalnızca yatay çizgiler (isimleri olan nesneler) çizmesidir - grafikte başka bir şey yoktur.

"_price" değişkeni aracılığıyla fiyat seviyelerini alan iCustom işlevi aracılığıyla bir çözüm bulmaya çalıştım, ancak EA, satırlara dokunduğunda fırsatları açmıyor. Neyi yanlış yaptığımı anlamıyorum.

 void OnTick ()
  {
  
ENUM_OBJECT typeObj = OBJ_HLINE ;
string    ArrLines[];
  
   double 
  Price;
  Price=Bid;
  
//ВАРИАНТ 1 (не получился). Я хотел, чтобы ордер открывался при пересечении любой из линий на графике   
  
//вызовем индикатор: (пара, таймфрейм, индикатор...)
iCustom ( Symbol (), 0 , "ITS-Level Gun" , 0 , 0 ); 

int i, k = ObjectsTotal ();

ArrayResize (ArrLines, 0 );

//в цикле перебираем все объекты на графике
for (i=k- 1 ; i>= 0 ; i--) {
  
   //узнаем имя объекта на графике
   string _name = ObjectName (i);

{

     //узнаем координату цены линии
     double _price = NormalizeDouble ( ObjectGetDouble ( 0 , _name, OBJPROP_PRICE ), Digits );
  } 
}

if (Price==_price)
{ OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 3 ,Bid- 15 * Point ,Bid+ 15 * Point );}

     // И ВСЁ, дальше не знаю, что делать


     
    } 
 
  }

SEÇENEK 2. Ayarlarda belirttiğim satırda emir açılır - danışman parametrelerinde belirttiğim seviyede çalışır ve fırsatlar açar


 extern string h= "@Line_week_open-0" ; //ИЗМЕНЕНИЕ ННАЗВАНИЯ ЛИНИИ В СВОЙСТВАХ СОВЕТНИКА.ВАРИАНТ 2.

if ( ObjectFind (h)>- 1 )

    {

     double prise = ObjectGet(h, OBJPROP_PRICE1);

     if (Price==prise)

      { OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 3 ,Bid- 15 * Point ,Bid+ 15 * Point );}       

    } 
Dosyalar:
we3s6_kgeqx.jpg  151 kb
 
Fib0 RU :

Merhaba, sorunu nasıl çözeceğimi söyle. Grafik üzerinde birçok seviye (satır) oluşturan bir göstergeye (donanım bağlı) dayalı bir Expert Advisor yazmak istiyorum, satır sayısı 500'ü bulabiliyor.

Tek uygulamak istediğim, fiyat grafikteki çizgileri geçtiğinde bir emir veya başka bir olay (örneğin bir uyarı veya mesaj) açmak. Ancak sorun, göstergenin herhangi bir değer döndürmemesi ve yalnızca yatay çizgiler (isimleri olan nesneler) çizmesidir - grafikte başka bir şey yoktur.

"_price" değişkeni aracılığıyla fiyat seviyelerini alan iCustom işlevi aracılığıyla bir çözüm bulmaya çalıştım, ancak EA, satırlara dokunduğunda fırsatları açmıyor. Neyi yanlış yaptığımı anlamıyorum.

SEÇENEK 2. Ayarlarda belirttiğim satırda emir açılır - danışman parametrelerinde belirttiğim seviyede çalışır ve fırsatlar açar



 for ( int i = ObjectsTotal () - 1 ; i >= 0 ; i--) {

         // все что не горизонтальные линии - игнорируем

         if (ObjectType( ObjectName (i)) != OBJ_HLINE ) continue ; 

         double PriceLine = NormalizeDouble (ObjectGet( ObjectName (i), OBJPROP_PRICE1), Digits ());
	
	// измените условие Bid == PriceLine
        
	if (Bid == PriceLine) {

                 // ..... тут что-то происходит ... 

        }
}


AMA, ya Teklif herhangi bir nedenle çizgiyi atlarsa ve çizginin fiyatına eşit değilse , o zaman ne? - bir şey eylem ... Ancak bu durumda, "izin verilen" bir kavşak sağlamayı unutmayın, çünkü eğer piyasa büyük bir Boşluk ile açılır veya sadece büyük bir fiyat sıçraması meydana gelir, o zaman bir çok satırda bir baskınla açılır ve muhtemelen istediğiniz yerde olmaz. Kavşağın izin verilenden daha büyük olmasına izin verin - yalnızca bir mesaj görüntülenir, ..

 
Vadim Lin :



AMA, ya Teklif herhangi bir nedenle çizgiyi atlarsa ve çizginin fiyatına eşit değilse , o zaman ne? - bir şey eylem ... Ancak bu durumda, "izin verilen" bir kavşak sağlamayı unutmayın, çünkü eğer piyasa büyük bir Boşluk ile açılır veya sadece büyük bir fiyat sıçraması meydana gelir, o zaman bir çok satırda bir baskınla açılır ve muhtemelen istediğiniz yerde olmaz. Kesişmenin izin verilen değerden büyük olmasına izin verin - yalnızca bir mesaj görüntülenir, ..

Sorun kodu.

 
Igor Makanu :

ne saçmalığı?

Gözlerinizi silin, ancak ENUM_TIMEFRAMES öğesinin dahili temsilini gösterdim

set bit no.16, haftalık ve aylık zaman dilimlerini tanımlar

15 numaralı set, saatlik zaman dilimlerini ve D1 = 100000000011000 --> 11000 --> 24 zaman dilimlerini tanımlar, yani geliştiriciler D1'i 24 saat olarak karşılaştırdı, kalan saatlik zaman dilimleri ondalık sisteme dönüşüme karşılık gelir

dakika zaman dilimleri için, saatlik zaman dilimlerine benzer, ancak yüksek bitler sıfırlanır


başka bir soru, ENUM_TIMEFRAMES döndüren işlevlerin dakika cinsinden TF zamanını döndürmesine karar vermiş olmanızdır - bu böyle değil, bu işlevler ENUM_TIMEFRAMES numaralandırmasını döndürür - ne daha fazla ne daha az, sadece ENUM_TIMEFRAMES

https://www.mql5.com/ru/docs/basis/types/integer/enumeration yardımından örneğe bakın

numaralandırmalar, numaralandırmanın bir üyesine herhangi bir sabit değer atanmasıyla da olabilir.

İhtiyaçlarınıza göre kendi listenizi oluşturabilirsiniz.

Igor, evet, sabit değerler hakkında uzun zamandır açık.
İşte bahsettiğimiz şey bu, dönüş değeri olarak 15 ve 16 bitin anlamı nedir. Brad ve hepsi.
Bazı nedenlerden dolayı, M30'dan önce , ENUM sabitleri TIMEFRAME VALUES !!!!
Ve sonra zaten bazı bitlerin değerlerine karşılık geliyor . Peki, mantık nerede arkadaşlar.
Bu nedenle, bu büyük bir hatadır ve kasıtlı olarak bu şekilde yapılırsa sabotaj))
_Period değişkeni tüm bu zaman çerçevesi değerlerini zaten içeriyor, bunların ek olarak ENUM numaralandırmasından dönüştürülmeleri gerekmez.
Bu nedenle bu sabit değerler yardımda belirtildiği gibi zaman aralığı değerlerine karşılık gelmelidir. BİTAM değil!

 
Roman :

Karantina zamanı. Arama, bu konuda söylenen her şeyi toplayın ve sağlığınıza okuyun. Neden başkalarının yazılan her şeyi tekrar etmesi gerektiğine karar verdiniz?

 
Alexey Viktorov :

Karantina zamanı. Arama, bu konuda söylenen her şeyi toplayın ve sağlığınıza okuyun. Neden başkalarının yazılan her şeyi tekrar etmesi gerektiğine karar verdiniz?

Neden kötü kararlara katlanıyorsun? Geliştiricinin düşündüklerini değil, sabitlerin değerlerinin mantıklı bir açıklamasını ilettim.

 
Roman :

Neden kötü kararlara katlanıyorsun? Geliştiricinin düşündüklerini değil, sabitlerin değerlerinin mantıklı bir açıklamasını ilettim.

Görünüşe göre senin için sadece iki görüş var: seninki ve yanlış olan. Bu konuda daha önce yazılmış her şeyi toplayın ve belki size uygun bir açıklama bulacaksınız.
 
Alexey Viktorov :
Görünüşe göre senin için sadece iki görüş var: seninki ve yanlış olan. Bu konuda daha önce yazılmış her şeyi toplayın ve belki size uygun bir açıklama bulacaksınız.

Bu yüzden matematiksel hesaplamalarınızda _Period değişkeninin H1 üzerindeki periyotlarda döndürdüğü değeri kullanmayı deneyin.
Ve kimin hata yaptığını hemen anlayacaksınız.

Neden: