Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1706

 
EVGENII SHELIPOV #:

Макар что-то не так. Полюбим спасибо. Я сам нашел не совсем красивый вариант но он работает 

Покажи где идет обращение к GetAveragePriceManMaxOrders()
 

MakarFX #:
Покажи где идет обращение к GetAveragePriceManMaxOrders()

 ObjectCreate(0,"AveragePriceLineMinMaxOrders0",OBJ_HLINE, 0, 0, GetAveragePriceManMaxOrders(0));
   ObjectSet("AveragePriceLineMinMaxOrders0", OBJPROP_COLOR, clrLime);
   ObjectSet("AveragePriceLineMinMaxOrders0", OBJPROP_STYLE, STYLE_DASH);
   ObjectCreate(0,"AveragePriceLineMinMaxOrders1",OBJ_HLINE, 0, 0, GetAveragePriceManMaxOrders(1));
   ObjectSet("AveragePriceLineMinMaxOrders1",OBJPROP_COLOR, clrRed);
   ObjectSet("AveragePriceLineMinMaxOrders1", OBJPROP_STYLE, STYLE_DASH);

Макар у меня пока на этой функции ничего серьезного не висит . Вот только сделал обращение для визуализации объектов. Эта функция так сказать на будущее.

 
EVGENII SHELIPOV #:

Макар у меня пока на этой функции ничего серьезного не висит . Вот только сделал обращение для визуализации объектов. Эта функция так сказать на будущее.

Удали

ObjectCreate(0,"AveragePriceLineMinMaxOrders0",OBJ_HLINE, 0, 0, GetAveragePriceManMaxOrders(0));
   ObjectSet("AveragePriceLineMinMaxOrders0", OBJPROP_COLOR, clrLime);
   ObjectSet("AveragePriceLineMinMaxOrders0", OBJPROP_STYLE, STYLE_DASH);
   ObjectCreate(0,"AveragePriceLineMinMaxOrders1",OBJ_HLINE, 0, 0, GetAveragePriceManMaxOrders(1));
   ObjectSet("AveragePriceLineMinMaxOrders1",OBJPROP_COLOR, clrRed);
   ObjectSet("AveragePriceLineMinMaxOrders1", OBJPROP_STYLE, STYLE_DASH);

и все должно работать

 

Всем добрый день. У меня такая задача в мт4. Изначально в начале дня открыто 30 графиков разных инструментов с шаблоном среднесрок, при этом на всех графиках накинут индикатор и советник со своими параметрами. Затем я анализирую графики и на том где есть сигнал перехожу  с д1 на н1 и если на н1 есть сигнал то советником открывают позиции и он их сопровождает. В конце дня получается часть графиков осталась на д1, а другая часть на н1. И в начале следующего дня мне опять нужно чтобы все графики были на д1 с индикатором и советником в которых сохранены свои параметры. Пробовал сохранить профиль в тот момент, когда все графики на д1. Подгружаю этот профиль, но те графики которые на н1 переключены так на этом тф и остаются. Есть какое-то готовое решение чтобы все открытые графики в терминале просто и быстро переключить на д1 с сохранением всего что на графике накинуто и настроено? Скрипт, советник или ещё что-то?

И второй вопрос- если открыто 30 графиков и я стою на самом правом в нижней полосе где находятся все графики, то можно не перелистывая по одному графику, а одним нажатием переключится на самый правый график?


самый правый график из 30. стрелкой вправва по 1 листается- как перейти одним нажатием на самый правый?

 
DanilaMactep #:

Всем добрый день. У меня такая задача в мт4. Изначально в начале дня открыто 30 графиков разных инструментов с шаблоном среднесрок, при этом на всех графиках накинут индикатор и советник со своими параметрами. Затем я анализирую графики и на том где есть сигнал перехожу  с д1 на н1 и если на н1 есть сигнал то советником открывают позиции и он их сопровождает. В конце дня получается часть графиков осталась на д1, а другая часть на н1. И в начале следующего дня мне опять нужно чтобы все графики были на д1 с индикатором и советником в которых сохранены свои параметры. Пробовал сохранить профиль в тот момент, когда все графики на д1. Подгружаю этот профиль, но те графики которые на н1 переключены так на этом тф и остаются. Есть какое-то готовое решение чтобы все открытые графики в терминале просто и быстро переключить на д1 с сохранением всего что на графике накинуто и настроено? Скрипт, советник или ещё что-то?

И второй вопрос- если открыто 30 графиков и я стою на самом правом в нижней полосе где находятся все графики, то можно не перелистывая по одному графику, а одним нажатием переключится на самый правый график?

Вот скрипт который поможет в этом вопросе:

/********************************************************************\
|                                                           Test.mq5 |
|                                            © 2021, Alexey Viktorov |
|                       https://www.mql5.com/ru/users/alexeyvik/news |
\********************************************************************/
#property copyright "Viktorov"
#property link      "https://www.mql5.com/ru/users/alexeyvik/news"
#property version   "1.00"
#property strict

/********************Script program start function*******************/
void OnStart()
 {
  long prevChart = ChartFirst();
  while(prevChart >= 0)
   {
    if(ChartPeriod(prevChart) != PERIOD_D1)
      ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), PERIOD_D1);
    prevChart = ChartNext(prevChart);
   }
 }/******************************************************************/
/*****************************End program****************************/

Во втором вопросе поможет сочетание клавиш ctrl+tab или ctrl+shift+tab

или написать скрипт с одной строкой кода

ChartSetInteger(ChartFirst(), CHART_BRING_TO_TOP, 0, true)
 
Alexey Viktorov #:

Вот скрипт который поможет в этом вопросе:

Во втором вопросе поможет сочетание клавиш ctrl+tab или ctrl+shift+tab

или написать скрипт с одной строкой кода

благодарю за код- пошёл прикручу в скрипт, надеюсь заработает и без взрыва даже обойдётся:-) ;-)
 
Alexey Viktorov #:

Вот скрипт который поможет в этом вопросе:

Во втором вопросе поможет сочетание клавиш ctrl+tab или ctrl+shift+tab

или написать скрипт с одной строкой кода

Всё отлично получилось- огромное спасибо- теперь буду экономить кучу сил и времени P/S пока прикручивал ничего не рвануло и ещё для пеервода на н1 переделал)))))))

 
День добрый! Хотел уточнить у опытных пользователей, есть простой очень индикатор, код прикладываю ниже, хочу перейти в терминал Metatrader5 и текущий индикатор написанный в mql4 не подходит, есть ли основные принципы тригеры как переписать индикатор, или может как то его конвертировать
//+--где индикатор если indicator_chart_window то на график у нас в отдельном окне
#property indicator_separate_window
//+--уровни это сколько масивов Buf0[],Buf1[],Buf2[]; у нас каждый масив это линия
#property indicator_buffers 3
//+--сколько линий и какого цвета
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 Blue 
//+-- ширина линии
#property indicator_width1  2
#property indicator_width2  3
#property indicator_width3  3
//+--уровни
#property indicator_level1 30 //+--уровень 1
#property indicator_level2 50 //+--уровень 2
#property indicator_levelstyle 2 //+--тип линии уровня 2 - это пунктир
#property indicator_levelcolor Black //+-- цвет линии уровня
//+-- то что будет в окне "входные параметры"                                         
extern int RSIPERIOD=5;
extern double KOEFF1=1.4;
extern double KOEFF2=2; 
//+-- описываем какие у нас массивы (их три) и перменные (в даном случае параметры РСАЙ (D10,D11,D12;) это переменная                                                                                                                                                       
double Buf0[],Buf1[],Buf2[];
double D10,D11,D12;
//+-- Блок init ПРЕДПОЛОДЖИТЕЛЬНО описательный                                                                                                                                                                                                                                                                                                                                      
int init()
  {
   IndicatorDigits(0); //+--формат точности (количество знаков после десятичной точки) для визуализации значений индикатора в окне индикатора (цифры rsi 7 или 7,23)
   string short_name="KAVRSI";   //+-- задаем 2 строчками короткое имя        
   IndicatorShortName("KAVRSI"); //+-- задаем 2 строчками короткое имя
   
   D10=RSIPERIOD;D11=D10*KOEFF1;D12=D11*KOEFF2;; //+--тут мы высчитываем переменные которые описали как масивы выше
 
   SetIndexBuffer(0,Buf0); //+-- описываем 1 массив Buf0[] первый это нулевой второй это первый и т.д.
   SetIndexStyle (0,DRAW_LINE); //+-- говорим что этот масив хотим представить в виде линии 0 это порядковый номер линии соответствует номеру масива 
   SetIndexBuffer(1,Buf1); //+-- описываем 2 массив Buf1[]
   SetIndexStyle (1,DRAW_LINE); //+-- 1 это порядковый номер линии соответствует номеру масива Buf1[]
   SetIndexBuffer(2,Buf2);
   SetIndexStyle (2,DRAW_LINE);
   return(0);
  }
//+-- Блок start сама математика и ОТРИСОВКА                                                                                                             
int start()
  {
   if(Bars<=RSIPERIOD)return(0); //+-- начинаем задавать условия если количество баров меньше расчета (баров 9 а мы считаем по 14) то выдаем 0
   int ExtCountedBars=IndicatorCounted(); //+--Возвращает количество баров, не измененных после последнего вызова индикатора.
   //---- последний посчитанный бар будет пересчитан
   if (ExtCountedBars>0) ExtCountedBars--;
   if (ExtCountedBars<0) return(-1);
   //+-- for(int для int это переменна в нашем случае видимо int ExtCountedBars=IndicatorCounted()
   //+-- и тут мы задаем параметр i - его свойства и описание на основе пересчитаных баров 
   //+-- в нашем случае НЕТ НЕ ПЕРЕСЧИТАННЫХ - считаеться и последний! 
   for(int i=0;i<Bars-RSIPERIOD;i++)
      {
       Buf0[i] = iRSI(NULL,0,D10,0,i);//+-- говорим что 1 массив это рсай с параметром D10
//+-- Пишем в коде что бы ВМЕСТО красной и синей линией RSI2 и RSI3 была одна линия - 
//+-- чтобы вместо красной и синей была одна - мы получаем среднее значение этих линий, т.е.     
       Buf1[i] = (iRSI(NULL,0,D11,0,i)+iRSI(NULL,0,D12,0,i))/2; //+-- и у этой линии, по умолчанию, красный цвет  
//+-- когда выполняется условие
       if(iRSI(NULL,0,D11,0,i)>iRSI(NULL,0,D12,0,i))
//+-- то мы не меняем цвет линии, т.к. в МТ4 это нельзя сделать,
//+-- а берем и накладываем сверху другую линию с другим цветом      
       Buf2[i] = Buf1[i]; 
       else
       Buf2[i] = EMPTY_VALUE; //+-- добавляем else Buf2[i] = EMPTY_VALUE; EMPTY_VALUE - Пустое значение в индикаторном буфере 
      }
   return(0);
  }
 

Здравствуйте!

Прошу откликнуться программистов, дающих платные консультации по MQL5!

Или может кто-то кого посоветует. Буду благодарен!

 
Peperoni #:

Здравствуйте!

Прошу откликнуться программистов, дающих платные консультации!

Или может кто-то кого посоветует. Буду благодарен!

Либо фриланс, либо здесь вопрос свой задавайте.

Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • 2021.11.02
  • www.mql5.com
Самый большой фриланс c разработчиками программ на MQL5
Причина обращения: