Hatalar, hatalar, sorular - sayfa 949

 
Renat :
Terminal ve kaynaklarla garip bir ilişkiniz var.

Ana görevi büyük miktarda veriyle verimli bir şekilde çalışmak olduğunda, ticaret terminalinin kaynakları korumak gibi bir görevi yoktur. Ayrıca, sayı kırıcının dört kopyasının VPS'de yeterli giga belleğe sahip olmamasından şikayet edemezsiniz.

Soru bu değil, Win2003x64 sunucusunda (VPS) ve Win7x64 Home'da farklı davranışların olduğu gerçeği.

http://file.karelia.ru/6v55j5/ terminali başlatırken, ayrılan belleğin bu işlem için işletim sisteminin gösterdiğinden çok daha fazla tüketildiğini videonun bağlantısında.

 
olyakish :

Soru bu değil, Win2003x64 sunucusunda (VPS) ve Win7x64 Home'da farklı davranışların olduğu gerçeği.

http://file.karelia.ru/6v55j5/ terminali başlattığınızda, ayrılan bellek bu işlem için işletim sisteminin gösterdiğinden çok daha fazla tüketildiğini videonun bağlantısında.

Her şeyin nasıl yürüdüğü hakkında.

Açıklamak için çok uzun ve terminal ile ilgisi yok. VPS'yi unutun ve kaydetmeyin.

 
Renat :

Her şeyin nasıl yürüdüğü hakkında.

Açıklamak için çok uzun ve terminal ile ilgisi yok. VPS'yi unutun ve kaydetmeyin.

Belki o kadar değil.

Örneğin, terminalin, terminalin kendisinden daha fazlasını tüketen üçüncü taraf hizmetlerini yükseltmesi olabilir. Ve dizüstü bilgisayarımda sadece başlangıçtalar,

o zaman neden bellek terminalin ilk açılışına benzer şekilde tüketilir - hizmeti bir kez başlatmak yeterlidir. (her ne kadar hizmetin terminalin her kopyası için iş parçacığı başlatıp başlatamayacağı tartışmalı olsa da)

Peki, farklı soracağım, eğer sunucu VPS'de 2008 ise, açıklaması uzun sürdüğü için böyle bir etki olmayacak.

 
olyakish :

Belki o kadar değil.

Örneğin, terminalin, terminalin kendisinden daha fazlasını tüketen üçüncü taraf hizmetlerini yükseltmesi olabilir. Ve dizüstü bilgisayarımda sadece başlangıçtalar,

o zaman neden bellek terminalin ilk açılışına benzer şekilde tüketilir - hizmeti bir kez başlatmak yeterlidir. (her ne kadar hizmetin terminalin her kopyası için iş parçacığı başlatıp başlatamayacağı tartışmalı olsa da)

Peki, farklı soracağım, eğer sunucu VPS'de 2008 ise, açıklaması uzun sürdüğü için böyle bir etki olmayacak.

VPS'imde (Win XP), MT4 terminali yaklaşık 200 MB yer kaplıyor.
 
Ve neden (ayarlarda bir onay kutusuyla) terminalin önbellekler için takas kullanmasına izin vermiyorsunuz? Kullanıcı tarafından seçilebilen bir yangın/bellek yükü değiş tokuşu olacaktır.
 

...Basit bir işlem gibi görünüyor ancak pip cinsinden doğru tamsayı değerleri elde edilemiyor. İşte komut dosyası kodu:

 void OnStart () {
//---
   double max_price = NormalizeDouble ( ChartGetDouble ( 0 , CHART_PRICE_MAX ), _Digits );
   double min_price = NormalizeDouble ( ChartGetDouble ( 0 , CHART_PRICE_MIN ), _Digits );
   
   double entry_price, stop_price, profit_price;
   entry_price = NormalizeDouble ((max_price+min_price)/ 2 , _Digits );
   stop_price = NormalizeDouble (entry_price-(entry_price-min_price)/ 2 , _Digits );
   profit_price = NormalizeDouble (max_price-(max_price-entry_price)/ 2 , _Digits );
   
   int stop_pips = int ((entry_price - stop_price)/ _Point );
   int profit_pips = int ((profit_price - entry_price)/ _Point );
   
   Print ( "Entry: " , entry_price, ", Stop: " , stop_price, ", Profit: " , profit_price,
         ", Stop pips: " , stop_pips, ", Profit pips: " , profit_pips);
//---   
}

İşte çalıştırma sonuçları:

2013.03.29 16:42:03 Experiment_Script (EURUSD,H4) Giriş: 1.29445, Stop: 1.28453, Kar: 1.30438, Stop pipleri: 991, Kâr pipleri: 993
2013.03.29 16:41:57 Experiment_Script (GBPUSD,H4) Giriş: 1.50465, Stop: 1.49348, Kar: 1.51583, Stop pip: 1117, Kâr pip: 1117

Ve 992 ve 993 (EURUSD için), 1117 ve 1118 (GBPUSD için) olmalıdır. Demek istediğim, bana doğru sonucu nasıl elde edeceğimi söyle?

 
Rone :

...

2 yerine 2,0'a bölmeyi deneyin.

Bir tamsayı işleminin sonucu bir tamsayıdır ve sonucun double olarak yazılmasını etkilemez.

 
muallch : Neden (ayarlarda işaretli) terminalin önbellekler için takas kullanmasına izin vermiyorsunuz? Kullanıcı tarafından seçilebilen bir yangın/bellek yükü değiş tokuşu olacaktır.
Bu tür soruların hemen Servis Masasına iletilmesi daha iyidir. Aksi takdirde kaybolurlar.
 
fyords : 2 yerine 2,0 ile bölmeyi deneyin .

Hayır, sorun bu değil. Sonuçta, temettü double türündedir .

Sorun büyük olasılıkla şu satırlardan kaynaklanmaktadır:

   int stop_pips = int ((entry_price - stop_price)/ _Point );
   int profit_pips = int ((profit_price - entry_price)/ _Point );
Rhone :
"(entry_price - stop_price)/ _Point" değerini yuvarlamadan (tamsayı) yazdırmayı deneyin.
 

Benzer bir şey yaşayan varsa lütfen bana bildirin.

Bir kod var:

 //+------------------------------------------------------------------+
double date[];
//+------------------------------------------------------------------+
void OnInit ()
{
   ArrayResize (date, 3 );
}
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
{
   Print ( "ArraySize(date)=" , ArraySize (date));
}
//+------------------------------------------------------------------+
Terminalde gerçek zamanlı olarak çalışır:
DH       0        12 : 39 : 43         test (EURGBP.m,M5)       ArraySize (date)= 3
LN       0        12 : 39 : 43         test (EURGBP.m,M5)       ArraySize (date)= 3
DG       0        12 : 39 : 43         test (EURGBP.m,M5)       ArraySize (date)= 3
Ve test cihazında aynı kod başka bir kod üretir:
MN       0        12 : 34 : 21         test (EURGBP.m,M15)     2013.01 . 02 07 : 59 : 59    ArraySize (date)= 0
OG       0        12 : 34 : 21         test (EURGBP.m,M15)     2013.01 . 02 07 : 59 : 59    ArraySize (date)= 0
IM       0        12 : 34 : 21         test (EURGBP.m,M15)     2013.01 . 02 07 : 59 : 59    ArraySize (date)= 0