绘制一个正方形或长方形。真的需要帮助... - 页 2 12345678 新评论 Alex_Profit 2016.09.30 11:13 #11 下午好。真的需要帮助,但却不知道该怎么做。如果你能提供帮助。需要一个指标来标记每个月的第一个柱子。随着高价和低价线的绘制,直到月底,可选择月数。 Pr.(三个月。用线标出三个月)。或者看一下样品。 提前感谢。 Alexey Viktorov 2016.09.30 11:23 #12 这里有一个样本脚本,从开盘+和-20点开始标记当天的情况。 同样,你可以对月份进行定义,并分别对这个月的高点和低点进行定义。/********************************************************************\ 20-20.mq4 | Viktorov | v4forex@yandex.ru | \********************************************************************/ #property copyright "Viktorov" #property link "v4forex@yandex.ru" #property version "1.00" MqlDateTime mqlDateTime; MqlRates mqlRates[1]; /********************Script program start function*******************/ void OnStart() { double point = _Digits%2 == 0 ? _Point : _Point*10; datetime dt = ChartTimeOnDropped(); TimeToStruct(ChartTimeOnDropped(), mqlDateTime); if(CopyRates(_Symbol, PERIOD_D1, dt, 1, mqlRates) < 0) Print(""); string objName = TimeToString(mqlRates[0].time, TIME_DATE); ObjectCreate(0, objName, OBJ_TREND, 0, mqlRates[0].time, mqlRates[0].open, mqlRates[0].time+PeriodSeconds(PERIOD_D1), mqlRates[0].open); ObjectSetInteger(0, objName, OBJPROP_RAY_RIGHT, false); ObjectCreate(0, objName+"+20", OBJ_TREND, 0, mqlRates[0].time, mqlRates[0].open+20*point, mqlRates[0].time+PeriodSeconds(PERIOD_D1), mqlRates[0].open+20*point); ObjectSetInteger(0, objName+"+20", OBJPROP_RAY_RIGHT, false); ObjectCreate(0, objName+"-20", OBJ_TREND, 0, mqlRates[0].time, mqlRates[0].open-20*point, mqlRates[0].time+PeriodSeconds(PERIOD_D1), mqlRates[0].open-20*point); ObjectSetInteger(0, objName+"-20", OBJPROP_RAY_RIGHT, false); Comment(mqlRates[0].open, "\n" , objName, "\n" , sizeof(mqlDateTime), "\n" ); }/*******************************************************************/ Alex_Profit 2016.09.30 14:48 #13 AlexeyVik:这里有一个样本脚本,从开盘+和-20个点来标记当天的情况。 同样,你可以对月份进行定义,并分别对这个月的高点和低点进行定义。 非常感谢你,虽然有点费劲,但似乎还行。 Alex_Profit 2016.09.30 16:02 #14 AlexeyVik: 谢谢你的反馈。我不知道我是否正确地陈述了我的同花顺。我需要这样的东西。如果你能提供帮助,或者告诉我如何在一个指标中实现它,我将非常感激。我是编程新手。 竖线的绘制是正确的。我不明白如何将 "地平线和圆圈与高点和低点绑定到第一根蜡烛上"。希望得到任何帮助。 Alexey Viktorov 2016.09.30 17:47 #15 阅读关于CopyRates()函数和MqlRates 结构的文档。在他们的帮助下,我们可以获得所有必要的数据来实现你的愿望。然后告诉我你有什么,你不能实现什么。否则,帮助你的请求就会被解读为要求为你做这件事。对不起,我说得太直白了。 Alex_Profit 2016.10.04 16:25 #16 这里是源代码。我希望你能帮助我完善它。我需要找到每个月第一周的最高点和最低点。//+------------------------------------------------------------------+#property copyright ""#property link ""#property indicator_chart_window //--- Внешние Глобальные переменные extern int TF = 43200; //--- Через сколько баров рисуются линии (На каком Т/Ф)extern int barsToProcess = 5; //--- Кол-во отображаемых периодов (линий) extern string TimeFrames = "M1,5,15,30; 60H1; 240H4; 1440D1; 10080W1; 43200MN."; //--- Подсказка кол-во боров в Т/Ф //--- Глобальные переменные string Name_Line; //--- Имя Вертикальных уровней//double Price_H = High[0]; //--- Макс цены //double Price_L = Low[0]; //--- Мин цены//+------------------------------------------------------------------+int init() { //--- return(0); }//+------------------------------------------------------------------+int deinit() { int i; for (i=0; i<Bars; i++) //--- Выбираем все установленные объекты { ObjectDelete(Name_Line + DoubleToStr(i,0)); //--- Удаляем все установленные линии } return(0); }//+------------------------------------------------------------------+int start(){ int counted_bars = IndicatorCounted(); //--- перем counted_bars = функц. Возвращает количество баровint limit; //--- переменная старт кол-во баров. Линии рисуем о по всем барамint i=0; //--- переменная i = 0 обнуление if(counted_bars > 0) counted_bars --; //--- последний посчитанный бар будет пересчитан //--- основной цикл limit = Bars - counted_bars; for(i = 0; i < limit; i ++) { //+----- Выбираем количество линий отображаемых на экране if(limit > barsToProcess) //--- Если кол-во линий > Кол-ву отображаемых периодов (линий) { limit = barsToProcess; //--- Тогда устанавливаем Кол-во отображаемых периодов (линий) Name_Line = "Time_VLine M" + TF + " "+DoubleToStr(i,0); //--- И присваиваем имя с соответствующими параметрами //+------------------------ Рисуем линии -----------------------------------------------------+ while (i<limit) //--- Пока есть линии в окне терминала. Или пока висит индикатор в окне терминала. { datetime t_Line = iTime(Symbol(),TF,i); //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара { ObjectCreate (Name_Line + DoubleToStr(i,0),OBJ_VLINE,0,t_Line,0); //--- Создаём обьект вертикальную линию ObjectSet (Name_Line + DoubleToStr(i,0),OBJPROP_STYLE,2); //--- Со стилем ObjectSet (Name_Line + DoubleToStr(i,0),OBJPROP_COLOR,DimGray); //--- Со цветом ObjectSet (Name_Line + DoubleToStr(i,0),OBJPROP_WIDTH,0); //--- С толщиной ObjectSet (Name_Line + DoubleToStr(i,0),OBJPROP_BACK,0); //--- С типом отображения. Объект на заднем плане //+-----------------------------------------------------------------------------+ } i++; } } } return(0);} 懒惰是进步的动力,或者如何交互性的使用图形 指标和提醒的盈利能力可视化测试 指标和信号盈利能力的可视化优化 Alexey Viktorov 2016.10.05 04:57 #17 if(CopyRates(_Symbol, PERIOD_W1, dt, 1, mqlRates) < 0) //--- Если бросили скрипт на выбранную свечку Print("");在我的代码中,这不是一支蜡烛,而是一天。在你们那里,是一个星期。从这一点上,你可以得到 画线的时间。你可能需要一个月的时间。月初的时候。但它很少与一周的开始相吻合。因此,你必须再施点魔法,弄清楚如何计算第一周的情况。 ObjectCreate(0, objName, OBJ_TREND, 0, mqlRates[0].time + PERIOD_MN1, mqlRates[0].high, mqlRates[0].time + PeriodSeconds(PERIOD_MN1), mqlRates[0].high); 因此,可以说是感受到了差异。在mql4中还没有很大的区别,但谁知道会有什么变化等着我们......//--- Что здесь не так, при построении линии по лоу. На графике её нет. И Ошибки компиляции тоже нет? //--- НО по отдельности всё работает. 注意趋势线的名称。 //----- Для чего нужен этот блок если линия отрисовывается на графике и без него 我有3条线,这就是为什么我有3个函数和3条线的名称。 轻松快捷开发 MetaTrader 程序的函数库 (第十九部分) Alex_Profit 2016.10.07 05:02 #18 谢谢你的帮助,但我没有完全理解。 Alexey Viktorov 2016.10.07 05:09 #19 那么只有一个问题的答案//--- Что здесь не так, при построении линии по лоу. На графике её нет. И Ошибки компиляции тоже нет? //--- НО по отдельности всё работает. 你这里有相同的行名,它应该是不同的。你为什么要删除和更正你的信息? Alex_Profit 2016.10.07 07:30 #20 你很长时间没有回复,我以为你没有回答愚蠢的问题,所以我把它们删除了。 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下午好。真的需要帮助,但却不知道该怎么做。如果你能提供帮助。
需要一个指标来标记每个月的第一个柱子。随着高价和低价线的绘制,直到月底,可选择月数。
Pr.(三个月。用线标出三个月)。或者看一下样品。
提前感谢。
这里有一个样本脚本,从开盘+和-20点开始标记当天的情况。 同样,你可以对月份进行定义,并分别对这个月的高点和低点进行定义。
这里有一个样本脚本,从开盘+和-20个点来标记当天的情况。 同样,你可以对月份进行定义,并分别对这个月的高点和低点进行定义。
AlexeyVik: 谢谢你的反馈。
我不知道我是否正确地陈述了我的同花顺。我需要这样的东西。![图片 图片](https://c.mql5.com/mql4/forum/2016/09/bsfkaarfdnyfdcqd_small.png)
如果你能提供帮助,或者告诉我如何在一个指标中实现它,我将非常感激。
我是编程新手。
竖线的绘制是正确的。
我不明白如何将 "地平线和圆圈与高点和低点绑定到第一根蜡烛上"。
希望得到任何帮助。
阅读关于CopyRates()函数和MqlRates 结构的文档。在他们的帮助下,我们可以获得所有必要的数据来实现你的愿望。
然后告诉我你有什么,你不能实现什么。否则,帮助你的请求就会被解读为要求为你做这件事。对不起,我说得太直白了。
这里是源代码。我希望你能帮助我完善它。我需要找到每个月第一周的最高点和最低点。
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
#property indicator_chart_window
//--- Внешние Глобальные переменные
extern int TF = 43200; //--- Через сколько баров рисуются линии (На каком Т/Ф)
extern int barsToProcess = 5; //--- Кол-во отображаемых периодов (линий)
extern string TimeFrames = "M1,5,15,30; 60H1; 240H4; 1440D1; 10080W1; 43200MN."; //--- Подсказка кол-во боров в Т/Ф
//--- Глобальные переменные
string Name_Line; //--- Имя Вертикальных уровней
//double Price_H = High[0]; //--- Макс цены
//double Price_L = Low[0]; //--- Мин цены
//+------------------------------------------------------------------+
int init()
{
//---
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
int i;
for (i=0; i<Bars; i++) //--- Выбираем все установленные объекты
{
ObjectDelete(Name_Line + DoubleToStr(i,0)); //--- Удаляем все установленные линии
}
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int counted_bars = IndicatorCounted(); //--- перем counted_bars = функц. Возвращает количество баров
int limit; //--- переменная старт кол-во баров. Линии рисуем о по всем барам
int i=0; //--- переменная i = 0 обнуление
if(counted_bars > 0) counted_bars --; //--- последний посчитанный бар будет пересчитан
//--- основной цикл
limit = Bars - counted_bars;
for(i = 0; i < limit; i ++)
{
//+----- Выбираем количество линий отображаемых на экране
if(limit > barsToProcess) //--- Если кол-во линий > Кол-ву отображаемых периодов (линий)
{
limit = barsToProcess; //--- Тогда устанавливаем Кол-во отображаемых периодов (линий)
Name_Line = "Time_VLine M" + TF + " "+DoubleToStr(i,0); //--- И присваиваем имя с соответствующими параметрами
//+------------------------ Рисуем линии -----------------------------------------------------+
while (i<limit) //--- Пока есть линии в окне терминала. Или пока висит индикатор в окне терминала.
{
datetime t_Line = iTime(Symbol(),TF,i); //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара
{
ObjectCreate (Name_Line + DoubleToStr(i,0),OBJ_VLINE,0,t_Line,0); //--- Создаём обьект вертикальную линию
ObjectSet (Name_Line + DoubleToStr(i,0),OBJPROP_STYLE,2); //--- Со стилем
ObjectSet (Name_Line + DoubleToStr(i,0),OBJPROP_COLOR,DimGray); //--- Со цветом
ObjectSet (Name_Line + DoubleToStr(i,0),OBJPROP_WIDTH,0); //--- С толщиной
ObjectSet (Name_Line + DoubleToStr(i,0),OBJPROP_BACK,0); //--- С типом отображения. Объект на заднем плане
//+-----------------------------------------------------------------------------+
}
i++;
}
}
}
return(0);
}
在我的代码中,这不是一支蜡烛,而是一天。在你们那里,是一个星期。
从这一点上,你可以得到 画线的时间。你可能需要一个月的时间。月初的时候。但它很少与一周的开始相吻合。因此,你必须再施点魔法,弄清楚如何计算第一周的情况。
因此,可以说是感受到了差异。在mql4中还没有很大的区别,但谁知道会有什么变化等着我们......
//--- Что здесь не так, при построении линии по лоу. На графике её нет. И Ошибки компиляции тоже нет?
//--- НО по отдельности всё работает.
注意趋势线的名称。
//----- Для чего нужен этот блок если линия отрисовывается на графике и без него
我有3条线,这就是为什么我有3个函数和3条线的名称。
那么只有一个问题的答案
//--- Что здесь не так, при построении линии по лоу. На графике её нет. И Ошибки компиляции тоже нет?
//--- НО по отдельности всё работает.你这里有相同的行名,它应该是不同的。
你为什么要删除和更正你的信息?
你很长时间没有回复,我以为你没有回答愚蠢的问题,所以我把它们删除了。