多币种顾问问题 - 页 11 1...4567891011121314 新评论 Rid 2009.02.18 16:52 #101 Vinin >> : 创建两个数组。一个是按票号,第二个是按价格。然后按价格对数组进行排序,同时移动票号(不中断连接)。然后在阵列的一端将是最低价格,在另一端是最高价格。现在我们必须改变其中一个极端的命令。 >> 谢谢你。 我还没有实际操作过数组。 假设,例如,我有10个BUYSTOP订单。我设定了他们的设置价格。 double price1 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 1);//цена 1 байстоп double price2 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 2);//цена 2 байстоп double price3 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 3);//цена 3 байстоп double price4 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 4);//цена 4 байстоп double price5 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 5);//цена 5 байстоп double price6 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 6);//цена 6 байстоп double price7 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 7);//цена 7 байстоп double price8 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 8);//цена 8 байстоп double price9 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 9);//цена 9 байстоп double price10= GetOrderOpenPrice(NULL,OP_BUYSTOP, 10);//цена 10 байстоп 然后,我设置了一个设置价格的数组,其中订单1是最接近当前价格的价格。 int ArrayCents = { price1, price2, price3, price4, price5, price6, price7, price8, price9, price10 } 而如何按票据创建一个数组,我也不清楚。我在哪里可以得到订购票? Victor Nikolaev 2009.02.18 17:24 #102 像这样的东西是什么 // Функция возвращает номер тикета ордера с самой маленькой ценой или с самой большой // По умолчанию сортировка по возрастанию // Только вот что за цену брать, я возьму стоп (цену открытия мы менять не можем) int MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0){ double ArrayPrice[]; int ArrayTicket[]; int Total=OrdersTotal(); int tmpTicket; double tmpPrice; bool bSort=true; ArrayResize( ArrayPrice, Total); ArrayResize( ArrayTicket, Total); int i, count=0; for ( i=0; i< Total; i++) { if (!OrderSelect( i, SELECT_BY_POS)) continue; if (!(OrderSymbol()== lSymbol || lSymbol=="")) continue; if (!(OrderMagicNumber()== lMagic || lMagic==-1))continue; if (!(OrderType()== lOP || lOP==-1)) continue; ArrayPrice[ count]=OrderStopLoss(); ArrayTicket[ count]=OrderTicket(); count++; } if ( count>0) { ArrayResize( ArrayPrice, count); ArrayResize( ArrayTicket, count); while ( bSort) { bSort=false; for ( i=1; i< count; i++) { if ( ArrayPrice[ i-1]> ArrayPrice[ i]) { tmpPrice= ArrayPrice[ i-1]; ArrayPrice[ i-1]= ArrayPrice[ i]; ArrayPrice[ i]= tmpPrice; tmpTicket= ArrayTicket[ i-1]; ArrayTicket[ i-1]= ArrayTicket[ i]; ArrayTicket[ i]= tmpTicket; bSort=true; } } } if ( reversi==0) return( ArrayTicket[0]); else return( ArrayTicket[ count-1]); } return(-1); } 没有检查代码。 Rid 2009.02.18 17:28 #103 谢谢你,维宁 !我会研究的。 Rid 2009.02.18 21:12 #104 显然,功能是这样工作的。 MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0) 参数: lSymbol= - 符号名称("" - 任何符号,NULL - 当前符号) lOP=-1 - 操作(-1 - 任何顺序,在我们的例子中是-OP_BUYSTOP ) lMagic=-1 - 魔术师(-1 - 任何魔术师)。 //--------------------------------------------------------------------------------------------- 但 "int reversi=0 "是什么意思--我不太清楚!"。 该函数被正常复制了。 0 - 最低价格 1-最大的? //------------------------------------------------------------------- 还有,--我们到底为什么要把止损作为一个价格? 还有,为什么我们不能改变开盘价? OP_BUYSTOP - 因为这些是挂单(而不是头寸),只是事件的最终结果是改变特定订单的开盘(触发)价格。 Multicurrency advisor question Victor Nikolaev 2009.02.19 02:21 #105 rid писал(а)>> 显然,功能是这样工作的。 MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0) 参数。 lSymbol= - 仪器名称("-任何符号,NULL-当前符号)。 lOP=-1-操作(-1-任何顺序,在我们的例子中是-OP_BUYSTOP)。 lMagic=-1 - MagicNumber (-1 - 任何魔力) //--------------------------------------------------------------------------------------------- 但 "int reversi=0 "是什么意思--我不太清楚!"。 该函数被正常复制了。 0--最小的价格 1-最大的? //------------------------------------------------------------------- 还有,--我们到底为什么要把止损作为一个价格? 而我们为什么不能改变开盘价呢? OP_BUYSTOP - 这些是挂单(而不是头寸),这意味着最后我们必须改变所选订单的开盘价。 因此,你需要什么价格就拿什么价格。挂单的公开价格。我只是把它作为一个例子。 [删除] 2009.02.19 07:51 #106 我认为建立一个二维数组并按第一维排序会更容易。而在那里,相应地,你可以储存你需要的东西。在你的情况下,价格。 double Price_Ticket[][2] int total=OrdersTotal(); ArrayResize( Price_Ticket, total); for (int i=0; i< total; i++) if (OrderSelect( i, SELECT_BY_POS)) { Price_Ticket[ i][0]=OrderOpenPrice(); Price_Ticket[ i][1]=OrderTicket(); } ArraySort( Price_Ticket); TheXpert 2009.02.19 11:03 #107 Xupypr >> : 我认为建立一个二维数组并按第一维排序会更容易。而在那里,相应地,你可以储存你需要的东西。在你的情况下,它是价格。 SetIndexBuffer(0, Test); SetIndexStyle(0, DRAW_HISTOGRAM); //---- indicators //---- double Price_Ticket[][2]; int size = 10; ArrayResize( Price_Ticket, size); 它是在inite中。火鸡刚刚挂起来。启动函数是空的,建立220。 Rid 2009.02.23 18:30 #108 Vinin >> : 因此,你想要什么价格就拿什么价格。对于吊坠,采取开盘价。我只是把它作为一个例子。 假设我设置了10个补仓单。它们不是按顺序设置的,而是按时间分开的。 我需要删除目前离当前价格最远的那个订单。 这是找这个订单的正确方法吗?- //****************************** p.s. 我已经在评论中插入了一个函数。 评论( MiniMaxOrderPrice(NULL, -1, OP_BUYSTOP, 1 ) 。 但它一直返回"-1"。虽然图表上有5到10个订单。 有一个错误的地方... // Функция возвращает номер тикета ордера с с самой // малой или , int reversi=0,большой ценой // По умолчанию сортировка по возрастанию int MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0 ){ double ArrayPrice[]; int ArrayTicket[]; int Total=OrdersTotal(); int tmpTicket; double tmpPrice; bool bSort=true; ArrayResize( ArrayPrice, Total); ArrayResize( ArrayTicket, Total); int i, count=0; for ( i=0; i< Total; i++) { if (!OrderSelect( i, SELECT_BY_TICKET, MODE_TRADES)) continue; if (!(OrderSymbol()== lSymbol || lSymbol=="")) continue; if (!(OrderMagicNumber()== lMagic || lMagic==-1))continue; if (!(OrderType()== lOP || lOP==-1)) continue; ArrayPrice[ count]= OrderOpenPrice(); ArrayTicket[ count]=OrderTicket(); count++; } if ( count>0) { ArrayResize( ArrayPrice, count); ArrayResize( ArrayTicket, count); while ( bSort) { bSort=false; for ( i=1; i< count; i++) { if ( ArrayPrice[ i-1]> ArrayPrice[ i]) { tmpPrice= ArrayPrice[ i-1]; ArrayPrice[ i-1]= ArrayPrice[ i]; ArrayPrice[ i]= tmpPrice; tmpTicket= ArrayTicket[ i-1]; ArrayTicket[ i-1]= ArrayTicket[ i]; ArrayTicket[ i]= tmpTicket; bSort=true; } } } if ( reversi==0) return( ArrayTicket[0]); else return( ArrayTicket[ count-1]); } return(-1); } Victor Nikolaev 2009.02.23 19:14 #109 rid писал(а)>> 比方说,我设置了10个补仓单。它们不是按顺序放置的,而是按时间分开的。 我需要删除目前离当前价格最远的订单。 这是找这个订单的正确方法吗?- //****************************** p.s. 我把功能放在评论中。 评论( MiniMaxOrderPrice(NULL, -1, OP_BUYSTOP, 1 )。 但该函数不断返回"-1"。虽然图表上有5到10个订单。 某处有一个错误... Comment( MiniMaxOrderPrice("", -1, OP_BUYSTOP, 1 )); // 任何符号。 Comment( MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )); // 当前符号 Rid 2009.02.23 19:47 #110 好的!谢谢你,Vinin ! 这个功能似乎在起作用!我将进一步研究! 1...4567891011121314 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
创建两个数组。一个是按票号,第二个是按价格。然后按价格对数组进行排序,同时移动票号(不中断连接)。然后在阵列的一端将是最低价格,在另一端是最高价格。现在我们必须改变其中一个极端的命令。
>> 谢谢你。
我还没有实际操作过数组。
假设,例如,我有10个BUYSTOP订单。我设定了他们的设置价格。
然后,我设置了一个设置价格的数组,其中订单1是最接近当前价格的价格。
int ArrayCents = { price1, price2, price3, price4, price5, price6, price7, price8, price9, price10 }
而如何按票据创建一个数组,我也不清楚。我在哪里可以得到订购票?
像这样的东西是什么
没有检查代码。显然,功能是这样工作的。
MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0)
参数:
lSymbol= - 符号名称("" - 任何符号,NULL - 当前符号)
lOP=-1 - 操作(-1 - 任何顺序,在我们的例子中是-OP_BUYSTOP )
lMagic=-1 - 魔术师(-1 - 任何魔术师)。
//---------------------------------------------------------------------------------------------
但 "int reversi=0 "是什么意思--我不太清楚!"。
该函数被正常复制了。
0 - 最低价格
1-最大的?
//-------------------------------------------------------------------
还有,--我们到底为什么要把止损作为一个价格?
还有,为什么我们不能改变开盘价?
OP_BUYSTOP - 因为这些是挂单(而不是头寸),只是事件的最终结果是改变特定订单的开盘(触发)价格。
显然,功能是这样工作的。
MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0)
参数。
lSymbol= - 仪器名称("-任何符号,NULL-当前符号)。
lOP=-1-操作(-1-任何顺序,在我们的例子中是-OP_BUYSTOP)。
lMagic=-1 - MagicNumber (-1 - 任何魔力)
//---------------------------------------------------------------------------------------------
但 "int reversi=0 "是什么意思--我不太清楚!"。
该函数被正常复制了。
0--最小的价格
1-最大的?
//-------------------------------------------------------------------
还有,--我们到底为什么要把止损作为一个价格?
而我们为什么不能改变开盘价呢?
OP_BUYSTOP - 这些是挂单(而不是头寸),这意味着最后我们必须改变所选订单的开盘价。
因此,你需要什么价格就拿什么价格。挂单的公开价格。我只是把它作为一个例子。
我认为建立一个二维数组并按第一维排序会更容易。而在那里,相应地,你可以储存你需要的东西。在你的情况下,价格。
我认为建立一个二维数组并按第一维排序会更容易。而在那里,相应地,你可以储存你需要的东西。在你的情况下,它是价格。
因此,你想要什么价格就拿什么价格。对于吊坠,采取开盘价。我只是把它作为一个例子。
假设我设置了10个补仓单。它们不是按顺序设置的,而是按时间分开的。
我需要删除目前离当前价格最远的那个订单。
这是找这个订单的正确方法吗?-
//******************************
p.s.
我已经在评论中插入了一个函数。
评论( MiniMaxOrderPrice(NULL, -1, OP_BUYSTOP, 1 ) 。
但它一直返回"-1"。虽然图表上有5到10个订单。
有一个错误的地方...
比方说,我设置了10个补仓单。它们不是按顺序放置的,而是按时间分开的。
我需要删除目前离当前价格最远的订单。
这是找这个订单的正确方法吗?-
//******************************
p.s.
我把功能放在评论中。
评论( MiniMaxOrderPrice(NULL, -1, OP_BUYSTOP, 1 )。
但该函数不断返回"-1"。虽然图表上有5到10个订单。
某处有一个错误...
Comment( MiniMaxOrderPrice("", -1, OP_BUYSTOP, 1 )); // 任何符号。
Comment( MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )); // 当前符号
好的!谢谢你,Vinin !
这个功能似乎在起作用!我将进一步研究!