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

 
Alexey Kozitsyn :

Mouse hareketi olayı kesinlikle tetiklenmez. Gerisi bence aynı.

Peki ya danışman?
 
Artyom Trishkin :
Peki ya danışman?

Aynı şey...

 
Alexey Viktorov :

Daha önce cevaplandı...

Ancak, bir el feneri miktarına sahip olmamak daha iyidir, ancak bir kopya ile idare etmeye çalışmak için yaklaşık olarak maksimumdur.

Örnek kod yazmayacağım. Normal bir programcının sadece bir ipucuna ihtiyacı vardır. İşte örnek bir algoritma:

  1. Kanalın geçtiği mesafedeki yaklaşık çubuk sayısını belirleyin. 15 olsun.
  2. Her iki gösterge arabelleğini kopyalayın.
  3. CopyRates() kullanarak çubuk değerlerini kopyalama
  4. Döngüde, düşük çubukları kanalın alt sınırı ile karşılaştırırken aynı anda kanalın üst kenarlığı ve yüksek çubukların değerini karşılaştırmaya başlıyoruz. Kavşaklardan biri bulunursa, çubuk indeksini bir değişkende saklarız ve ikinci kesişimi aramaya devam ederiz. Çapraz çubuk indekslerinin her iki değişkeni de değere sahip olduğunda döngüden çıkarız.

Böylece, bir kopya ve bir döngüde, gerekirse iki kesişme bulunabilir. ArraySetAsSeries()'e bile gerek yoktur, çünkü kavşağı bulmak mümkündür ve bence çubuk numarasını değil, zamanını hatırlamak daha iyidir. Çubuğun zamanı bilinmesine rağmen, sayısını belirlemekte zorluk yoktur.

Soruya dikkat: Ne daha hızlı çalışacak, gösterge arabelleğini 1 değer kopyalayıp yüksek çubuğu 1 kopyalayıp bu değerleri karşılaştıran bir döngü veya bir kerelik belirli bir miktarı kopyalayıp iki dizinin değerlerini karşılaştıran bir döngü herbiri?

Anladığım kadarıyla, kodun başındaki çubuklarla ilgili belirli miktarda veriyi kopyalamak ve ardından bu verilerle çalışmak olan konseptten sapmamayı öneriyorum - yoksa bir istisna mı öneriyorsunuz?

Ayrıca benim programcı olduğum fikrine nereden kapıldın?

Tahmin etmenin gerekli olduğunu düşünmüyorum - ne daha hızlı olacak, bazen cevap açık olmayabilir - sadece deneyim bu tür soruları cevaplayabilir.

 
Vladimir Karputov :

Daha dün yazdı:

Görev:

her onayda açık, yüksek, düşük, yakın ve zaman öğelerinin "InpCountCopy"sini alın.

Uygulama:

  1. "0"dan "InpCountCopy-1"e döngü - döngüde her seferinde bir açık, yüksek, düşük, kapalı ve zaman alırız.
  2. bir seferde öğeleri MqlRates "InpCountCopy" yapısına alırız ve ardından yapı boyunca döngü yaparız.

Fırsatlar:

nasıl kontrol edeceğinizi seçebilirsiniz: OnTick'te veya OnTimer'da (1 saniye).

Teşekkürler, kodu anlamaya çalışacağım.
 

Bana bu kodun neden henüz tarihte olmayan bir bilet bulduğunu söyle

   HistorySelect ( 0 , TimeCurrent ()); 
   for ( int i= HistoryOrdersTotal ()- 1 ; i>= 0 ; i--) {
   string OrdTick= IntegerToString ( HistoryOrderGetTicket (i));
   if (OrdTick== "63425010" ) Print (OrdTick);
  }
 2017.07 . 24 23 : 58 : 33.514 RE (EURGBP.m,H1)       63425010


 
Vitaly Muzichenko :

Bana bu kodun neden henüz tarihte olmayan bir bilet bulduğunu söyle


Kapalı bir anlaşma (OUT) aramayı denediniz mi? Bir arama emri vardı - onu görebilirsin.

 
Vitaly Muzichenko :

Bana bu kodun neden henüz tarihte olmayan bir bilet bulduğunu söyle


Her şey doğru:

Bir Emir arıyorsunuz ve bir Pozisyon açma Emri = 63425010 zaten işini yaptı ve Tarihte.

Ve benim Siparişimde Bilet ve Pozisyon Bileti aynıdır, bu da sizi yoldan çıkardı.

Konumları ayrıştırmak istiyorsanız, PositionSelect() öğesini kullanın ve ardından özelliklerini ayrıştırın.

 

Neye ihtiyacın var:

Bir emir gönderildi, yanıt olarak bir pozisyon bileti alındı, ardından grafikte "pozisyon bileti" adında bir nesne çizildi (değiştirme belirtilmedi). Tabloda sırasıyla birkaç pozisyon açarsanız, bilet isimlerine sahip birkaç nesne vardır ve bunlardan birini kapatırsanız, tüm nesneler silinir ve yalnızca kapalı bilete sahip nesneyi silmeniz gerekir. Tarih. Silme işlevi OnTrade tarafından çalışır

 
Vitaly Muzichenko :

Neye ihtiyacın var:

Bir emir gönderildi, yanıt olarak bir pozisyon bileti alındı, ardından grafikte "pozisyon bileti" adında bir nesne çizildi (değiştirme belirtilmedi). Tabloda sırasıyla birkaç pozisyon açarsanız, bilet isimlerine sahip birkaç nesne vardır ve bunlardan birini kapatırsanız, tüm nesneler silinir ve yalnızca kapalı bilete sahip nesneyi silmeniz gerekir. Tarih. Silme işlevi OnTrade tarafından çalışır


Peki neye ihtiyacınız var, bir sipariş bileti mi yoksa bir pozisyon bileti mi?

 
prostotrader :

Peki neye ihtiyacınız var, bir sipariş bileti mi yoksa bir pozisyon bileti mi?

zaten geçmişte olan bir biletle nesneleri silmeniz gerekir, ancak hala piyasada olanlara dokunmayın

Çoğalt :

   HistorySelect ( 0 , TimeCurrent ()); 
   for ( int i= HistoryOrdersTotal ()- 1 ; i>= 0 ; i--) {
   string OrdTick= IntegerToString ( HistoryOrderGetTicket (i));
   if (OrdTick== "63425010" ) Print (OrdTick);
  }
 2017.07 . 24 23 : 58 : 33.514 RE (EURGBP.m,H1)       63425010