[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 61

 

Değerli uzmanlar, lütfen soruyu cevaplayın:

MetaEditor, program oluşturma şablonları için metin dosyalarına sahiptir. Bir program oluştururken sihirbaz tarafından kullanılırlar. Şablonun metni, oluşturulmakta olan program dosyasının türünün parametrelerini belirtir. Aralarında etiketler ve kod metninde görünmeyen seçenekler var. Ancak terminal bir şekilde onları tanır. Expert Advisor oluşturulursa, bir sonraki tik geldikten sonra Başlat işlevi, bir gösterge ise, tik olmadan Başlat işlevi başlatılır. Etiketler ve içindeki her şey nereye gidiyor?

 

Bacakların hala nereden büyüdüğünü anlamak için 2 test daha yaptım:


1. ini'den okuma, bir dizge dizisine değil, ayrı değişkenlere yapıldı. Sonuç bekleniyor, yani. kopyalama bir değer değil, bir referanstır:

 int     numCross = 0 ;

string Cross_1="-", Cross_2="-", Cross_3="-";
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init ( )
{
   string sectionName = "common" ;
  
  numCross = ReadIniInteger ( config_path , sectionName , "numCross" , 0 ) ;
   ArrayResize ( CrossName , numCross ) ;
  for (int i=0; i<numCross; i++) CrossName[i] = "-";
  
  sectionName = "cross1" ;
  Cross_1 = ReadIniString ( config_path , sectionName , "name" , "-" ) ;
   Print ( "init.1: Cross_1=" , Cross_1 ) ;
  sectionName = "cross2" ;
  Cross_2 = ReadIniString ( config_path , sectionName , "name" , "-" ) ;
   Print ( "init.1: Cross_2=" , Cross_2 ) ;
  sectionName = "cross3" ;
  Cross_3 = ReadIniString ( config_path , sectionName , "name" , "-" ) ;
   Print ( "init.1: Cross_3=" , Cross_3 ) ;
   Print ( "init.1: read complete" ) ;

   Print ( "init.2: Cross_1=" , Cross_1 ) ;
   Print ( "init.2: Cross_2=" , Cross_2 ) ;
   Print ( "init.2: Cross_3=" , Cross_3 ) ;
   Print ( "-------------------------------" ) ;
  
  sectionName = "cross1" ;
  Cross_1 = StringSubstr ( ReadIniString ( config_path , sectionName , "name" , "-" ) , 0 , 0 ) ;
   Print ( "init.3: Cross_1=" , Cross_1 ) ;
  sectionName = "cross2" ;
  Cross_2 = StringSubstr ( ReadIniString ( config_path , sectionName , "name" , "-" ) , 0 , 0 ) ;
   Print ( "init.3: Cross_2=" , Cross_2 ) ;
  sectionName = "cross3" ;
  Cross_3 = StringSubstr ( ReadIniString ( config_path , sectionName , "name" , "-" ) , 0 , 0 ) ;
   Print ( "init.3: Cross_3=" , Cross_3 ) ;
   Print ( "init.3: read complete" ) ;

   Print ( "init.4: Cross_1=" , Cross_1 ) ;
   Print ( "init.4: Cross_2=" , Cross_2 ) ;
   Print ( "init.4: Cross_3=" , Cross_3 ) ;

   return ( 0 ) ;
}


sonuç:

2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_2=GBPUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_1=EURUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.3: read complete
2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_2=GBPUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_1=EURUSD
2009.04.10 14:31:42 example AUDUSD,H4: -------------------------------
2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_2=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_1=USDJPY

2009.04.10 14:31:42 example AUDUSD,H4: init.1: read complete
2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_2=GBPUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_1=EURUSD


2. dize dizisini geri döndürdü, ancak dize değerlerini ini'den okumak yerine

 string ReadIniString ( string FileName , string SectionName , string KeyName , 
                     string Default = "" )
   {
   string ReturnedString = "" ;
   int nValue = GetPrivateProfileStringA ( SectionName , KeyName , Default , 
                                          ReturnedString , 255 , FileName ) ;
   if ( nValue > 0 )
       return ( ReturnedString ) ;
   else 
       return ( Default ) ;
   }

win api'den hiçbir şey çağırmayan bir test işlevini değiştirdi

 string CrossName [ ] ;
int     numCross = 0 ;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init ( )
{
   string sectionName = "common" ;
  
  numCross = ReadIniInteger ( config_path , sectionName , "numCross" , 0 ) ;
   ArrayResize ( CrossName , numCross ) ;
  for (int i=0; i<numCross; i++) CrossName[i] = "-";
  
   for ( int i = 0 ; i < numCross ; i + + )
   {
    sectionName = StringConcatenate ( "cross" , i + 1 ) ;
    CrossName [ i ] = someFunc ( i + 1 ) ;
     Print ( "init.1: CrossName[" , ( i + 1 ) , "]=" , CrossName [ i ] ) ;
   }
   Print ( "init.1: read complete" ) ;
  
   for ( i = 0 ; i < numCross ; i + + )
   {
     Print ( "init.2: CrossName[" , ( i + 1 ) , "]=" , CrossName [ i ] ) ;
   }
  

   Print ( "-------------------------------" ) ;
   for ( i = 0 ; i < numCross ; i + + )
   {
    sectionName = StringConcatenate ( "cross" , i + 1 ) ;
    CrossName [ i ] = StringSubstr ( someFunc ( i + 1 ) , 0 , 0 ) ;
     Print ( "init.3: CrossName[" , ( i + 1 ) , "]=" , CrossName [ i ] ) ;
   }
   Print ( "init.3: read complete" ) ;
  
   for ( i = 0 ; i < numCross ; i + + )
   {
     Print ( "init.4: CrossName[" , ( i + 1 ) , "]=" , CrossName [ i ] ) ;
   }

   return ( 0 ) ;
}
//+------------------------------------------------------------------+
string someFunc ( int val )
{
   string ReturnedString = "CROSS_" + val ;
   return ( ReturnedString ) ;
}
//+------------------------------------------------------------------+

sonuç

2009.04.10 14:41:12 örnek AUDUSD,H4: init.4: CrossName[3]=CROSS_3
2009.04.10 14:41:12 örnek AUDUSD,H4: init.4: CrossName[2]=CROSS_2
2009.04.10 14:41:12 örnek AUDUSD,H4: init.4: CrossName[1]=CROSS_1
2009.04.10 14:41:12 örnek AUDUSD,H4: init.3: okuma tamamlandı
2009.04.10 14:41:12 örnek AUDUSD,H4: init.3: CrossName[3]=CROSS_3
2009.04.10 14:41:12 örnek AUDUSD,H4: init.3: CrossName[2]=CROSS_2
2009.04.10 14:41:12 örnek AUDUSD,H4: init.3: CrossName[1]=CROSS_1
2009.04.10 14:41:12 örnek AUDUSD,H4: -------------------------------
2009.04.10 14:41:12 örnek AUDUSD,H4: init.2: CrossName[3]=CROSS_3
2009.04.10 14:41:12 örnek AUDUSD,H4: init.2: CrossName[2]=CROSS_2
2009.04.10 14:41:12 örnek AUDUSD,H4: init.2: CrossName[1]=CROSS_1
2009.04.10 14:41:12 örnek AUDUSD,H4: init.1: okuma tamamlandı
2009.04.10 14:41:12 örnek AUDUSD,H4: init.1: CrossName[3]=CROSS_3
2009.04.10 14:41:12 örnek AUDUSD,H4: init.1: CrossName[2]=CROSS_2
2009.04.10 14:41:12 örnek AUDUSD,H4: init.1: CrossName[1]=CROSS_1

engelin büyük ihtimalle oyuncu kadrosunda olduğunu gösterdi

 LPTSTR l pReturnedString [out] GetPrivateProfileString - mql4 string win api işlevini alan dizeyi alan arabelleğe yönelik bir işaretçi .
 
xruss >> :

nasıl olmalı? mantıksal olarak, sinyal oluşturmadan önce ORD tipini tanımlamayı düşündüm. aksi takdirde alım satım kriterlerinde nasıl dikkate alınacağı. ve bir engel daha - boş bir geçmişle bile pozisyonlar açılmaz ((

Size kişisel olarak cevap verdim - daha verimli olacağını düşünüyorum.

 
Reshetov >> :

Tekerleği yeniden icat etmek değil, hazır Martingale ticaret Uzman Danışmanlarından biriyle başlamak ve tüm bunların nasıl uygulandığını görmek çok daha kolaydır.


Örneğin Universum 3.0


Teşekkürler, tamamen katılıyorum - her şey uzun zamandır icat edildi

 

Test cihazında Expert Advisor test edilirken init() işlevinin yürütülmesi.


EA'nın init() işlevi içindeki birkaç harici (harici) değişkenin değerini normalleştirmek istiyorum

ve göstergeyi start()'tan çağırmak için bu normalleştirilmiş (yeni) değerleri kullanın.

Bu normalleştirmeyi start()'a dahil etmek istemiyorum.

Strateji Test Cihazında Uzman Danışmanın optimizasyonu sırasında harici değişken her değiştiğinde init() işlevi yürütülecek mi?
 
begemot61 писал(а) >>

Test cihazında Expert Advisor test edilirken init() işlevinin yürütülmesi.


EA'nın init() işlevi içindeki birkaç harici (harici) değişkenin değerini normalleştirmek istiyorum

ve göstergeyi start()'tan çağırmak için bu normalleştirilmiş (yeni) değerleri kullanın.

Bu normalleştirmeyi start()'a dahil etmek istemiyorum.

Strateji Test Cihazında Uzman Danışmanın optimizasyonu sırasında harici değişken her değiştiğinde init() işlevi yürütülecek mi?

evet olacak

 

int start()
  {
  if (OrdersTotal() == 0 
  && TimeDayOfWeek(TimeCurrent()) == 5
  && TimeHour(TimeCurrent()) == 12
  && TimeMinute(TimeCurrent()) == 30
  && TimeSeconds(TimeCurrent()) >= 00)
  {
  Alert("Тра ляля");  
  OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"sell",999999,0,Red);
  }
   

Kimse size siparişin neden burada açılmadığını söylemeyecek mi? Bunu neden düşünemedim?
 
Dimoncheg писал(а) >>
Kimse size siparişin neden burada açılmadığını söylemeyecek mi? Bunu neden düşünemedim?

Yani, bu... Cumaya kadar beklememiz gerekiyor, bu dakika içinde bir kene varsa, açılmalı.

 
Roger >> :

Yani, bu... Cumaya kadar beklememiz gerekiyor, bu dakika içinde bir kene varsa, açılmalı.

Cuma veya haftanın herhangi bir günü yaptığım her şey ve çöp - uyarı çalışıyor ve sipariş açılmıyor nifiga