Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1894

 
Vitaly Muzichenko #:

Funktioniert, aber das Minimum ist eine Einrückung, die von Hand eingestellt werden kann und mindestens

Ja, nicht weniger als 10 % des Fensters.

 
Alekseu Fedotov #:

Ja, mindestens 10 % des Fensters.

Es geht also schlecht aus.


 

Guten Tag zusammen. Ich habe 20 Werkzeuge geöffnet und muss die gleiche Vorlage in alle laden. Ist es möglich, dies mit einem Skript zu automatisieren? Wenn ja, können Sie uns bitte den Code mitteilen, wie man das macht?

 
DanilaMactep #:

Guten Tag zusammen. Ich habe 20 Werkzeuge geöffnet und muss die gleiche Vorlage in alle laden. Ist es möglich, dies mit einem Skript zu automatisieren? Wenn ja, teilen Sie uns bitte den Code mit, wie man das macht?

ein Skript erstellen - die Diagramme der Reihe nach durchgehen ( ChartFirst(), ChartNext() ) und die gewünschte Vorlage anwenden ( ChartApplyTemplate() )

Sie können es hier überprüfen: https://www.mql5.com/ru/blogs/post/747636 oder anpassen

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

Guten Tag zusammen. Ich habe 20 Werkzeuge geöffnet und muss die gleiche Vorlage in alle laden. Ist es möglich, dies mit einem Skript zu automatisieren? Wenn ja, können Sie bitte den Code mitteilen, wie man das macht?

Die Vorlage wird als Standard gespeichert. Und alle neuen Fenster werden mit der Standardvorlage geöffnet.

 
Tretyakov Rostyslav #:
Posten Sie einfach den Code.

Das sind fünf Seiten Code. Ihr werdet alle mit Steinen nach mir werfen, ich bin ein Amateur... das Forum sagt, dass es mehr als 64.000 Zeichen sind.

Dateien:
 
Sergey Dymov #:

Das sind fünf Seiten Code. Ihr werdet alle mit Steinen nach mir werfen, ich bin ein Amateur... Forum schwört, dass es mehr als 64000 Zeichen sind.

Sie sollten ein Zeichen in der Funktion'CopyXXXX' angeben:

   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);
}
//+------------------------------------------------------------------+
Dateien:
MaOsC_sv.mq5  11 kb
MaOsC_dr.ex5  11 kb
 
MatveySt #:


1) Beide müssen sma_h sein

   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) "+" einfügen

   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) Beide müssen sma_h sein

2) "+" einfügen

Ich danke Ihnen!!! Es klappt alles!
Grund der Beschwerde: