//+------------------------------------------------------------------+ //| i-MorningRange.mq4| //| Kim Igor V. aka KimIV ! //|http://www.kimiv.ru| //| | //| 2006年2月8日上午的范围指标。 //+------------------------------------------------------------------+ #财产版权 "Kim Igor V. aka KimIV" #属性链接"http://www.kimiv.ru"
//+------------------------------------------------------------------+ //|将日期减少一个交易日。 //| 参数: | //| dt - 交易日的日期| //+------------------------------------------------------------------+ datetime decDateTradeDay(datetime dt) { int ty=TimeYear(dt)。 int tm=TimeMonth(dt)。 int td=TimeDay(dt)。 int th=TimeHour(dt)。 int ti=TimeMinute(dt)。
伊戈尔,你好!
请告诉我如何在现有的指标中实现声音通知?
例如,在ZigZag。我怎样才能增加它,在画新线的时候会有一个声音。
//| ZIG-ZAG_RPoint_v2_m.mq4 |https://www.mql5.com/ru/code/8739
//| Copyright © 2004-2008, Poul_Trade_Forum |复制了RPoint指标的代码。RPoint'.
//| Aborigen & Kharko | |
//|http://forex.kbpauk.ru/|质量之字形
//+------------------------------------------------------------------+
各位程序员,请根据金的指标制作一个EA(以合理的价格)。
通过邮件了解详情
弗拉基米尔
vladmo@mail.ru
//+------------------------------------------------------------------+
//| i-MorningRange.mq4|
//| Kim Igor V. aka KimIV !
//|http://www.kimiv.ru|
//| |
//| 2006年2月8日上午的范围指标。
//+------------------------------------------------------------------+
#财产版权 "Kim Igor V. aka KimIV"
#属性链接"http://www.kimiv.ru"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 blue
#property indicator_color2 Orange
//------- 外部指标参数 -------------------------------
外部字符串 CheckTime = "08:00"; // 检查范围时间
外部 bool ShowHistory = True; // 显示历史等级
extern inttern NumberOfDays = 5; // 历史天数的数量
外部 bool ShowComment = True; // 显示评论
//------- 指标缓冲区 ------------------------------------------
double dBuf0[], dBuf1[];
//+------------------------------------------------------------------+
//|自定义指标初始化功能
//+------------------------------------------------------------------+
void init() {
SetIndexArrow(0, 217);
SetIndexBuffer(0, dBuf0)。
SetIndexStyle(0,DRAW_ARROW,1,2)。
SetIndexArrow(1, 218);
SetIndexBuffer(1, dBuf1)。
SetIndexStyle(1,DRAW_ARROW,1,2)。
DeleteLines()。
for (int i=0; i<2; i++) {
ObjectCreate("HLine "+i, OBJ_HLINE, 0, 0,0)。
}
for (i=0; i<NumberOfDays; i++) {
CreateLines("upLine "+i, indicator_color1);
CreateLines("dnLine "+i, indicator_color2)。
}
}
//+------------------------------------------------------------------+
//|创建Line对象|
//| 参数: |
//|没有--行名||
//| cl - 线条颜色|
//+------------------------------------------------------------------+
void CreateLines(string no, color cl) {
ObjectCreate(no, OBJ_TREND, 0, 0,0, 0,0)。
ObjectSet(no, OBJPROP_STYLE, STYLE_SOLID)。
ObjectSet(no, OBJPROP_WIDTH, 1)。
ObjectSet(no, OBJPROP_COLOR, cl)。
ObjectSet(no, OBJPROP_RAY, False)。
}
//+------------------------------------------------------------------+
//|自定义指标去初始化功能|
//+------------------------------------------------------------------+
void deinit() {
DeleteLines()。
评论(")。
}
//+------------------------------------------------------------------+
//|删除水平线。
//+------------------------------------------------------------------+
空白的DeleteLines() {
for (int i=0; i<2; i++) {
ObjectDelete("HLine "+i)。
}
for (i=0; i<NumberOfDays; i++) {
ObjectDelete("upLine "+i)。
ObjectDelete("dnLine "+i)。
}
}
//+------------------------------------------------------------------+
//|自定义指标迭代函数|
//+------------------------------------------------------------------+
空白启动() {
数据时间 t1, t2, dt;
双层p1,p2。
int b1, b2; sd=0;
t1=StrToTime(TimeToStr(CurTime(), TIME_DATE)+" 00:00")。
t2=StrToTime(TimeToStr(CurTime(), TIME_DATE)+""+CheckTime)。
b1=iBarShift(NULL, 0, t1)。
b2=iBarShift(NULL, 0, t2)。
p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2+1, b2)]。
p2=Low[Lowest(NULL, 0, MODE_LOW, b1-b2+1, b2)] 。
SetHLine(0, p1);
SetHLine(1, p2);
如果(ShowHistory){
dt=decDateTradeDay(CurTime())。
for (int i=0; i<NumberOfDays; i++) {
DrawLines(dt, i);
dt=decDateTradeDay(dt)。
while (TimeDayOfWeek(dt)<1 || TimeDayOfWeek(dt)>5) dt=decDateTradeDay(dt);
}
}
如果(ShowComment) Comment("CheckTime="+CheckTime);
}
//+------------------------------------------------------------------+
//|设置当日的水平线细节。
//+------------------------------------------------------------------+
空白的SetHLine(int nl, double pp) {
颜色cl。
如果(pp!=EMPTY_VALUE) {
switch (nl) {
case 0: cl=indicator_color1; break;
case 1: cl=indicator_color2; break;
}
ObjectSet("HLine "+nl, OBJPROP_COLOR, cl)。
ObjectSet("HLine "+nl, OBJPROP_PRICE1, pp)。
ObjectSet("HLine "+nl, OBJPROP_STYLE, STYLE_DOT)。
}
}
//+------------------------------------------------------------------+
//|在图表上画线|
//| 参数: |
//| dt - 交易日的日期|
//| nd - 一天中的数字(用于对象的编号)|
//+------------------------------------------------------------------+
void DrawLines(datetime dt, int nd) {
数据时间 t1, t2;
双层p1,p2。
int b1, b2;
t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 00:00")。
t2=StrToTime(TimeToStr(dt, TIME_DATE)+""+CheckTime)。
b1=iBarShift(NULL, 0, t1)。
b2=iBarShift(NULL, 0, t2)。
p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2+1, b2)]。
p2=Low[Lowest(NULL, 0, MODE_LOW, b1-b2+1, b2)] 。
ObjectSet("upLine "+nd, OBJPROP_TIME1, t1)。
ObjectSet("upLine "+nd, OBJPROP_PRICE1, p1)。
ObjectSet("upLine "+nd, OBJPROP_TIME2, t2)。
ObjectSet("upLine "+nd, OBJPROP_PRICE2, p1)。
ObjectSet("dnLine "+nd, OBJPROP_TIME1, t1)。
ObjectSet("dnLine "+nd, OBJPROP_PRICE1, p2)。
ObjectSet("dnLine "+nd, OBJPROP_TIME2, t2)。
ObjectSet("dnLine "+nd, OBJPROP_PRICE2, p2)。
}
//+------------------------------------------------------------------+
//|将日期减少一个交易日。
//| 参数: |
//| dt - 交易日的日期|
//+------------------------------------------------------------------+
datetime decDateTradeDay(datetime dt) {
int ty=TimeYear(dt)。
int tm=TimeMonth(dt)。
int td=TimeDay(dt)。
int th=TimeHour(dt)。
int ti=TimeMinute(dt)。
td--。
如果(td==0){
tm--。
如果(tm==0){
ty--。
tm=12。
}
if (tm==1 || tm==3 || tm==5 || tm==7 || tm==8 || tm==10 || tm==12) td=31;
如果(tm==2)如果(MathMod(ty,4)==0)td=29;否则td=28。
如果(tm==4 ||tm==6 ||tm==9 ||tm==11) td=30。
}
return(StrToTime(ty+"."+tm+"."+td+" "+th+":"+ti));
}
//+------------------------------------------------------------------+
你好,伊戈尔,有两个专家顾问(Expert1和Expert2)。 Expert1有一个文件,它在其中写入每个新行的数据。Expert2有一个值与文件中的最大值进行比较。请帮助我拉出这个最大的数字。
在专家2中,将所有数字加载到一个数组中,然后使用ArrayMaximum()。
在专家2中,将所有数字加载到一个数组中,然后使用ArrayMaximum()。
我只是无法将数据加载到一个数组中
我在加载数据到一个数组中时遇到了麻烦。
请看我在这个主题中的数组函数。这些例子应该用数据填充数组。
伊戈尔,你好!
当我在图表上创建一条线(例如 -ObjectCreate(tLine,OBJ_TREND,0,Time[3],Low[3],Time[1],Low[1])时,平台上画的是一个无限长的DRIVE,而教程上说的是 - 一个TREAD!我找不到如何将OBJ_TREND变成一个合适长度的段。手动转换所有的射线或技巧(画一个三角形,因为它是)似乎是不可能的。你能给我一个提示吗...
伊戈尔,你好!
当我在图表上创建一条线(例如 -ObjectCreate(tLine,OBJ_TREND,0,Time[3],Low[3],Time[1],Low[1])时,平台上画的是一个无限长的DRIVE,而教程上说的是 - 一个TREAD!我找不到如何将OBJ_TREND变成一个合适长度的段。手动转换所有的射线或技巧(画一个三角形,因为它是)似乎是不可能的。暗示...
使用ObjectSet(tLine, OBJPROP_RAY, False)。
你好,伊戈尔。
我已经提出了关于部分平仓的问题,特别是错误131(第49-50页auth.6232)。部分平仓不是问题,但日志中的131错误不允许我继续编写EA。我在 "是否有一个准备好的函数用于部分平仓 "分支中找到了您的函数 "平仓三分之一 "的链接,但我在这里,在这个分支中没有找到给定的函数,也没有找到您对6232问题的答复。答案(第50页)有助于部分地解决这个问题。日志没有产生错误,但出现了一个副作用--第一个开放位置没有按要求关闭。
作为比较,第一张图表是 "按规定 "关闭的,但有131个错误不断。
和一个没有错误的图表,但第一个(由于某些原因只有第一个)开仓位关闭不正确。
关闭的代码看起来是这样的。