MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 679

 
Artyom Trishkin :

Teşekkür ederim.

 
Tünaydın! Yalvarırım, en basit döngüdeki soruyu çözmeme yardım et.
Döngünün özü, I değişkeninin bir artmasıdır.
Değer yazdırılır.
Döngünün kendisi:

(int i=0; i<100000;i++) için
{
Yazdır("I=",i);
eğer(i>3000)
{
Yazdır("I=",i);
kırmak;
}

Soru şu ki, if (i> 3000) koşulunda sayı yaklaşık olarak 100'den fazlaysa (benim durumumda üç bin),
daha sonra baskı farklı değerler verir. Sürekli.
Döngü gibi görünüyorsa şunu söylemek istiyorum
(int i=0; i<100000;i++) için
{
Yazdır("I=",i);
if(i>100)
{
Yazdır("I=",i);
kırmak;
}

Ardından Baskı test cihazında I = 0, sonra 1, sonra 2, sonra 3, sonra 4, ... ve 100'e kadar devam eder.
Ancak! Koşul örneğin if(i>3000) ise, Print değeri başlayan değeri gösterir... Nasıl doğru formüle edeceğimi bile bilmiyorum...
rastgele bir sayıdan, örneğin 2895'ten itibaren birer birer ekler!

İşte görsel olarak nasıl göründüğü:

eğer ben > 100

100


eğer ben >3000

3000



Sorun nedir? Bütün gün kavga ettim ve anlayamıyorum((((Pliz Yardım!







 
eflaer :
Sorun nedir? Bütün gün kavga ettim ve anlayamıyorum((((Pliz Yardım!

günlük dosyasını açın, tam bir rapor var

 
Taras Slobodyanik :

günlük dosyasını açın, tam bir rapor var

Teşekkür ederim, günlük dosyasını açtım, gerçekten her şey sıfırdan başlıyor .................. neden günlükte her şey yazmıyor?

Günlükte her şeyin görünmesini sağlamak için, tüm çıktıya ihtiyaç duyulduğu için kenara ihtiyacım var, algoritmada bir hata arıyorum.

 
Sadece bir günlük dosyasını açmak için her zaman, 7+GB ağırlığındaki txt elverişsizdir.....
 
eflaer :

Teşekkür ederim, günlük dosyasını açtım, gerçekten her şey sıfırdan başlıyor .................. neden günlükte her şey yazmıyor?

Günlükte her şeyin görünmesini sağlamak için, tüm çıktıya ihtiyaç duyulduğu için kenara ihtiyacım var, algoritmada bir hata arıyorum.

günlüğün çıktısı ve grafik nesnelerle çalışmak çok fazla kaynak (zaman) gerektirdiğinden, MT bunun için optimize edilmiştir ve günlüğün bir bölümünü "yutabilir", ancak komut dosyasının gövdesini hızlı bir şekilde yürütebilir

Print()'ten sonra Sleep (120) ekle


eflaer :
Sadece bir günlük dosyasını açmak için her zaman, 7 + GB ağırlığındaki txt elverişsizdir .......

periyodik olarak silin, günlük tarihlere göre kaydedilir, bugün yalnızca deneyler yazarsanız, neden sizin için bu kadar büyük

 
Çok teşekkürler! Gerçekten yardımcı oldu! Hatayı aramaya devam edeceğim...
 
Vitali Vakulin :
Merhaba. Bilenlerden yardım isteyin. Düşüş, örneğin %10 ise, danışman yeni sipariş açmayacak, açık siparişleri TP'ye getirecek ve bu kadar, sadece ortalamaları açık olacak şekilde yapmak istiyorum. Bu, birkaç çift üzerinde ticaret yapılırsa büyük bir düşüşe girmemeye yardımcı olacaktır. Fonksiyonun çalışmasını anlıyorum, uygularım.

beyler lütfen yardım edin

 

İyi akşamlar.

Bir danışman yazmaya yönelik ilk girişimler. Lütfen bana EA'nın neden sadece Satın Al'ı açtığını söyleyebilir misiniz? Hata nerede?

extern double volume     = 0.05 ;   // Volume
extern int     stopLoss   = 1 ;       // StopLoss
extern int     takeProfit = 3 ;       // TakeProfit
extern int     slippage  = 10 ;           // Slippage
extern int     Period_bars  = 100 ;     // Period
extern int     magic      = 321 ;     // Magic
extern int     ATR_Period = 50 ;       // ATR Period

datetime newCandle;
double ABS_High= 0 ;
double ABS_Low= 1000000 ;

int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

void OnDeinit ( const int reason)
  {
//---
 

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick ()
  {

         double TD_Close= Close [ 1 ];

         double ATR= iATR ( Symbol (), Period (),ATR_Period, 0 );

         double bsl= NormalizeDouble ( Ask -(stopLoss*ATR), _Digits );

         double btp= NormalizeDouble ( Ask +(takeProfit*ATR), _Digits ); 

         double ssl= NormalizeDouble ( Bid +(stopLoss*ATR), _Digits );

         double stp= NormalizeDouble ( Bid -(takeProfit*ATR), _Digits ); 

         for ( int i= 2 ; i<=Period_bars; i++)
        {
                 if (Period_bars<= Bars - 1 )
                {
                         if (ABS_High< High [i]) ABS_High= High [i];
                         if (ABS_Low> Low [i]) ABS_Low= Low [i];
                }

                 break ;
        }

         if (TD_Close>ABS_High)
        {
                 if ( OrdersTotal () < 1 && newCandle != Time [ 0 ]) int tiket= OrderSend ( Symbol (), OP_BUY ,volume, Ask ,slippage,bsl,btp, "Система пробоя открыла ордер BUY " ,magic, 0 );

                 else newCandle = Time [ 0 ];
        }
         else
         if (TD_Close<ABS_Low)
        {
                 if ( OrdersTotal () < 1 && newCandle != Time [ 0 ]) int tiket= OrderSend ( Symbol (), OP_SELL ,volume, Bid ,slippage,ssl,stp, "Система пробоя открыла ордер SELL " ,magic, 0 );
                 else newCandle = Time [ 0 ];
        }
}

 
Andrey.Sabitov :

İyi akşamlar.

Bir danışman yazmaya yönelik ilk girişimler. Lütfen bana EA'nın neden sadece Satın Al'ı açtığını söyleyebilir misiniz? Hata nerede?



Kodu daha dikkatli bir şekilde yapıştırın :-)

biçimlendirmeye ek olarak, ABS_High'ın nerede değiştiğini göremezsiniz, sabit bir 0 gibi görünür ve TD_Close>ABS_High koşulu her zaman doğrudur