Çaydanlıktan gelen sorular - sayfa 244

 
paladin800 :
Çok para birimli bir Uzman Danışman yazıyorum, burada enstrüman adı, Symbol0="EURUSD" dizesi gibi giriş parametrelerinde belirtilmiş. Yanlışlıkla adını yazarsam, ticaret gitmez. Soru: Aracın adlarını komisyoncu tarafından sağlanan araçlarla karşılaştıracak bir işlev var mı?
Hayır. Kendiniz kontrol etmelisiniz.
 
paladin800 : Soru: Aracın adlarını komisyoncu tarafından sağlanan araçlarla karşılaştıracak bir işlev var mı?
Soru, çıktıda ne görmek istediğinizdir. Prensipte, bir enstrümanın sembolik adını parametrelerinden biri olarak kullanan herhangi bir standart fonksiyon, kullanıcı tarafından belirtilen adı, aracının enstrümanlarının adlarıyla "karşılaştırır". Ve bu tür işlevler için ERR_MARKET_UNKNOWN_SYMBOL (4301) hatası bile sağlanır.
 
Yedelkin :
Soru, çıktıda ne görmek istediğinizdir. Prensipte, bir enstrümanın sembolik adını parametrelerinden biri olarak kullanan herhangi bir standart fonksiyon, kullanıcı tarafından belirtilen adı, aracının enstrümanlarının adlarıyla "karşılaştırır". Ve bu tür işlevler için ERR_MARKET_UNKNOWN_SYMBOL (4301) hatası bile sağlanır.
Prensipte evet, gösterge tutamacı var olmayan bir sembol için arandığında bir hata üretilir. Genel olarak, şu anda bir uyarıda giriş parametrelerinde bir hata mesajı görüntüleyebilirim.
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
paladin800 : Prensip olarak, evet, gösterge kolu daha sonra var olmayan bir sembol için arandığında bir hata atılır. Genel olarak, şu anda bir uyarıda giriş parametrelerinde bir hata mesajı görüntüleyebilirim.
Ayrıca, giriş dizisi parametrelerinin belirlenmesinin doğruluğunu hemen kontrol etmesi için kendi mini işlevinizi de yazabilirsiniz. Hata denetimiyle birlikte SymbolSelect(...,true) veya SymbolInfoString (..., SYMBOL_DESCRIPTION, ... ) gibi bir şey kullanın. Onlar. Carlson'un dediği gibi "öz" doğrulamayı uygulayın.
 
Herkese iyi günler.

Daha fazla işleme ve görselleştirme için bir kene toplama göstergesi yapmaya çalışıyorum. MT5 AlpariUK Sürüm 5.0 Yapı 756
Hesapla üzerinde işlenirken test göstergesi , geçerli BID, ASK, LAST, VOLUME, tick_volume değerlerini yazdırır.

 //+------------------------------------------------------------------+
//|                                                TickCollector.mq5 |
//|                                             Copyright 2013, MZen |
//|                                             http://www.almex.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MZen"
#property link       "http://www.almex.net"
#property version   "1.00"
#property indicator_chart_window


string    time_toprint, tick_bid, tick_ask, tick_last, tick_vol;
string    par1, par2, par3;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---

            time_toprint = TimeToString ( SymbolInfoInteger ( _Symbol , SYMBOL_TIME ),TIME_DATE|TIME_SECONDS);
            tick_bid = DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_BID ), _Digits );
            tick_ask = DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), _Digits );            
            tick_last = DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_LAST )); 
            tick_vol = IntegerToString ( SymbolInfoInteger ( _Symbol , SYMBOL_VOLUME ));
            
            par1 = IntegerToString (tick_volume[(rates_total- 1 )]);
            
             Print ( "Server Time=" ,time_toprint, "   " , "Bid=" ,tick_bid, "   " , "Ask=" ,tick_ask, "   Price=" ,tick_last, "  Volume=" ,tick_vol, "  Tick volume=" ,par1);
           
//--- return value of prev_calculated for next call
   return (rates_total);
  }

//+------------------------------------------------------------------+

Sonuç:

2013.03.03 19:45:59 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:46:03 Bid=93.680 Satış=93.689 Fiyat=93.68000000 Hacim=1000000 Tick hacmi=5
2013.03.03 19:45:59 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:46:03 Bid=93.680 Satış=93.689 Fiyat=93.68000000 Hacim=1000000 Tick hacmi=4
2013.03.03 19:45:59 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:46:03 Bid=93.681 Satış=93.691 Fiyat=93.68100000 Hacim=3000000 Tick hacmi=4
2013.03.03 19:45:59 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:46:03 Bid=93.681 Satış=93.691 Fiyat=93.68100000 Hacim=3000000 Tick hacmi=4
2013.03.03 19:45:58 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:46:02 Bid=93.682 Satış=93.691 Fiyat=93.68200000 Hacim=2000000 Tick hacmi=3
2013.03.03 19:45:58 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:46:02 Bid=93.682 Satış=93.691 Fiyat=93.68200000 Hacim=2000000 Tick hacmi=3
2013.03.03 19:45:57 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:46:01 Bid=93.683 Satış=93.693 Fiyat=93.68300000 Hacim=1000000 Tick hacmi=2
2013.03.03 19:45:57 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:46:01 Bid=93.683 Ask=93.693 Fiyat=93.68300000 Hacim=1000000 Tick hacmi=1
2013.03.03 19:45:56 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:46:00 Bid=93.689 Satış=93.696 Fiyat=93.68900000 Hacim=570000 Tick hacmi=1
2013.03.03 19:45:56 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:46:00 Bid=93.689 Satış=93.696 Fiyat=93.68900000 Hacim=570000 Tick hacmi=1
2013.03.03 19:45:55 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:59 Bid=93.685 Satış=93.695 Fiyat=93.68500000 Hacim=1800000 Tick hacmi=53
2013.03.03 19:45:54 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:58 Bid=93.685 Satış=93.695 Fiyat=93.68500000 Hacim=1700000 Tick hacmi=52
2013.03.03 19:45:54 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:58 Bid=93.685 Satış=93.695 Fiyat=93.68500000 Hacim=1500000 Tick hacmi=51
2013.03.03 19:45:54 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:58 Bid=93.685 Satış=93.695 Fiyat=93.68500000 Hacim=1500000 Tick hacmi=51
2013.03.03 19:45:53 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:57 Bid=93.685 Ask=93,693 Fiyat=93.68500000 Hacim=500000 Tick hacmi=50
2013.03.03 19:45:52 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:56 Bid=93.685 Ask=93.693 Fiyat=93.68500000 Hacim=400000 Tick hacmi=49
2013.03.03 19:45:52 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:56 Bid=93.685 Ask=93.693 Fiyat=93.68500000 Hacim=200000 Tick hacmi=48
2013.03.03 19:45:52 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:56 Bid=93.685 Ask=93.693 Fiyat=93.68500000 Hacim=200000 Tick hacmi=48
2013.03.03 19:45:51 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:55 Bid=93.685 Ask=93.691 Fiyat=93.68500000 Hacim=200000 Tick hacmi=47
2013.03.03 19:45:51 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:55 Bid=93.685 Ask=93.691 Fiyat=93.68500000 Hacim=1000000 Tick hacmi=46
2013.03.03 19:45:51 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:55 Bid=93.685 Ask=93.691 Fiyat=93.68500000 Hacim=1000000 Tick hacmi=46
2013.03.03 19:45:50 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:54 Bid=93.680 Satış=93.691 Fiyat=93.68000000 Hacim=1000000 Tick hacmi=45
2013.03.03 19:45:50 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:54 Bid=93.680 Satış=93.691 Fiyat=93.68000000 Hacim=1000000 Tick hacmi=45
2013.03.03 19:45:48 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:45:52 Bid=93.682 Satış=93.691 Fiyat=93.68200000 Hacim=1000000 Tick hacmi=44

Görünüşe göre onCalculate çoğu zaman tik başına iki kez ateşlenir ve tik_haciminin tik hacmiyle hiçbir ilgisi yoktur. Yeni bir döneme geçildiğinde 1'e sıfırlanır. Aynı değer 1, 2, 3 kez tekrarlanabilir.

Kontrol etmek için, keneleri ve kendi göstergesini basan EA'yı aynı anda başlattım.

Sonuç:

2013.03.03 19:51:56 Keneler (USDJPY,M1) 2013.03.03 19:51:56 93.684 93.677
2013.03.03 19:51:56 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:52:00 Bid=93.677 Ask=93.684 Fiyat=93.67700000 Hacim=1000000 Tick hacmi=2
2013.03.03 19:51:56 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:52:00 Bid=93.677 Ask=93.684 Fiyat=93.67700000 Hacim=1000000 Tick hacmi=2
2013.03.03 19:51:56 Keneler (USDJPY,M1) 2013.03.03 19:51:56 93.683 93.674
2013.03.03 19:51:56 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:52:00 Bid=93.674 Ask=93.683 Fiyat=93.67400000 Hacim=3000000 Tick hacmi=1
2013.03.03 19:51:56 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:52:00 Bid=93.674 Ask=93.683 Fiyat=93.67400000 Hacim=3000000 Tick hacmi=1
2013.03.03 19:51:55 Keneler (USDJPY,M1) 2013.03.03 19:51:55 93.682 93.674
2013.03.03 19:51:55 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:59 Bid=93.674 Satış=93.682 Fiyat=93.67400000 Hacim=3000000 Tick hacmi=37
2013.03.03 19:51:55 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:59 Bid=93.674 Ask=93.682 Fiyat=93.67400000 Hacim=3000000 Tick hacmi=37
2013.03.03 19:51:51 Keneler (USDJPY,M1) 2013.03.03 19:51:51 93.680 93.670
2013.03.03 19:51:51 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:55 Bid=93.670 Satış=93.680 Fiyat=93.67000000 Hacim=1000000 Tick hacmi=36
2013.03.03 19:51:51 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:55 Bid=93.670 Satış=93.680 Fiyat=93.67000000 Hacim=1000000 Tick hacmi=36
2013.03.03 19:51:50 Keneler (USDJPY,M1) 2013.03.03 19:51:50 93.678 93.669
2013.03.03 19:51:50 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:54 Bid=93.669 Satış=93.678 Fiyat=93.66900000 Hacim=3500000 Tick hacmi=35
2013.03.03 19:51:49 Keneler (USDJPY,M1) 2013.03.03 19:51:49 93.678 93.669
2013.03.03 19:51:49 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:53 Bid=93.669 Ask=93.678 Fiyat=93.66900000 Hacim=3000000 Tick hacmi=34
2013.03.03 19:51:49 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:53 Bid=93.669 Ask=93.678 Fiyat=93.66900000 Hacim=3000000 Tick hacmi=34
2013.03.03 19:51:46 Keneler (USDJPY,M1) 2013.03.03 19:51:46 93.680 93.672
2013.03.03 19:51:46 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:50 Bid=93.672 Ask=93.680 Fiyat=93.67200000 Hacim=1000000 Tick hacmi=33
2013.03.03 19:51:46 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:50 Bid=93.672 Ask=93.680 Fiyat=93.67200000 Hacim=1000000 Tick hacmi=33
2013.03.03 19:51:44 Keneler (USDJPY,M1) 2013.03.03 19:51:44 93.681 93.672
2013.03.03 19:51:44 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:48 Bid=93.672 Satış=93.681 Fiyat=93.67200000 Hacim=1000000 Tick hacmi=32
2013.03.03 19:51:44 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:48 Bid=93.672 Satış=93.681 Fiyat=93.67200000 Hacim=1000000 Tick hacmi=32
2013.03.03 19:51:44 Keneler (USDJPY,M1) 2013.03.03 19:51:44 93.683 93.673
2013.03.03 19:51:44 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:48 Bid=93.673 Satış=93.683 Fiyat=93.67300000 Hacim=1000000 Tick hacmi=31
2013.03.03 19:51:44 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:48 Bid=93.673 Satış=93.683 Fiyat=93.67300000 Hacim=1000000 Tick hacmi=30
2013.03.03 19:51:42 Keneler (USDJPY,M1) 2013.03.03 19:51:42 93.683 93.674
2013.03.03 19:51:42 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:46 Bid=93.674 Satış=93.683 Fiyat=93.67400000 Hacim=3000000 Tick hacmi=30
2013.03.03 19:51:42 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:46 Bid=93.674 Satış=93.683 Fiyat=93.67400000 Hacim=3000000 Tick hacmi=30
2013.03.03 19:51:41 Keneler (USDJPY,M1) 2013.03.03 19:51:41 93.683 93.673
2013.03.03 19:51:41 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:45 Bid=93.673 Satış=93.683 Fiyat=93.67300000 Hacim=1000000 Tick hacmi=29
2013.03.03 19:51:41 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:45 Bid=93.673 Satış=93.683 Fiyat=93.67300000 Hacim=1000000 Tick hacmi=29
2013.03.03 19:51:40 Keneler (USDJPY,M1) 2013.03.03 19:51:40 93.682 93.673
2013.03.03 19:51:40 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:44 Bid=93.673 Satış=93.682 Fiyat=93.67300000 Hacim=1000000 Tick hacmi=28
2013.03.03 19:51:40 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:44 Bid=93.673 Satış=93.682 Fiyat=93.67300000 Hacim=1000000 Tick hacmi=28
2013.03.03 19:51:39 Keneler (USDJPY,M1) 2013.03.03 19:51:39 93.681 93.671
2013.03.03 19:51:39 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:43 Bid=93.671 Satış=93.681 Fiyat=93.67100000 Hacim=4000000 Tick hacmi=27
2013.03.03 19:51:38 Keneler (USDJPY,M1) 2013.03.03 19:51:38 93.681 93.671
2013.03.03 19:51:38 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:42 Bid=93.671 Satış=93.681 Fiyat=93.67100000 Hacim=6000000 Tick hacmi=26
2013.03.03 19:51:38 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:42 Bid=93.671 Satış=93.681 Fiyat=93.67100000 Hacim=6000000 Tick hacmi=26
2013.03.03 19:51:37 Keneler (USDJPY,M1) 2013.03.03 19:51:37 93.682 93.674
2013.03.03 19:51:37 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:41 Bid=93.674 Satış=93.682 Fiyat=93.67400000 Hacim=1000000 Tick hacmi=25
2013.03.03 19:51:37 TestTickCollector (USDJPY,M1) Sunucu Saati=2013.03.04 02:51:41 Bid=93.674 Satış=93.682 Fiyat=93.67400000 Hacim=1000000 Tick hacmi=24

Soru: Kene neden kopyalanır ve ondan nasıl kurtulur?

OnCalculate yalnızca fiyat değiştiğinde değil, aynı zamanda başka bir nedenle de tetiklenirse, onCalculate'e geçiş nedeni nasıl belirlenir? Ve onCalculate'i tetiklemenin tüm nedenleri nerede açıklanmıştır?

Tick hacminde neyi yanlış yapıyorum?

Bir şey mi kaçırıyorum?

Bir soru daha - bilgisayarımdaki zaman oldukça geride kalıyor. İki gün arasındaki fark 4 saniyeydi. Çözüm için hangi yöne bakmalı?

Herkese teşekkürler.

 

Saygın izleyiciler için bir soru daha:


https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_integer adresindeki belgelerde

diyor:

SYMBOL_BID Teklif - satılık en iyi teklif

SYMBOL_ASK Sor - en iyi satın alma teklifi


Anladığım kadarıyla, Teklif en iyi tekliftir Al ve Sor, satmak için en iyi tekliftir.

İşte ServiceDesk'in yanıtladığı şey
Destek Ekibi 2013.03.04 07:39


Anlamı


SYMBOL_BID Bid - en iyi satış teklifi (şu anda satabileceğiniz en iyi fiyat)

SYMBOL_ASK Sor - en iyi satın alma teklifi (şu anda alabileceğiniz en iyi fiyat)




Tartışmaya sunuyorum: kim haklı?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
MZen :

Saygın izleyiciler için bir soru daha:


https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_integer adresindeki belgelerde

diyor:

SYMBOL_BID Teklifi - satılık en iyi teklif

SYMBOL_ASK Sor - en iyi satın alma teklifi


Anladığım kadarıyla, Teklif en iyi tekliftir Al ve Sor, satmak için en iyi tekliftir.

İşte ServiceDesk'in yanıtladığı şey
Destek Ekibi 2013.03.04 07:39
Anlamı

MZen

SYMBOL_BID Bid - en iyi satış teklifi (şu anda satabileceğiniz en iyi fiyat)

SYMBOL_ASK Sor - en iyi satın alma teklifi (şu anda alabileceğiniz en iyi fiyat)




Tartışmaya sunuyorum: kim haklı?

Kelime oyunu - her iki durumda da bir alıcı var, her iki durumda da hangi pozisyonun dikkate alınacağına bağlı olarak bir satıcı var
 
lazarev-dm :
Kelime oyunu - her iki durumda da bir alıcı var, her iki durumda da hangi pozisyonun dikkate alınacağına bağlı olarak bir satıcı var

Anladım!

"Benden satın al" dediğimde - bu bir satın alma teklifidir!

Ve "Beni sat" dediğimde - o zaman bu bir satış teklifidir!

çok komik!

 

OOP öğrenmeye başlıyorum. Uzmanlar için soru - uzman kodunun en sonuna bir sınıf koymak mümkün mü (işlevlerin yanı sıra),

 int OnInit ()
  {
   return ( 0 );
  }
//---
void OnTick ()
  {
   ...
  }
//---
void OnDeinit ( const int reason)
  {
   ...
  }
//---
   class CName 
     {
      ...
     };

sınıfı aşağıdaki gibi koda bağlamak yerine:

 #include <Trade\Trade.mqh>
 
paladin800 :

OOP öğrenmeye başlıyorum. Uzmanlar için soru - uzman kodunun en sonuna bir sınıf koymak mümkün mü (işlevlerin yanı sıra),

sınıfı aşağıdaki gibi koda bağlamak yerine:

Teorik olarak, bu bir sınıf değil, sadece program kodundan alınmış bir fonksiyon olacak (bu arada, OOP yerine kullanıyorum, benim için daha uygun)