[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 368

 

Tünaydın!

Bir görev ortaya çıktı, ilk bakışta basit görünüyor, ancak bir şey çalışmıyor. Değerlerin her zaman arka arkaya olduğu bir dizi vardır (bazı durumlarda değerler artan sırada, diğer durumlarda - azalan sırada gidebilir). Belli bir seviye var (kırmızı renkteki şekilde). Kırmızı çizginin seviyesine en yakın olan iki dizi değeri bulmamız gerekiyor. Şekil a) bunlar 0 ve 1 indeksli dizi değerleri olacak Şekil b) 2 ve 1 indeksli dizi değerleri olacak Şekil c) ve f) bunlar dizi değerleri olacak 0 ve 0 endeksleriyle. Şekil d) ve e)'de bunlar, 2 ve 2 endeksli dizinin değerleri olacaktır.

Lütfen bana bu sorunu nasıl çözeceğimi söyle. Şimdiden teşekkürler.

 
Roman. :

O zaman hiç endişelenme - ticaret kriterlerini yerine getirmek için olduğu gibi sadece hindi kodunu uzmana aktarın ve hepsi bu - o zaman baykuşta, bu hindiden aktarılan bu ticaret koşullarına göre, üzerinden pozlar açarsınız. danışman ve bu kadar...
teşekkürler anladım :)
 
skyjet :
teşekkürler anladım :)

Hiç de değil ... herkes BUNU geçti. :-)
 
drknn :

Bugün Cumartesi izin günü. Expert Advisor'ı başlatırsınız, başlatma gerçekleşir, ancak çıkış ve onay işareti olmadığından başlatma işlevi başlatılmaz (yani, Trade() çağrılmaz.). İşleminin doğruluğunu kontrol etmek için, başlatma bloğunda bu fonksiyona bir çağrı koymanız veya test cihazında test etmeniz gerekir.

Bu işlevi Init()'te değiştirdikten ve Print (DayOfWeek()) kontrol kodunu ekledikten sonra, zamanın sunucudan alındığı ve sunucunun Cuma günü olduğu ortaya çıktı ...

değiştirildi

 if (DayOfWeek()== 0 || DayOfWeek()== 6 )

üzerinde

   if ( TimeDayOfWeek ( TimeLocal ())== 0 || TimeDayOfWeek ( TimeLocal ())== 6 )

ve olması gerektiği gibi çalıştı.

Teşekkür ederim.

 

Merhaba yoldaşlar!

Beklenmedik bir sorunla karşılaştım.

Dünden önceki gün, test cihazı olması gerektiği gibi çalıştı. Dün akşamdan beri, test edicideki stratejinin herhangi bir versiyonu bir işlem açar ve bir saniye veya birkaç dakika/saatlik geçmişin ardından, testçi işi bitirir. Hata yok, hiçbir şey yok.

Kimse rastladı mı? Söylemek

 

Merhaba.

Lütfen hatayı bulmama yardım edin.

Aşağıda, Expert Advisor'dan izole edilmiş sorun alanı tamamıyla yer almaktadır.

 extern int      MAGIC= 1 ; 

int start()
  {
//----
   int tt = 0 ;
   double SchBuyLots     = SchBuyLots_b(MAGIC);
   double SchSellLots    = SchSellLots_b(MAGIC);
   double SchBuyLots100  = SchBuyLots100_b();
   double SchSellLots100 = SchSellLots100_b();
   double SchBuyLimitLots    = SchBuyLimitLots_b(MAGIC);
   double SchSellLimitLots   = SchSellLimitLots_b(MAGIC);
   double SchBuyStopLots100  = SchBuyStopLots100_b();
   double SchSellStopLots100 = SchSellStopLots100_b();

   double dy= 0 ;
   double dx=SchBuyLots+SchBuyLots100-SchSellLots-SchSellLots100;
   if (dx!= 0 ) dy= MathAbs (dx);

   double zx=SchBuyLimitLots-SchSellLimitLots;

   if (dx> 0 && dy+zx!=SchSellStopLots100)tt= 1 ; else tt= 2 ;
 
   Alert (dy+zx, "---" ,SchSellStopLots100, "---" ,tt);
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
// ----------------- SchBuyLots() ---------------------------------------------
//  Функция возвращает суммарный лот Бай-ордеров для Магика
//----------------------------------------------------------------
double SchBuyLots_b( int MAGIC) {
   double SchBuyLots= 0 ;
   int i;
   string SMB= Symbol ();
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) { //Начало цикла
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {}
     else { //начало работы с выбранным ордером
       if ( OrderSymbol ()== SMB && OrderMagicNumber ()== MAGIC){ 
       if ( OrderType ()==OP_BUY) {
        SchBuyLots=SchBuyLots+ OrderLots ();
       }
      }
    } //конец работы с выбранным ордером
  } //Конец цикла
   return (SchBuyLots);
}
// ----------------------------------------------------------------------------

// ----------------- SchSellLots() ---------------------------------------------
//  Функция возвращает суммарный лот Сейл-ордеров для Магика
//-----------------------------------------------------------------
double SchSellLots_b( int MAGIC) {
   double SchSellLots= 0 ;
   int i;
   string SMB= Symbol ();
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) { //Начало цикла
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {}
     else { //начало работы с выбранным ордером
       if ( OrderSymbol ()== SMB && OrderMagicNumber ()== MAGIC) {
       if ( OrderType ()==OP_SELL) {
        SchSellLots=SchSellLots+ OrderLots ();
       }  
      }  
    } //конец работы с выбранным ордером
  } //Конец цикла
   return (SchSellLots);
}
// -------------------------------------------------------------------------------

// ----------------- SchBuyLots100() ---------------------------------------------
//  Функция возвращает суммарный лот Бай-ордеров для Магика 100
//--------------------------------------------------------------------------------
double SchBuyLots100_b() {
   double SchBuyLots100= 0 ;
   int i;
   string SMB= Symbol ();
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) { //Начало цикла
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {}
     else { //начало работы с выбранным ордером
       if ( OrderSymbol ()== SMB && OrderMagicNumber ()== 100 ) {
       if ( OrderType ()==OP_BUY) {
        SchBuyLots100=SchBuyLots100+ OrderLots ();
       }
      }
    } //конец работы с выбранным ордером
  } //Конец цикла
   return (SchBuyLots100);
}
// --------------------------------------------------------------------------------

// ----------------- SchSellLots100() ---------------------------------------------
//  Функция возвращает суммарный лот Сейл-ордеров для Магика 100
//---------------------------------------------------------------------------------
double SchSellLots100_b() {
   double SchSellLots100= 0 ;
   int i;
   string SMB= Symbol ();
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) { //Начало цикла
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {}
     else { //начало работы с выбранным ордером
       if ( OrderSymbol ()== SMB && OrderMagicNumber ()== 100 ) {
       if ( OrderType ()==OP_SELL) {
        SchSellLots100=SchSellLots100+ OrderLots ();
       }  
      }  
    } //конец работы с выбранным ордером
  } //Конец цикла
   return (SchSellLots100);
}
// ----------------------------------------------------------------------------
// ----------------- SchBuyLimitLots() ------------------------------------------
//  Функция возвращает суммарный лот BuyLimit-ордеров для Магика
//------------------------------------------------------------------------------
double SchBuyLimitLots_b( int MAGIC) {
   double SchBuyLimitLots= 0 ;
   int i;
   string SMB= Symbol ();
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) { //Начало цикла
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {}
     else { //начало работы с выбранным ордером
       if ( OrderSymbol ()== SMB && OrderMagicNumber ()== MAGIC){ 
       if ( OrderType ()==OP_BUYLIMIT) {
        SchBuyLimitLots=SchBuyLimitLots+ OrderLots ();
       }
      }
    } //конец работы с выбранным ордером
  } //Конец цикла
   return (SchBuyLimitLots);
}
// ----------------------------------------------------------------------------

// ----------------- SchSellLimitLots() ----------------------------------------
//  Функция возвращает суммарный лот SellLimit-ордеров для Магика
//-----------------------------------------------------------------------------
double SchSellLimitLots_b( int MAGIC) {
   double SchSellLimitLots= 0 ;
   int i;
   string SMB= Symbol ();
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) { //Начало цикла
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {}
     else { //начало работы с выбранным ордером
       if ( OrderSymbol ()== SMB && OrderMagicNumber ()== MAGIC) {
       if ( OrderType ()==OP_SELLLIMIT) {
        SchSellLimitLots=SchSellLimitLots+ OrderLots ();
       }  
      }  
    } //конец работы с выбранным ордером
  } //Конец цикла
   return (SchSellLimitLots);
}
// -------------------------------------------------------------------------------
// ----------------- SchBuyStopLots100() -----------------------------------------
//  Функция возвращает суммарный лот BuyStop-ордеров для Магика 100
//--------------------------------------------------------------------------------
double SchBuyStopLots100_b() {
   double SchBuyStopLots100= 0 ;
   int i;
   string SMB= Symbol ();
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) { //Начало цикла
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {}
     else { //начало работы с выбранным ордером
       if ( OrderSymbol ()== SMB && OrderMagicNumber ()== 100 ) {
       if ( OrderType ()==OP_BUYSTOP) {
        SchBuyStopLots100=SchBuyStopLots100+ OrderLots ();
       }
      }
    } //конец работы с выбранным ордером
  } //Конец цикла
   return (SchBuyStopLots100);
}
// --------------------------------------------------------------------------------

// ----------------- SchSellStopLots100() -----------------------------------------
//  Функция возвращает суммарный лот SellStop-ордеров для Магика 100
//---------------------------------------------------------------------------------
double SchSellStopLots100_b() {
   double SchSellStopLots100= 0 ;
   int i;
   string SMB= Symbol ();
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) { //Начало цикла
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {}
     else { //начало работы с выбранным ордером
       if ( OrderSymbol ()== SMB && OrderMagicNumber ()== 100 ) {
       if ( OrderType ()==OP_SELLSTOP) {
        SchSellStopLots100=SchSellStopLots100+ OrderLots ();
       }  
      }  
    } //конец работы с выбранным ордером
  } //Конец цикла
   return (SchSellStopLots100);
}
// --------------------------------------------------------------------------------

Lütfen satıra dikkat edin (neredeyse en başında):

 if (dx> 0 && dy+zx!=SchSellStopLots100)tt= 1 ; else tt= 2 ;

Nedense dy+zx ve SchSellStopLots100 değerleri ayrı ayrı eşit ise (uyarılar yardımıyla kontrol edilir), bu ifadede artık birbirine eşit değildir ve tt değişkeni 2 değil 1 değerini alır. .

Lütfen hatayı bulmama yardım edin.

Şimdiden teşekkür ederim.

 
Hafta sonu için alım satım koşulları sunucudan değişti... komisyoncuya/ağa bağlı olmayan ayrı bir terminalde test etmeniz, özel bir yardımcı programla istenen spread'i ayarlamanız gerekiyor. Test danışmanları ve bunun nasıl doğru bir şekilde yapılacağı hakkında makaleler aramak daha iyidir.
 
nemo811 :

(alarmlarla kontrol edilir)

ND'yi kontrol etmek daha iyidir veya modülo farkları bazı deltalardan daha azdır.
 
splxgf :
ND'yi kontrol etmek daha iyidir veya modülo farkları bazı deltalardan daha azdır.

Nedense, 0,3 sayısını vermek için dy ve zx eklemek (mevcut piyasa durumuyla ilgili özel testimde), bu sayıyla karşılaştırıldığında ona eşit değildir. Onlar. dy+zx ekliyorum ve 0,3 alıyorum. dy+zx'i 0.3 ile karşılaştırıyorum - eşit değiller.

dy ve zx'i döndürdükleri sayılarla karşılaştırıyorum - eşitlikler olması gerektiği gibi çalışıyor.

Gizem.

Lütfen yardım et.

 
ramirez17 :

Merhaba yoldaşlar!

Beklenmedik bir sorunla karşılaştım.

Dünden önceki gün, test cihazı olması gerektiği gibi çalıştı. Dün akşamdan beri, test edicideki stratejinin herhangi bir versiyonu bir işlem açar ve bir saniye veya birkaç dakika/saatlik geçmişin ardından, testçi işi bitirir. Hata yok, hiçbir şey yok.

Kimse rastladı mı? Söylemek

Test cihazının bir günlüğü var. Her şey orada yazıyor. Burada , test cihazınızın günlüklerini uzaktan okuyabilecek telepat yok.