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

 
Vitaly Muzichenko # :

Çalışır, ancak minimum, elle ayarlanabilen ve daha az olmayan bir girintidir.

Evet, pencerenin en az %10'u.

 
Alekseu Fedotov # :

Evet, pencerenin en az %10'u.

Pekâlâ, kötü çıkıyor.


 

Herkese iyi günler. 20 aracım açık ve hepsi için aynı şablonu yüklemem gerekiyor. Bu bir komut dosyasıyla otomatikleştirilebilir mi? Cevabınız evet ise kodu nasıl yapacağınızı paylaşır mısınız?

 
DanilaMactep # :

Herkese iyi günler. 20 aracım açık ve hepsi için aynı şablonu yüklemem gerekiyor. Bu bir komut dosyasıyla otomatikleştirilebilir mi? Cevabınız evet ise kodu nasıl yapacağınızı paylaşır mısınız?

bir komut dosyası oluşturun - çizelgeleri tek tek gözden geçirin ( ChartFirst(), ChartNext() ) ve gerekli şablonu onlara uygulayın ( ChartApplyTemplate() )

buradan göz atabilirsiniz: https://www.mql5.com/ru/blogs/post/747636 veya kendiniz değiştirebilirsiniz

Полезняшки - скрипт для открытия чартов
Полезняшки - скрипт для открытия чартов
  • www.mql5.com
Небольшой скрипт, открывает недостающие пары и применяет туда шаблон
 
DanilaMactep # :

Herkese iyi günler. 20 aracım açık ve hepsi için aynı şablonu yüklemem gerekiyor. Bu bir komut dosyasıyla otomatikleştirilebilir mi? Cevabınız evet ise kodu nasıl yapacağınızı paylaşır mısınız?

Varsayılan olarak şablon hatırla. Ve tüm yeni pencereler varsayılan şablona göre açılacaktır.

 
Tretyakov Rostyslav # :
kodu gönder

Evet, 5 sayfalık kod var. Bütün terliklerini burada bana atacaksın, ben bir amatörüm ... forum yemin ediyor ki 64000'den fazla karakter var

Dosyalar:
 
Sergey Dymov # :

Evet, 5 sayfalık kod var. Bütün terliklerini burada bana atacaksın, ben bir amatörüm ... forum yemin ediyor ki 64000'den fazla karakter var

' CopyXXXX ' işlevinin bir karakter belirtmesi gerekir:

   int   copy_open= CopyOpen ( Symbol () , PERIOD_M15 , 0 , 1 ,OpenPrice);
   if (copy_open< 0 )
       Print ( "Неудачная попытка копирования OpenPrice" );
 


Доброго времени суток!
Помогите разобраться я новичок в програмировании, посмотрел ролик "Как написать индикатор" писал код с ведущим ,от кампилировал без ошибок, вывожу на терминал индикатор не отрисовывается, ошибок нет в окне он есть в списке запущиных индекаторовв тоже. Что я делаю не так?




//+------------------------------------------------------------------+
//|                                                     MaOsC Уч.mq5 |
//|                                             Copyright 2022,Игорь |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022,Игорь"
#property link        " https://www.mql5.com "
#property version    "1.00"
#property indicator_separate_window                                                //Выводить индикатор в отдельное окно
#property indicator_buffers 4
#property indicator_plots    1                                                      //Количество графических серий в индикаторе
#property indicator_label1    "MAOS"
#property indicator_type1 DRAW_COLOR_HISTOGRAM                                    // Графическое построение цветная гистограмма
#property indicator_color1 clrLightBlue , clrBlue , clrYellow , clrGold , clrDarkOrange
#property indicator_style1 STYLE_SOLID                                            //стиль линий для отрисовки
#property indicator_width1 2                                                      //толшина линий

input uint                  MaFastPeriod    = 7 ;
input uint                  MaSlowPeriod    = 33 ;
input ENUM_MA_METHOD        MaMethod        = MODE_SMA ;                         //метод МА
input ENUM_APPLIED_PRICE    MaAppliaedPrice = PRICE_CLOSE ;

double   MAOSBuffer[];       //буфер если связан с ценой то тип double
double   ColorsBuffer[];
double   FastBuffer[];
double   SlowBuffer[];


int    FastPeriod,                                                                 // глобальные переменные
      SlowPeriod,
      fma_h, sma_h;                                                               // описатель (хэндл) индекатора,для того что-бы можно было обращаться к нему в дальнейшем

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
{
   FastPeriod = int (MaFastPeriod < 1 ? 1 : MaFastPeriod);   //описание действия (если MaFastPeriod меньше 1 то указываем 1 а если оно больше либо = 1 то указываем MaFastPeriod)
   SlowPeriod = int (MaSlowPeriod == MaFastPeriod ? FastPeriod + 1 : MaSlowPeriod < 1 ? 1 : MaSlowPeriod); // описание действия(если MaSlowPeriod = FastPeriod то в таком случае +1,а иначе если MaSlowPeriod меньше 1 то указываем 1 а если оно больше либо = 1 то указываем MaSlowPeriod)
   
   SetIndexBuffer ( 0 , MAOSBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 , ColorsBuffer, INDICATOR_COLOR_INDEX );
   SetIndexBuffer ( 2 , FastBuffer, INDICATOR_CALCULATIONS );
   SetIndexBuffer ( 3 , SlowBuffer, INDICATOR_CALCULATIONS );   
   
   ArraySetAsSeries (MAOSBuffer, true );
   ArraySetAsSeries (ColorsBuffer, true );
   ArraySetAsSeries (FastBuffer, true );
   ArraySetAsSeries (SlowBuffer, true );

   ResetLastError ();
   
   fma_h = iMA ( NULL , PERIOD_CURRENT , FastPeriod, 0 , MaMethod, MaAppliaedPrice);
   if (fma_h == INVALID_HANDLE )
   {
       Print ( "Не удалось инициализировать индикатор Moving Average" );
       return INIT_FAILED ;
   }
   
   fma_h = iMA ( NULL , PERIOD_CURRENT , SlowPeriod, 0 , MaMethod, MaAppliaedPrice);
   if (sma_h == INVALID_HANDLE )
   {
       Print ( "Не удалось инициализировать индикатор Moving Average" );
       return INIT_FAILED ;
   } 
   
   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[])
{
   if (rates_total < 4 ) return ( 0 ); //индикатор. проверку и расчёт количества прощитываемых баров(если rates_total меньше 4 баров то ни какого вычесления и отрисовки не делаем )
   
   int limit = rates_total - prev_calculated;
   if (limit > 1 )
   {
      limit = rates_total - 2 ;
       ArrayInitialize (MAOSBuffer, 0 );
       ArrayInitialize (ColorsBuffer, 4 );
       ArrayInitialize (FastBuffer, 0 );
       ArrayInitialize (SlowBuffer, 0 );
   }
   
   int count =(limit > 1 ? rates_total : 1 ),
   copied = 0 ;
   
   copied = CopyBuffer (fma_h, 0 , 0 , count, FastBuffer);
   
   if   (copied != count)
       return ( 0 );
       
   copied = CopyBuffer (sma_h, 0 , 0 , count, SlowBuffer);
   
   if   (copied != count)
       return ( 0 );


   for ( int i=limit; i>= 0 ; i--)
   {
       MAOSBuffer[i]   = FastBuffer[i] - SlowBuffer[i];
       ColorsBuffer[i] = (MAOSBuffer[i] > 0 ? (MAOSBuffer[i] > MAOSBuffer[i= 1 ] ? 0 : 1 ) : MAOSBuffer[i] < 0 ? (MAOSBuffer[i] < MAOSBuffer[i+ 1 ] ? 2 : 3 ) : 4 );
   }

   return (rates_total);
}
//+------------------------------------------------------------------+
Dosyalar:
MaOsC_sv.mq5  11 kb
MaOsC_dr.ex5  11 kb
 
MatveySt # :


1) Her ikisi de sma_h olmalıdır

   fma_h = iMA ( NULL , PERIOD_CURRENT , FastPeriod, 0 , MaMethod, MaAppliaedPrice);
   if (fma_h == INVALID_HANDLE )
   {
       Print ( "Не удалось инициализировать индикатор Moving Average" );
       return INIT_FAILED ;
   }
   
   fma_h = iMA ( NULL , PERIOD_CURRENT , SlowPeriod, 0 , MaMethod, MaAppliaedPrice);
   if ( sma_h == INVALID_HANDLE )
   {
       Print ( "Не удалось инициализировать индикатор Moving Average" );
       return INIT_FAILED ;
   } 

2) "+" koyun

   for ( int i=limit; i>= 0 ; i--)
   {
       MAOSBuffer[i]   = FastBuffer[i] - SlowBuffer[i];
       ColorsBuffer[i] = (MAOSBuffer[i] > 0 ? (MAOSBuffer[i] > MAOSBuffer[i = 1 ] ? 0 : 1 ) : MAOSBuffer[i] < 0 ? (MAOSBuffer[i] < MAOSBuffer[i+ 1 ] ? 2 : 3 ) : 4 );
   }
 
Tretyakov Rostyslav # :

1) Her ikisi de sma_h olmalıdır

2) "+" koyun

Teşekkürler!!! Her şey çalıştı