Hatalar, hatalar, sorular - sayfa 886

 
Yedelkin :
Bunun farklı nedenleri olabilir.En meşhurları dizinin ötesine geçerek sıfıra bölmektir.

Teşekkür ederim.

Sınır dışı dizi nedir? Cahilliğim için özür dilerim.

Sadece 3 bölümüm var:

TradeLot= AccountInfoDouble ( ACCOUNT_BALANCE )*(PercentSize/ 100 )/( 100 ); 
MaxLotAllowed= MathFloor ((MeansFree/MeansOneLot)* 100 )/ 100 ;
(PositionVolume()+Volume())*( 100 )*( 100 ))/ AccountInfoDouble ( ACCOUNT_BALANCE )
 
G001 : Sadece 3 bölümüm var:

Burada potansiyel olarak, sıfıra bölüm:

 /AccountInfoDouble ( ACCOUNT_BALANCE )

Temel bir kontrole ihtiyacı var.

G001 : Sınır dışı dizi nedir? Cahilliğim için özür dilerim.

Bu, örneğin:

 double array[ 3 ];
for ( int i= 0 ; i<= 3 ; i++) array[i];

Son yinelemede, sınırların dışında bir dizi olacaktır.

 
Yedelkin :

Burada potansiyel olarak, sıfıra bölüm:

Temel bir kontrole ihtiyacı var.

Bu, örneğin:

Son yinelemede, dizinin bir taşması olacaktır.

Teşekkür ederim.

Harika, işlevin doğru çalışıp çalışmadığını kontrol etmeniz mi gerekiyor?

 AccountInfoDouble ( ACCOUNT_BALANCE )

 
G001 : Harika, işlevin doğru çalışıp çalışmadığını kontrol etmeli miyim?
Peki, denge sıfıra gittiğinde ve fonksiyon doğru çalıştığında ne olur? :)
 

Bu sayaçta bir sorun mu var?

 int TotalBullStopOrders()
{
   int BullCounter= 0 ;
   int Total = OrdersTotal ();
   for (i = 0 ; i < Total; i++)
  {
     if ( OrderSelect ( OrderGetTicket (i)))
    {
       if ( OrderGetString ( ORDER_SYMBOL )== Symbol () && OrderGetInteger ( ORDER_MAGIC )==Magic)
      {
         if ( OrderGetInteger ( ORDER_TYPE )== ORDER_TYPE_BUY_STOP )
        {
          BullCounter++;
        }
      }
    }
  }
   return (BullCounter);
}
 
Yedelkin :
Peki, denge sıfıra gittiğinde ve fonksiyon doğru çalıştığında ne olur? :)
Haklısın, orada düzelteceğim.
Ama şimdi bakiyem sıfır değil ve danışman yeşil gülümsüyor ama çalışmayı bırakıyor, Anormal ve herhangi bir uyarı olmadan, gülümsememek daha iyi olur... :)
 
G001 : ?

for ifadesi , i değişkeninin türünü belirtmez. Magic değişkeni tanımlı değil. Çizgide

 if ( OrderSelect ( OrderGetTicket (i)))
OrderSelect() işlevi gereksizdir. Başka bir şey fark etmedi.
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Основы языка / Операторы / Оператор цикла for - Документация по MQL5
 
AndreyS :

hata içeren bir soru (CopyBuffer hatası - hata numarası: 4806) - Kaldırırım, Uyku gecikmesi ile düzeltirim ( 1000 ); - Bunu, göstergenin oluşturulacak zamanı olmamasına bağlıyorum.

Hata (4194304 bayt mevcut değil) ile ilgili sorun devam ediyor.

Yaratılmak için, büyük olasılıkla yaratıldı. Yalnızca verileri kopyalamadan önce, alınan verilerin kullanılabilirliğini kontrol etmek gerekir (göstergenin hesaplamak için zamanı var mıydı?). BarsCalculated işlevi yardımcı olacaktır.

Ardından, tüm zaman dilimlerini sembolle talep edersiniz. Bu veriler hazırsa diskten belleğe alınır, değilse her TF için farklı bir süre ile + 100 gösterge oluşturmaya başlarlar (bellek de tüketilir) ve tüm bunlar bellektedir. Bellekteki veriler hemen boşaltılmaz (tekrar talep ederseniz ne olur) ...

Grafikteki çubuk sayısını azaltın.

Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
  • www.mql5.com
Доступ к таймсериям и индикаторам / BarsCalculated - Документация по MQL5
 
Yedelkin :

for ifadesi , i değişkeninin türünü belirtmez. Magic değişkeni tanımlı değil. Çizgide

OrderSelect() işlevi gereksizdir. Başka bir şey fark etmedi.

Teşekkür ederim.

Operatörün dışındadır.

 input int     Magic          = 55 ;

 MqlTradeRequest request={ 0 };
MqlTradeResult result={ 0 };
MqlTradeCheckResult check={ 0 };
//-----
int LotsDigits;
int Indicator;
double IndicatorVal[ 5 ];
double Ask;
double Bid;
int i;
int pos;
double TradeLot;
ulong StopLevel;
double MeansFree;
double MaxLotAllowed;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
 
alexvd :

Yaratılmak için, büyük olasılıkla yaratıldı. Yalnızca verileri kopyalamadan önce, alınan verilerin kullanılabilirliğini kontrol etmek gerekir (göstergenin hesaplamak için zamanı var mıydı?). BarsCalculated işlevi yardımcı olacaktır.

Ardından, tüm zaman dilimlerini sembolle talep edersiniz. Bu veriler hazırsa diskten belleğe alınır, değilse her TF için farklı bir süre ile + 100 gösterge oluşturmaya başlarlar (bellek de tüketilir) ve tüm bunlar bellektedir. Bellekteki veriler hemen boşaltılmaz (tekrar talep ederseniz ne olur) ...

Grafikteki çubuk sayısını azaltın.

         while ( BarsCalculated (m_handle)==- 1 && ! IsStopped ()) Sleep ( 1 ); // Спасибо alexvd - откоректировал строку с учётом замечаний

Çubuk sayısı hiçbir şeyi değiştirmez,

seçenek için sorun dönemlerde gizlidir

 for ( int iperiod= 5 ; iperiod<= 19 ; iperiod++) 

çalışmıyor, 19-5=14 - farklı dönemler,

onları 4'e düşürürseniz, her şey çalışır, örneğin:

 for ( int iperiod= 16 ; iperiod<= 19 ; iperiod++)

fu-i IndicatorRelease(m_handle) gerçekten yanlış kullanılmasına rağmen.

Tanımlayıcıları IndicatorRelease işleviyle serbest bırakmasanız bile, yine de çalışması gerektiğini düşünüyorum,

sorun farklı dönemlerin sayısındadır.

Veya...