新人对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);

而且一切都应该工作

 

大家下午好。我在mt4中有这样一个任务。最初,在一天的开始,我用中期模板打开了30张不同符号的图表,在所有的图表上我都附上了指标和EA及其参数。然后我分析图表,在有信号的图表上,我 D1移动到n1,如果n1上有信号,专家顾问就开仓,并支持它们。最后发现,图表的一部分在d1上,而另一部分在n1上。第二天一开始,我又需要所有的图表都在d1上,并且有保存参数的指标和EA。我曾试图在所有的图表都在d1的时候保存一个配置文件。我加载了配置文件,但已经切换到N1的图表仍然留在这个时间框架上。有没有一个现成的解决方案,可以将终端中所有打开的图表轻松、快速地切换到d1,并保存我的所有设置?脚本、专家顾问或其他东西?

第二个问题--如果我有30个打开的图表,我站在所有图表所在的底栏右侧,我可以一键切换到正确的图表,而不是在一个个图表中翻页?


在30个图表中,最右边的一个。右边的箭头每次滚动1个--我怎样才能去到最右边的一个?

 
DanilaMactep #:

大家下午好。我在mt4中有这样一个任务。最初,在一天的开始,我用中期模板打开了30张不同符号的图表,在所有的图表上我都附上了指标和EA及其参数。然后我分析图表,在有信号的图表上,我 D1移动到n1,如果n1上有信号,专家顾问就开仓,并支持它们。最后发现,图表的一部分在d1上,而另一部分在n1上。第二天一开始,我又需要所有的图表都在d1上,并且有保存参数的指标和EA。我曾试图在所有的图表都在d1的时候保存一个配置文件。我加载了配置文件,但已经切换到N1的图表仍然留在这个时间框架上。有没有一个现成的解决方案,可以将终端中所有打开的图表轻松、快速地切换到d1,并保存我的所有设置?脚本、专家顾问或其他东西?

而第二个问题--如果我有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,而搞砸了什么都没有爆发,也为转移到N1重新工作)))))))。

 
日安!我想请教有经验的用户,有一个非常简单的指标,代码附在下面,我想切换到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