新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 151 1...144145146147148149150151152153154155156157158...1953 新评论 [删除] 2017.03.15 17:34 #1501 Maxim Kuznetsov:类似这样的事情。string level="Level"+IntegerToString(iTime(_Symbol,iBarShift(OrderCloseTime())); // ид.уровня - по времени бара (!! не по тикету)if (ObjectFind(level)==-1) { // гор.вектора нет - видимо первый ордер из закрытых на баре // сделать горизонтальную линию ObjectCreate(0,level,OBJ_TREND,0,OrderCloseTime(),OrderClosePrice(),OrderCloseTime()+PeriodSeconds(_Period)*3,OrderClosePrice); // указывающую только вправо ObjectSetInteger(level,OBJPROP_RAY,1); ObjectSetInteger(level,OBJPROP_RAYLEFT,0); // украсить её как-то :-) ObjectSetInteger(level,OBJPROP_COLOR,....) ....} else { // гор.уровень есть - значит были ордера закрытые на этом баре // по фантазии - обновить метки/корректировать уровень/etc}int TotalPos=-1; void start() { // остальной код //-- if(OrdersTotal()!=TotalPos) { // не мучаем каждый тик for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderType()<=1) { History(); } }}} TotalPos=OrdersTotal(); // запомним количество //-- } void History() { string Ticket=(string)OrderTicket(); color col=Red; if(OrderType()==0)col=Blue; datetime a=OrderOpenTime(); double b=OrderOpenPrice(); datetime c=OrderCloseTime(); double d=OrderClosePrice(); double prSep=OrderProfit()+OrderCommission()+OrderSwap(); double prAll=0; int cn=0; string hTicket; for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderType()<=1) { datetime ct=OrderCloseTime(); // 60 секунд разницы между закрытием первой и последней в сетке if(c<=ct+60 && c>=ct-60) { prAll+=OrderProfit()+OrderCommission()+OrderSwap(); hTicket=(string)OrderTicket(); cn++; } }}} ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b); ObjectSet(Ticket+"Open",OBJPROP_COLOR,col); ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1); ObjectCreate(Ticket+"Line",OBJ_TREND,0,a,b,c,d); ObjectSet(Ticket+"Line",OBJPROP_COLOR,col); ObjectSet(Ticket+"Line",OBJPROP_WIDTH,1); ObjectSet(Ticket+"Line",OBJPROP_STYLE,STYLE_DOT); ObjectSet(Ticket+"Line",OBJPROP_RAY,0); ObjectCreate(Ticket+"Close",OBJ_ARROW,0,c,d); ObjectSet(Ticket+"Close",OBJPROP_COLOR,Green); ObjectSet(Ticket+"Close",OBJPROP_ARROWCODE,3); Ticket=cn>1?hTicket:Ticket; ObjectCreate(Ticket+"Profit",OBJ_TEXT,0,c,d); ObjectSet(Ticket+"Profit",OBJPROP_ANCHOR,0); ObjectSetText(Ticket+"Profit",DoubleToString(prAll,2),10,"Arial",White); ObjectSet(Ticket+"Profit",OBJPROP_PRICE1,d); ObjectSet(Ticket+"Profit",OBJPROP_TIME1,c+Period()*60*2); }使用矢量作为水平仪是错误的....不是很好 ....((如果我们让一匹马动起来呢)在水平搜索中,使用已经存在记录的价格水平的利润总和原则...... 例如:这里我们做了一个尝试,并在60秒延迟的情况下将利润加起来 for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderType()<=1) { datetime ct=OrderCloseTime(); // 60 секунд разницы между закрытием первой и последней в сетке if(c<=ct+60 && c>=ct-60) { prAll+=OrderProfit()+OrderCommission()+OrderSwap(); hTicket=(string)OrderTicket(); cn++;接下来,我们需要想出一个记录。如果该级别的累计利润数>1,那么这就是我们的订单--我们的级别,从这个级别开始我们画一条射线 Andrei Sokolov 2017.03.16 11:56 #1502 问候。我正在计划一个带有功能的EA,在每一个tick 上都会循环查看它所创建的可用订单并根据情况采取行动。您能告诉我们如何为每一个新的订单制作单独的变量,以及如何进一步的循环来处理它们 吗?(我想这是类似于Peremennaja+ticket=12345;) Alexey Viktorov 2017.03.16 12:15 #1503 Andrey Sokolov:问候。我正在计划一个带有功能的EA,在每一个tick 上都会循环查看它所创建的可用订单并根据情况采取行动。您能告诉我们如何为每一个新的订单制作单独的变量,以及如何进一步的循环来处理它们 吗?(我想这是类似于Peremennaja+ticket=12345;) 最好是一个数组,甚至是一个结构数组。 Andrei Sokolov 2017.03.16 12:18 #1504 Alexey Viktorov: 最好是一个数组,甚至是一个结构数组。 对不起,你能详细说明一下吗? Alexey Viktorov 2017.03.16 12:43 #1505 Andrey Sokolov: 对不起,你能说得更详细些吗?这里 和这里。一个结构和一个结构类型的数组被创建。在所有的代码之外。struct trade_settings { double take; // значения цены фиксации прибыли double stop; // значение цены защитного стопа uchar slippage; // значение допустимого проскальзывания }; //--- создали массив типа trade_settings trade_settings my_set[];// присвоить значение нулевому индексу массива в основном коде my_set[0].take = что_то; Структуры и, классы и интерфейсы - Типы данных - Основы языка - Справочник MQL4 docs.mql4.com Структуры и, классы и интерфейсы - Типы данных - Основы языка - Справочник MQL4 Nikolay Fedyay 2017.03.16 21:14 #1506 你好。 请帮助我找到水平线"ResisL"和趋势线的交角"TrndL"。 Artyom Trishkin 2017.03.16 21:42 #1507 Nikolay Fedyay:你好。 请帮助我找到水平线"ResisL"和趋势线的交角"TrndL"。//+------------------------------------------------------------------+ //| Уравнение прямой | //+------------------------------------------------------------------+ double EquationDirect(double left_bar, double left_price, double right_bar, double right_price, double bar_to_search) { return((right_bar==left_bar)?left_price:(right_price-left_price)/(right_bar-left_bar)*(bar_to_search-left_bar)+left_price); } //+------------------------------------------------------------------+ 如果你知道斜率线的两个坐标点,并将其作为该函数的参数粘贴,输出结果将给出bar_to_search上该点的价格。只剩下在条形循环中调用这个函数,将其返回的值与水平线的价格进行比较。如果在周期的最后一个条形上,函数返回的值低于或等于水平线的价格,而在周期的当前条形上,函数返回的值大于水平线的价格,那么交点的X坐标将是周期指数对应的时间,Y坐标将是函数返回的价格。 Nikolay Fedyay 2017.03.16 21:52 #1508 Artyom Trishkin: 谢谢你。 如果你想知道还没有条形图时的交叉点,即未来的某个日期,那又如何呢? Artyom Trishkin 2017.03.16 22:03 #1509 Nikolay Fedyay: 谢谢你。 如果你想知道还没有条形图时的交叉点,即未来的某个日期,那又如何呢?没试过这个功能--需要实验。 Nikolay Fedyay 2017.03.16 22:20 #1510 Artyom Trishkin:没试过这个功能--需要实验。 如果你有时间做实验,请分享结果。 因为我不知道该用 什么做实验. 1...144145146147148149150151152153154155156157158...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
类似这样的事情。
string level="Level"+IntegerToString(iTime(_Symbol,iBarShift(OrderCloseTime())); // ид.уровня - по времени бара (!! не по тикету)
if (ObjectFind(level)==-1) {
// гор.вектора нет - видимо первый ордер из закрытых на баре
// сделать горизонтальную линию
ObjectCreate(0,level,OBJ_TREND,0,OrderCloseTime(),OrderClosePrice(),OrderCloseTime()+PeriodSeconds(_Period)*3,OrderClosePrice);
// указывающую только вправо
ObjectSetInteger(level,OBJPROP_RAY,1);
ObjectSetInteger(level,OBJPROP_RAYLEFT,0);
// украсить её как-то :-)
ObjectSetInteger(level,OBJPROP_COLOR,....)
....
} else {
// гор.уровень есть - значит были ордера закрытые на этом баре
// по фантазии - обновить метки/корректировать уровень/etc
}
使用矢量作为水平仪是错误的....不是很好 ....((
如果我们让一匹马动起来呢)
在水平搜索中,使用已经存在记录的价格水平的利润总和原则......
例如:这里我们做了一个尝试,并在60秒延迟的情况下将利润加起来
接下来,我们需要想出一个记录。
如果该级别的累计利润数>1,那么这就是我们的订单--我们的级别,从这个级别开始我们画一条射线
问候。
我正在计划一个带有功能的EA,在每一个tick 上都会循环查看它所创建的可用订单并根据情况采取行动。
您能告诉我们如何为每一个新的订单制作单独的变量,以及如何进一步的循环来处理它们 吗?(我想这是类似于Peremennaja+ticket=12345;)
问候。
我正在计划一个带有功能的EA,在每一个tick 上都会循环查看它所创建的可用订单并根据情况采取行动。
您能告诉我们如何为每一个新的订单制作单独的变量,以及如何进一步的循环来处理它们 吗?(我想这是类似于Peremennaja+ticket=12345;)
最好是一个数组,甚至是一个结构数组。
对不起,你能详细说明一下吗?
对不起,你能说得更详细些吗?
这里 和这里。
一个结构和一个结构类型的数组被创建。在所有的代码之外。
你好。
请帮助我找到水平线"ResisL"和趋势线的交角"TrndL"。
你好。
请帮助我找到水平线"ResisL"和趋势线的交角"TrndL"。
谢谢你。
如果你想知道还没有条形图时的交叉点,即未来的某个日期,那又如何呢?
谢谢你。
如果你想知道还没有条形图时的交叉点,即未来的某个日期,那又如何呢?
没试过这个功能--需要实验。
没试过这个功能--需要实验。
如果你有时间做实验,请分享结果。
因为我不知道该用 什么做实验
.