Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 133

 
Alexey Viktorov :
Niye ya?
zaten denendi
 
Nikolai Semko :
zaten denendi

Ama burada

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri

Nikolai Semko , 2019.04.03 22:33

Evet, teşekkürler Alex. Bu özelliği unutmuşum. Daha önce görmüştüm ama hiç kullanmadım.

Sınanmış. Bir şeyler ters gidiyor. Sil, sonra siler, ancak kaldırıldıktan sonra her şey durur.

Aşağıdaki parametrelerle göstergeyi hesaplamadan önce DrawSetup() işlevine bir satır kod eklemeniz yeterli.

 IndicatorRelease (handle);
handle= iMA ( _Symbol , _Period ,per1, 0 ,MaMethod,PriceBase);
for ( int i= 0 ;i<N;i++) handle= iMA ( _Symbol , _Period ,per2, 0 ,MaMethod,handle);

Gösterge çalışmayı durduruyor ve nedenini henüz anlayamıyorum.

Kesinlikle sana katılıyorum. O sadece işe yaramaz bir oyuncak.


tam olarak değil.
 
Alexey Viktorov :

Ama burada


tam olarak değil.
daha önce denedim. Kod, başarısız olduğu için kendisinden silindi.
 
Ayrıca, en derinde gömülü olandan başlayarak bir zincirdeki tüm kolları serbest bırakmayı deneyebilirsiniz.
 
Andrey Khatimlianskii :
Ayrıca, en derinde gömülü olandan başlayarak bir zincirdeki tüm kolları serbest bırakmayı deneyebilirsiniz.

Pekala, bu furychit değil. Ya da hırlarsa, bir tür fren açılır.

 void BuildMaFromMa()
  {
   static int h[];
   for ( int i= 0 ;i< ArraySize (h);i++) IndicatorRelease (h[i]);
   handle= iMA ( _Symbol , _Period ,per1, 0 ,MaMethod,PriceBase);
   ArrayResize (h,N);
   if (N> 0 ) h[ 0 ]=handle; 
   for ( int i= 0 ;i<N;i++)
     {
      handle= iMA ( _Symbol , _Period ,per2, 0 ,MaMethod,handle);
      h[i]=handle;
     }
  }

Çizgiyi IndicatorRelease ile belgelerseniz, her şey yolunda gider, ancak bazı frenler açılır ve ne olduğunu anlamıyorum.

Dosyalar:
 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Göstergeler: MaFromMa

Nikolai Semko , 2019.04.04 01:00

Özyineleme ve yinelemenin performansını karşılaştırmak istedim.

Özyinelemenin iki kattan daha hızlı olduğu ortaya çıktı ...

Muhtemelen yığın daha hızlı olduğu için ...

Yakında harika. Ben tam tersi bir etki bekliyordum. ))

 #define size 1000000
uint sum1= 0 ,sum2= 0 ;
int i;
int X[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart ()
  {
   ArrayResize (X,size);
   for (i= 0 ;i<size;i++) X[i]= rand ();

   ulong t= GetMicrosecondCount ();
   i= 0 ;
   while (i<size) { sum1+=X[i]; i++;}
//Recursion();
   ulong t1= GetMicrosecondCount ()-t;

   t= GetMicrosecondCount ();
   i= 0 ;
//while(i<size) { sum1+=X[i]; i++;}
   Recursion();
   ulong t2= GetMicrosecondCount ()-t;
   Print ( "время выполнения цикла    = " + string (t1)+ " , контрольная сумма = " + string (sum1));
   Print ( "время выполнения рекурсии = " + string (t2)+ " , контрольная сумма = " + string (sum2));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Recursion()
  {
   sum2+=X[i];
   i++;
   if (i<size) Recursion();
  }
//+------------------------------------------------------------------+
 2019.04 . 03 19 : 06 : 40.776 TestLoopVsRecursion (EURUSD,M1) время выполнения цикла    = 1667 , контрольная сумма = 3510404212
2019.04 . 03 19 : 06 : 40.776 TestLoopVsRecursion (EURUSD,M1) время выполнения рекурсии = 697 , контрольная сумма = 3510404212
2019.04 . 03 19 : 06 : 41.697 TestLoopVsRecursion (EURUSD,M1) время выполнения цикла    = 1653 , контрольная сумма = 3492310620
2019.04 . 03 19 : 06 : 41.697 TestLoopVsRecursion (EURUSD,M1) время выполнения рекурсии = 699 , контрольная сумма = 3492310620
2019.04 . 03 19 : 06 : 42.549 TestLoopVsRecursion (EURUSD,M1) время выполнения цикла    = 1529 , контрольная сумма = 3510953577
2019.04 . 03 19 : 06 : 42.549 TestLoopVsRecursion (EURUSD,M1) время выполнения рекурсии = 696 , контрольная сумма = 3510953577
2019.04 . 03 19 : 06 : 43.332 TestLoopVsRecursion (EURUSD,M1) время выполнения цикла    = 1559 , контрольная сумма = 3512212419
2019.04 . 03 19 : 06 : 43.332 TestLoopVsRecursion (EURUSD,M1) время выполнения рекурсии = 698 , контрольная сумма = 3512212419
2019.04 . 03 19 : 06 : 44.098 TestLoopVsRecursion (EURUSD,M1) время выполнения цикла    = 1707 , контрольная сумма = 3497178596
2019.04 . 03 19 : 06 : 44.098 TestLoopVsRecursion (EURUSD,M1) время выполнения рекурсии = 472 , контрольная сумма = 3497178596
2019.04 . 03 19 : 06 : 44.839 TestLoopVsRecursion (EURUSD,M1) время выполнения цикла    = 2088 , контрольная сумма = 3485051380
2019.04 . 03 19 : 06 : 44.839 TestLoopVsRecursion (EURUSD,M1) время выполнения рекурсии = 482 , контрольная сумма = 3485051380
2019.04 . 03 19 : 06 : 45.538 TestLoopVsRecursion (EURUSD,M1) время выполнения цикла    = 1612 , контрольная сумма = 3487817581
2019.04 . 03 19 : 06 : 45.538 TestLoopVsRecursion (EURUSD,M1) время выполнения рекурсии = 448 , контрольная сумма = 3487817581
2019.04 . 03 19 : 06 : 46.397 TestLoopVsRecursion (EURUSD,M1) время выполнения цикла    = 1742 , контрольная сумма = 3475121003
2019.04 . 03 19 : 06 : 46.397 TestLoopVsRecursion (EURUSD,M1) время выполнения рекурсии = 497 , контрольная сумма = 3475121003
2019.04 . 03 19 : 06 : 47.262 TestLoopVsRecursion (EURUSD,M1) время выполнения цикла    = 1701 , контрольная сумма = 3485556615
2019.04 . 03 19 : 06 : 47.262 TestLoopVsRecursion (EURUSD,M1) время выполнения рекурсии = 701 , контрольная сумма = 3485556615

 

Beyler, lotu MT 5 için depozito yüzdesine göre stop loss olmadan hesaplamak için kanıtlanmış ve güvenilir bir işlevi olan var mı?

Paylaşmak...

 
Optimizasyon sırasında Tester Günlüğünde bu mesajla karşılaşabilirsiniz.
Tester   OnTesterInit failed. Optimization cannot be started.


Bu mesaja göre sebebini anlamak neredeyse imkansız çünkü. Terminal günlüğüne bir referanstan tamamen yoksundur. İşte bunun nedenini aramanız gerekiyor.


Böyle bir danışman örneği

 input int Range = 0 ; // 1..9

int Tmp = 1 / Range;

void OnTesterDeinit () {}

double OnTester ()
{
   return (Tmp);
}


Expert Advisor, Menzilin sıfıra ulaşmadığı aralıkta optimize edilmiştir. Ancak, optimizasyon başarısız olur.

Bunun nedeni, Uzman Danışmanların Çerçeve modunun her zaman EX5'te sabit kodlanmış giriş parametreleriyle başlatılmasıdır. Bu durumda Çerçeve modunda sıfıra bölme elde edilir.

OnTesterDeinit- dummy kaynak koddan kaldırılırsa, Optimizasyon sorunsuz ilerleyecektir.


Bu gibi durumlarda Tester Günlüğünde Terminal Günlüğüne bir referans olması iyi olacaktır. Aksi takdirde, neler olduğunu anlamak her zaman mümkün değildir (Optimizasyon sırasında hata ayıklama yapılamaz).

 

Uzman Danışmanların grafikte başlatılmadığı bir durumla karşılaşabilirsiniz.

Solda - bir Uzman Danışmanı bir çizelgeye sürüklerken normal bir imleç. Sağda bizim durumumuz var.


Günlükte hiçbir giriş olmayacak. Genel olarak, devre dışı bırakma imleci, bu tür çizelgeler için tek görsel tanımlayıcıdır.


Tpl şablonunu kaydederseniz, bu grafikler bir satırla ayırt edilecektir.

tester= 1

Bu muhtemelen grafiğin türünü belirleyen tek yazılım seçeneğidir. Bu bir çerçeve grafiğidir.


Dolayısıyla, kendinizi otomatik ticaretten korumak istiyorsanız, yalnızca bu tür grafiklerle çalışabilirsiniz.

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

Nikolai Semko :

Sentetik bir araç formülünde, sembol adı bir noktayla başlarsa (veya içeriyorsa) "Bilinmeyen ayrıştırma hatası" hatası verir.

Slava , 2019.04.19 06:08

Sembol adı bir nokta, tire veya başka bir şey içeriyorsa ("RTS-12.19" ne olacak?), bu ad kesme işareti içinde çerçevelenmelidir.