KimIV的有用功能 - 页 84

 
vopros писал(а)>>

伊戈尔,你好!

请告诉我如何在现有的指标中实现声音通知?

例如,在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));
}
//+------------------------------------------------------------------+

 
伊戈尔,你好!有两个专家(专家1和专家2)。专家1有一个文件,它在其中写入每条新行 的数据。Expert2有一个值与文件中的最大值进行比较。请帮助我拉出这个最大的数字。
 
Milka писал(а)>>
你好,伊戈尔,有两个专家顾问(Expert1和Expert2)。 Expert1有一个文件,它在其中写入每个新行的数据。Expert2有一个值与文件中的最大值进行比较。请帮助我拉出这个最大的数字。

在专家2中,将所有数字加载到一个数组中,然后使用ArrayMaximum()

 
KimIV >> :

在专家2中,将所有数字加载到一个数组中,然后使用ArrayMaximum()

我只是无法将数据加载到一个数组中

 
Milka писал(а)>>

我在加载数据到一个数组中时遇到了麻烦。

请看我在这个主题中的数组函数。这些例子应该用数据填充数组。

 

伊戈尔,你好!

当我在图表上创建一条线(例如 -ObjectCreate(tLine,OBJ_TREND,0,Time[3],Low[3],Time[1],Low[1])时,平台上画的是一个无限长的DRIVE,而教程上说的是 - 一个TREAD!我找不到如何将OBJ_TREND变成一个合适长度的段。手动转换所有的射线或技巧(画一个三角形,因为它是)似乎是不可能的。你能给我一个提示吗...

 
alexpert007 писал(а)>>

伊戈尔,你好!

当我在图表上创建一条线(例如 -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个错误不断。

和一个没有错误的图表,但第一个(由于某些原因只有第一个)开仓位关闭不正确。

 

关闭的代码看起来是这样的。

附加的文件:
codv1.mq4  8 kb