Hatalar, hatalar, sorular - sayfa 308

 
aharata :
Yardımda Hesaplanan Barlar hakkında okumaya çalışın, bu arada gerekli örnek hemen orada verilmiştir.

Bunlarla deneyelim. Teşekkür ederim!
 
Im_hungry :

yani CopyBuffer>0 iken onu hesaplıyoruz ve yeni parametre (Close())

bir pozisyon kapatıldığında görünür. Yani, while üzerinden döngü yapmanız gerekir. Bu böyle çıkıyor.

Şunu söyleyebilirim: " CopyBuffer <0 iken bu fonksiyona yapılan çağrıyı tekrarlıyoruz."

while (vhandle> 0 ) satırı herhangi bir özel yük taşıyor gibi görünmüyor, çünkü ilk CopyBuffer<0, döndürme durumunda ( 0 );

Bu yönde çalışırdım:

 if (! PositionSelect (Symbol1) && ! PositionSelect (Symbol2))
  {
   for ( uchar u= 0 ;u< 100 ;u++)  //запускаем цикл с ограниченным количеством шагов
    {
     if ( CopyBuffer (vhandle, 0 , 0 , 50 ,Sp1Buffer) && CopyBuffer (vhandle, 1 , 0 , 50 ,Sp2Buffer))
      {
       return ( true );  //дождались копирования буферов - выходим
      }
     else
      {
       if (u== 99 ) //т.е. выявляем последний шаг нашего цикла for, который не принёс ожидаемых результатов
         {
           Alert ( "Ошибка копирования буферов индикатора номер ошибки:" , GetLastError ());
           return ( 0 );
         }
       Sleep ( 50 );  //засыпаем ненадолго (хотя я сам не сторонник использования Sleep в теле OnTick)
      }
    }
  }

Genel olarak, yazarın takdirine bağlı olarak böyle bir şey. Doğru bir şekilde belirtildiği gibi, bir referans kitabı zarar vermez.

 
aharata :
Yardımda Hesaplanan Barlar hakkında okumaya çalışın, bu arada gerekli örnek hemen orada verilmiştir.

Yaptığım yön için teşekkürler - işe yarıyor, pervazsız görünüyor (1 ay test edildi)

İşte 1. çiftteki çalışma kodum

 void OnTick ()
{ 
   if (isNewBar()== true && proverkaHANDLA()== true )
     {
       if (! PositionSelect (Symbol1))
         {
          BSOpen();
         }
     }    
}
//+==================================================================+
bool proverkaHANDLA()
{
   ArraySetAsSeries (Sp1Buffer, true );
   ArraySetAsSeries (Sp2Buffer, true );
  vhandle= iCustom ( NULL , 0 , "МТ5" ,Symbol1, 100 ,Lots, 1 ,Close());
   ResetLastError ();
   int copied0= CopyBuffer (vhandle, 0 , 0 , 50 ,Sp1Buffer);
   int copied1= CopyBuffer (vhandle, 1 , 0 , 50 ,Sp2Buffer);
   if (copied0<= 0 || copied1<= 0 )
     {
       Sleep ( 50 );
       for ( int i= 0 ;i< 100 ;i++)
        {
         if ( BarsCalculated (vhandle)> 0 )
         break ;
         Sleep ( 50 );
        }
      copied0= CopyBuffer (vhandle, 0 , 0 , 50 ,Sp1Buffer);
      copied1= CopyBuffer (vhandle, 1 , 0 , 50 ,Sp2Buffer);
       if (copied0<= 0 || copied1<= 0 )
        {
         Print ( "Не удалось скопировать Буфера индюков :-)" , GetLastError (),
         "copied0" ,copied0, "copied1=" ,copied1);
         return ( false ); 
        }
       Print ( "Удалось скопировать Буфера :-)copied0" ,copied0, "copied1=" ,copied1);
       return ( true );
     }
   Print ( "Удалось скопировать Буфера. Sp1Buffer=" , ArraySize (Sp1Buffer),
         "Sp2Buffer=" , ArraySize (Sp2Buffer));
   return ( true );
}
 
Yedelkin :

Şunu söyleyebilirim: "CopyBuffer<0 iken, bu fonksiyona yapılan çağrıyı tekrarlıyoruz."

while (vhandle> 0 ) satırı herhangi bir özel yük taşıyor gibi görünmüyor, çünkü ilk CopyBuffer<0, döndürme durumunda ( 0 );

Bu yönde çalışırdım:

Genel olarak, yazarın takdirine bağlı olarak böyle bir şey. Doğru bir şekilde belirtildiği gibi, bir referans kitabı zarar vermez.

Daha da kolay, hadi bu 2 yaklaşımdan hangisinin daha iyi ve daha hızlı olduğunu görelim - biz onu alacağız,

Herkese teşekkürler! teste gitti.

 
geliştiriciler, lütfen #33601 isteğine dikkat edin (farklı işletim sistemlerinde alım satım kaldıracı hakkında "harika bir özellik" var) ...
 
Interesting :
geliştiriciler, lütfen #33601 isteğine dikkat edin (farklı işletim sistemlerinde alım satım kaldıracı hakkında "harika bir özellik" var) ...

Belki de orijinal olarak farklı brokerlerden kurulan terminalleri kullanıyorsunuz? Başvurunuza ayrıntıları ekleyin, lütfen.
 
Rosh :
Belki de orijinal olarak farklı brokerlerden kurulan terminalleri kullanıyorsunuz? Başvurunuza ayrıntıları ekleyin, lütfen.
Terminalleri ve sonunda ne almam gerektiğini açıkladım.
 

Geliştiricilere soru.

Spreadlerle ilgili her şey açıktır, bunlar çubuklarda saklanır ve test cihazı değişen spread'i dikkate alarak tüm geçmişi çalıştırabilir (geçmiş normal olarak yüklenirse), peki ya takaslar?

Onlar. DC / komisyoncu evet kabul ederse ve takas veya komisyonların boyutunu değiştirirse ne olacak?

Biliyorum biraz saçma ama yine de.

Doğru anladıysam, şimdi test eden, MT4'te olduğu gibi, takaslar ve komisyonlar ikincisi tarafından alınacaktır....

not

Bir kez daha netleşti, şimdi ekran görüntüleri ile ....

 
Interesting :

Geliştiricilere soru.

Spreadlerle ilgili her şey açıktır, bunlar çubuklarda saklanır ve test cihazı değişen spread'i hesaba katarak tüm geçmişi çalıştırabilir (geçmiş normal olarak yüklenirse), peki ya takaslar?

Onlar. DC / komisyoncu evet kabul ederse ve takas veya komisyonların boyutunu değiştirirse ne olacak?

Swap ve komisyon geçmişi saklanmaz, bu ayarlar son bağlantıdan alınır
 
Rosh :
Takas ve komisyonların geçmişi saklanmaz, bu ayarlar son bağlantıdan alınır
Açıkçası ben de öyle düşündüm. Yeter ki bunlardan yeteri kadar değişelim / hiç değişmeyin.
Neden: