Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 456

 
Zver4991 :

Testin kalitesini ne belirler ve onu en üst düzeye nasıl çıkarabilirim?

%99 simülasyon kalitesiyle bir EA'nın nasıl test edileceğini öğrenmek için bu siteye bakın

http://tradelikeapro.ru/kak-poluchit-kachestvo-modelirovaniya-99/

 
Zhunko :
Bu, BOOL tipi içindir. Onlar. MQL4'ün eski sürümünden bool için. Tek baytlık bir bool için durum böyle değil. Değer sıfırdan büyükse, bir taşma meydana gelir.

neden o zaman merak ediyorum

   bool b= 2 ;

hata veya uyarı olmadan derler?

 
artmedia70 :

neden o zaman merak ediyorum

 bool b= 2 ;
hata veya uyarı olmadan derler?

Muhtemelen, bool türü için atama operatörü aşırı yüklenmiştir. Taşma olup olmadığını izler ve 1'den büyükse atar ve true değerini döndürür.

Mantıksal bir ifadeye mantıksal olmayan bir tür eklemeye çalıştığınızda, 4. düzey uyarı uyarıları genellikle stüdyoda görünür. Veya tam tersi, aritmetik işlemlerde boole türünü kullandığınızda.

 
Zhunko :

Muhtemelen, bool türü için atama operatörü aşırı yüklenmiştir. Taşma olup olmadığını izler ve 1'den büyükse atar ve true değerini döndürür.

Mantıksal bir ifadeye mantıksal olmayan bir tür eklemeye çalıştığınızda, 4. düzey uyarı uyarıları genellikle stüdyoda görünür. Veya tam tersi, mantıksal türü aritmetik işlemlerde kullandığınızda.

olsaydı daha mantıklı olurdu

 #property strict

bir uyarı verin ve olmadan - eski sürümdeki gibi bırakın

 
artmedia70 :

tam olarak doğru değil, ama özü doğru.

Ancak genel olarak: sıfır yanlıştır ve sıfırdan başka herhangi bir değer doğrudur

Varsayılanlara güvenmeden, değişkeni İnternette bir boole olarak değiştiriyorum ve sonra sadece onu kullanıyorum.
 

Şey, ben bir programcı değilim...

Bir hesap numarası 1 var - minimum 0.01 lot ve 0.01 adımlı beş işareti (derleme 584); hesap numarası 2 - 4, minimum lot 0.1 ve lot adımı 0.1 (inşa 584) ve hesap numarası 3, 2 numara ile tamamen aynı, sadece terminal build 509.

Ve bir durma kaybı izi var:

 void manageStops()
{ 
   string trailSymbol= Symbol ();  
   for ( int i = OrdersTotal ()- 1 ; i >= 0 ; i-- ) 
   {
       if ( OrderSelect ( i, SELECT_BY_POS ) == true ) 
      {  
         int trailOrderType = OrderType (); 
         if ( OrderSymbol () != trailSymbol || trailOrderType > 1 || OrderProfit () < 0 ) continue ; 
         double trailStopLoss = OrderStopLoss ();   
         while ( true ) {
             double trailStop = TrailingStop; 
             int trailDistance = MarketInfo ( trailSymbol, MODE_STOPLEVEL ); 
             if ( trailStop < trailDistance ) trailStop = trailStop+trailDistance;  
             bool modifyTrailingStop = false ;  
             switch ( trailOrderType ) 
            {
               case 0 : 
                   if (trailStopLoss < ( Bid - (TrailingStop+TrailingStep) * pipPoints)) 
                  {
                     trailStopLoss = NormalizeDouble ( Bid - TrailingStop * pipPoints,digits);   
                     modifyTrailingStop = true ;       
                  }
                   break ;    
               case 1 :                      
                   if (trailStopLoss > ( Ask + (TrailingStop+TrailingStep) * pipPoints)) 
                  {
                     trailStopLoss = NormalizeDouble ( Ask + TrailingStop * pipPoints,digits);             
                     modifyTrailingStop = true ;             
                  }
               }                               
             if ( modifyTrailingStop == false ) break ;                       
             double trailTakeProfit = OrderTakeProfit (); 
             double trailPrice = OrderOpenPrice ();  
             int trailTicket = OrderTicket ();   
            if ( ( OrderType () == OP_BUY && trailStopLoss > trailPrice && trailStopLoss < OrderOpenPrice () + ( MaxStop * pipPoints ) ) 
                  || ( OrderType () == OP_SELL && trailStopLoss < trailPrice && trailStopLoss > OrderOpenPrice () - ( MaxStop * pipPoints ) ) )

             OrderModify ( trailTicket, trailPrice, trailStopLoss, trailTakeProfit, 0 );
             break ; 
           } 
        }  
     }  
   return ;   
} 

Durdurma kaybı neden 1 numaralı hesapta normal olarak takip ediliyor, ancak 2 ve 3 numaralı hesaplarda "hata 130" ??? Mantık, bir bükülme ile olsa da, bir durumda işe yarıyor ...

 
evillive :

Şey, ben bir programcı değilim...

Hesap numarası 1 vardır - minimum lot 0.01 ve 0.01 adımlı beş işaret (derleme 584); hesap numarası 2 - 4, minimum lot 0.1 ve lot adımı 0.1 (inşa 584) ve hesap numarası 3, 2 numara ile tamamen aynı, sadece terminal build 509.

Ve bir durma kaybı izi var:

Durdurma kaybı neden 1 numaralı hesapta normal olarak takip ediliyor, ancak 2 ve 3 numaralı hesaplarda "hata 130" ??? Mantık, bir bükülme ile olsa da, bir durumda işe yarıyor ...


Sorunun kendisinden, sorunun 5 basamaklı veya 4 basamaklı bir hesap olduğu ortaya çıkıyor. koda bakıyorum. pipPoint değişkeni nerede tanımlanır ve neye eşittir? Büyük olasılıkla sorun orada yatıyor.
 
pro_ :

Sorunun kendisinden, sorunun 5 basamaklı veya 4 basamaklı bir hesap olduğu ortaya çıkıyor. koda bakıyorum. pipPoint değişkeni nerede tanımlanır ve neye eşittir? Büyük olasılıkla sorun orada yatıyor.

init'te pipPoints = MarketInfo( Symbol() , MODE_POINT); tanımlıyorum.

MaxStop değerini arttırdım, trol daha büyük bir adımla değişmeli gibi görünüyor ama 1 puanlık bir adımla değişiyor ama en azından 4 haneli bir trol üzerinde trol yapmaya başladı... Yine mantığı yeniden yapmamız gerekiyor. , özel bir adıma ihtiyacımız var.

 
smdm :

Merhaba!

Soru sıradaki. Heiken Ashi Smoothed göstergesi var https://www.mql5.com/ru/code/7930

Bu göstergenin daha yüksek bir zaman diliminde hesaplanan beş dakikalık bir çizelgeye, örneğin otuz dakikalık veya saatlik bir çizelgeye eklenebilmesi için gösterge kodunda hangi değişikliklerin yapılması gerekiyor?

Teşekkür ederim.


Benzer bir soruya - göstergenin haftalıktan H4 tablosuna nasıl yansıtılacağı. Zaten birkaç forumda çaldım. ve burada da, ama hiçbir şey başaramadı ve bulamadı. eski TF'nin boyutunu daha küçük olanın koduna yazmaktan daha iyidir, kimse size söylemez. göstergeniz basit bir lojistiğe sahipse ve hesaplaması için basit çubuk hesaplamaları alıyorsa, bu mümkündür. h1'de kendi açıklamalarınızla stüdyoya kod ve ekran yazabilirseniz.
 

ve bu nedenle gösterge, çubuğun ortasında fiyatın kapandığı çubuğun üzerine dikey bir çizgi çizmelidir.....

 double close_price( int nomer_bara)
{
if (nomer_bara< 1 )
{
Alert ( "нельзя анализировать текущий бар" );
}
else
{
if ( iClose ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)< iHigh ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)/ 3 ) //возвращает 1/3 если цена текущего бара закрылась ниже 1/3 его спреда 
{
return ( 1 / 3 );
}
if ( iClose ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)> iHigh ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)/ 3 &&( iClose ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)< iHigh ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)* 2 )/ 3 ) //возвращает 2/3 если цена текущего бара закрылась ниже 2/3 и выше 1/3 его спреда 
{
return ( 2 / 3 );
}

if (( iClose ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)>( iHigh ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara))* 2 )/ 3 && iClose ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)< iHigh ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)) //возвращает 1 если цена текущего бара закрылась выше 2/3 его спреда
{
return ( 1 );
}
}

}

 if (close_price( 1 )== 1 / 3 ) // в случае если цена закрылась внизу то нарисовать линию на этом баре
   {
 SetVLine(Red, "" , Time [ 1 ], STYLE_SOLID , 2 );
   }
и так вся проблема заключается в том что линия рисуется на каждом баре не пойму какого черта... помогите пожалуйста