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

 
STARIJ :
bir komut dosyası yazın ve her ifadeden sonra Alert() işleviyle + GetLastError() bilgilerini görüntüleyin - hemen yukarıdaki komut dosyası örneğine bakın
Kodda bir hata varsa bunu nasıl yapabilirim? Komut dosyası çalışmazsa Alert() bana yardımcı olmaz!
 
Lowech :
Kodda bir hata varsa bunu nasıl yapabilirim? Komut dosyası çalışmazsa Alert() bana yardımcı olmaz!

komut dosyasındaki ilk satır dışındaki her şeyi bırakın ve bir Alert ekleyin . Sonra yavaş yavaş ekleyin - programlamayı ve hata ayıklamayı öğrenin

 
LRA :
Çabuk anladın. Barları nasıl bulacaksınız? Kullanılacak bir döngü veya zaman yapısında mı?

EURUSD

 //+-------------------------------------------------------+
//| Проверка дней недели                       PRVERKA.mq4|
//| если первая пятница месяца была бычьей, а             |
//| 2-й понедельник медвежий - открываем сделку на продажу|
//+-------------------------------------------------------+
#property strict
void OnStart ()
{
   int День= Day (), ДеньН= DayOfWeek ();
   Alert ( "----------------------" );
   int ДеньНачалаМесяца = (ДеньН-День+ 36 ) % 7 ;

// Если день начала месяца = 6, то число первой пятницы равно 7. Иначе 6 - день начала месяца
   int ЧислоПервойПятницы = ДеньНачалаМесяца== 6 ? 7 : 6 -ДеньНачалаМесяца;

// Если день начала месяца < 2, то число второго понедельника равно 9 - день начала месяца. Иначе 16 - день начала месяца
   int ЧислоВторогоПонедл = (ДеньНачалаМесяца< 2 ? 9 : 16 )-ДеньНачалаМесяца;
   Alert ( "ЧислоПервойПятницы = " , ЧислоПервойПятницы, "  ЧислоВторогоПонедл = " , ЧислоВторогоПонедл);

   if (ЧислоВторогоПонедл>=День)
  {
     Alert ( "Надо подождать числа " , ЧислоВторогоПонедл+ 1 );
     return ;   // Отключил до числа, следующего за вторым понедельником
  }

   int Продавать= 0 ;
   for ( int Бар= 0 ;;Бар++)   //  Ищем на D1 номера баров для заданных чисел месяца
  {
     if ( TimeDay ( iTime ( NULL , PERIOD_D1 ,Бар))==ЧислоВторогоПонедл)
    {
       if ( iClose ( NULL , PERIOD_D1 ,Бар)< iOpen ( NULL , PERIOD_D1 ,Бар)) Продавать++;
       break ;
    }
     if ( TimeDay ( iTime ( NULL , PERIOD_D1 ,Бар))==ЧислоПервойПятницы)
       if ( iClose ( NULL , PERIOD_D1 ,Бар)> iOpen ( NULL , PERIOD_D1 ,Бар)) Продавать++;
  }
   if (Продавать== 2 ) bool x= OrderSend ( _Symbol , OP_SELL , 0.1 , Bid , 7 , 0 , 0 );
}
 
LRA :

komut dosyasındaki ilk satır dışındaki her şeyi bırakın ve Uyarı ekleyin. Sonra yavaş yavaş ekleyin - programlamayı ve hata ayıklamayı öğrenin

Hiçbir şey işe yaramadı ama yardımın için teşekkürler.
 
int 1 = OrdersHistoryTotal();
if (Sipariş Seçimi(1,SELECT_BY_POS,MODE_HISTORY))
int ipucu=SiparişTürü();
Tünaydın. Yardıma ihtiyacım var, eğer satış emri kapandıysa bir sonraki emir sadece alış ile açılabilir , emir geçmişini kullanarak son kapatılan emri bulup türünü öğrenmek istiyorum ama çalışmıyor benim için (kim bilir neyi yanlış yapıyorum, söyle bana?) kodun çalışması için bana yardımcı olacak cevabı bilmeyen, lütfen yazmayın!
 
Lowech :
int 1 = OrdersHistoryTotal();
if (Sipariş Seçimi(1,SELECT_BY_POS,MODE_HISTORY))
int ipucu=SiparişTürü();
Tünaydın. Yardıma ihtiyacım var, eğer satış emri kapandıysa bir sonraki emir sadece alış ile açılabilir , emir geçmişini kullanarak son kapatılan emri bulup türünü öğrenmek istiyorum ama çalışmıyor benim için (kim bilir neyi yanlış yapıyorum, söyle bana?) kodun çalışması için bana yardımcı olacak cevabı bilmeyen, lütfen yazmayın!
Yayın yapmaya çalıştığımızda bir hata mesajı veriyor: '1' - isim bekleniyor. 1 numara yerine değişken adı gerektirir
 

İyi akşamlar, kod aşağıdadır, tik sayacı teorik olarak yazılmıştır, döngüdeki her çubukta kenelerin nasıl sayılmasını istedim, her yeni çubukta sayaç sıfırlanır, gösterge başladığında, gösterir. son çubukta 1 tik olduğunu ve mevcut tiklerin o andan itibaren saymaya başladığını belirten yorumlar

başlatma, ardından birkaç mum çevrimiçi çalıştığında, her şey her şeyi doğru bir şekilde hizalar, her şeyin kene hacimleriyle eşleştiğini gösterir. Belki yanlış bir şey yazdım?

 #property indicator_chart_window
double old_price;
double count_plus= 0 ,count_minus= 0 ,sum= 0 ,psum= 0 ;
bool Fun_New_Bar= false ;
datetime Prev_Time= 0 ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   
//---
   return ( INIT_SUCCEEDED );
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {

   double price;
   int i= 0 ;
   int limit; 
   double delta; 
limit=rates_total-prev_calculated;
if (prev_calculated< 1 ) limit=rates_total- 1 ;
for (i=limit; i>= 0 ; i--)  
{
 if (Fun_New_Bar== false )                              
  {                                             
   
   if (Prev_Time== 0 ) 
     {
        Prev_Time=time[i];
        Fun_New_Bar= false ;
     }
   if (Prev_Time!=time[i])                        
     {
      Prev_Time=time[i];
      psum=sum;
      count_plus= 0 ;
      count_minus= 0 ;
      sum= 0 ;                         
      Fun_New_Bar= false ;                            
     }
    } 
   if (old_price== 0 ) old_price=close[i];
   
    price = close[i];
    delta = price - old_price;
     
     //-- считаем "верхние" тики 
     if (delta>= 0 ) {
      count_plus++;
               }
      
     //-- считаем "нижние" тики
     if (delta< 0 ) {
      count_minus++;
        }
    sum=count_minus+count_plus;   
         //----
    old_price=price;
    
   Comment ( StringFormat ( "Выводим цены\ncount_minus = %G\ncount_plus = %G\nsum = %G\npsum = %G" ,count_minus,count_plus,sum,psum));
}

   return (rates_total);
  }
 
PokrovMT5 :

İyi akşamlar, kod aşağıdadır, tik sayacı teorik olarak yazılmıştır, döngüdeki her çubukta kenelerin nasıl sayılmasını istedim, her yeni çubukta sayaç sıfırlanır, gösterge başladığında, gösterir. son çubukta 1 tik olduğunu ve mevcut tiklerin o andan itibaren saymaya başladığını belirten yorumlar

başlatma, ardından birkaç mum çevrimiçi çalıştığında, her şey her şeyi doğru bir şekilde hizalar, her şeyin kene hacimleriyle eşleştiğini gösterir. Belki yanlış bir şey yazdım?

Sorunu ve sorunun kendisini doğru anladıysam, geçmişe keneler kaydedilmez. Göstergeme bakın .

 
Alexey Viktorov :

Sorunu ve sorunun kendisini doğru anladıysam, geçmişe keneler kaydedilmez. Göstergeme bakın .


Link çalışmıyor sayfa yok diyor

 
PokrovMT5 :

İyi akşamlar, kod aşağıdadır, tik sayacı teorik olarak yazılmıştır, döngüdeki her çubukta kenelerin nasıl sayılmasını istedim, her yeni çubukta sayaç sıfırlanır, gösterge başladığında, gösterir. son çubukta 1 tik olduğunu ve mevcut tiklerin o andan itibaren saymaya başladığını belirten yorumlar

başlatma, ardından birkaç mum çevrimiçi çalıştığında, her şey her şeyi doğru bir şekilde hizalar, her şeyin kene hacimleriyle eşleştiğini gösterir. Belki yanlış bir şey yazdım?

dönüş oranları_toplam-1 veya 0