//+------------------------------------------------------------------+ //| Order_act.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "" #property link "" int Order_array[200]; int Total=0; int j,pos,count,order_tick,type; bool found;
//+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- // создаем список ордеров (туда входят и открытые, и отложенные) Total=OrdersTotal();
// проверочная часть скрипта int i=0; while ( !IsStopped() ) { count=OrdersTotal(); for(pos=0;pos<count;pos++) { if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true) { found=false; order_tick=OrderTicket();
for (j=0;j<Total;j++) {
if (order_tick==Order_array[j]) {found=true;} } if (!found) { type=OrderType();
if ((type==OP_BUY) || (type==OP_SELL)) { Total++; // в случае,если есть новый открытый Order_array[Total-1]=order_tick; //ордер - добавляем в список
Alert("Новый открытый ордер"); // и делаем с ним что хотим
} } } // если планируется, что скрипт будет работать долго или открываемся часто // удаляем из списка все закрытые ордера чтобы не было переполнения. // А чтобы работало быстрее, количество записей можно уменьшить (лишь бы не превысило // максимально возможного числа открытых и отложенных поз. if (Total>190) { for (j=0;j<Total;j++) { if(OrderSelect(Order_array[j],SELECT_BY_TICKET)==true) { if (OrderCloseTime()!=0) { Alert("нашли закрытый в списке и удалили"); for (i=j+1;i<Total;i++) {Order_array[j]=Order_array[i];} Total--; } } } } Sleep(100); } } //---- return(0); } //+------------------------------------------------------------------+
我明白挂单和开单是不同的订单。如果挂单被打开,那么任务就会减少到最初的任务,即打开订单。如果我理解正确的话,情况变得非常复杂。
有哪些任务?也许,一切都可以用更简单的方式完成?
我知道挂单和开单是不同的订单。-------------- 是(也许)也许不是。最主要的是,脚本应该在该挂单 开盘时触发,也就是说,不是在下单时,而是在开盘时。
我在写剧本时需要帮助,请专业人士、专家和好心人帮助我,如果你想让它发挥作用,请提出修改意见。
如果我有一个挂单,它的价格达到它,机器人也应该做出反应。我希望它也能在这种订单上发挥作用。
好吧,我现在正在测试它,它是有效的。为什么它在第一次测试中没有起作用呢?也许是因为电脑重启......但在计划重启后,机器人笑了(工作)。
还有一个细节.这个脚本在历史图表上无法工作,为什么?
//+------------------------------------------------------------------+
//| Order_act.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
int Order_array[200];
int Total=0;
int j,pos,count,order_tick,type;
bool found;
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
// создаем список ордеров (туда входят и открытые, и отложенные)
Total=OrdersTotal();
for(pos=0;pos<Total;pos++)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{ Order_array[pos]=OrderTicket();}
}
// проверочная часть скрипта
int i=0;
while ( !IsStopped() )
{
count=OrdersTotal();
for(pos=0;pos<count;pos++)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{
found=false;
order_tick=OrderTicket();
for (j=0;j<Total;j++)
{
if (order_tick==Order_array[j]) {found=true;}
}
if (!found)
{
type=OrderType();
if ((type==OP_BUY) || (type==OP_SELL))
{
Total++; // в случае,если есть новый открытый
Order_array[Total-1]=order_tick; //ордер - добавляем в список
Alert("Новый открытый ордер"); // и делаем с ним что хотим
}
}
}
// если планируется, что скрипт будет работать долго или открываемся часто
// удаляем из списка все закрытые ордера чтобы не было переполнения.
// А чтобы работало быстрее, количество записей можно уменьшить (лишь бы не превысило
// максимально возможного числа открытых и отложенных поз.
if (Total>190)
{
for (j=0;j<Total;j++)
{
if(OrderSelect(Order_array[j],SELECT_BY_TICKET)==true)
{
if (OrderCloseTime()!=0)
{
Alert("нашли закрытый в списке и удалили");
for (i=j+1;i<Total;i++) {Order_array[j]=Order_array[i];}
Total--;
}
}
}
}
Sleep(100);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
Его написал RAVen_ Спасибо этому профессионалу .
亲爱的专业人士。
我怎样才能教一个EA从另一个窗口读取信息,而另一个EA正在对同一货币对进行操作?
亲爱的专业人士。
我怎样才能教一个EA从另一个窗口读取信息,而另一个EA正在对同一货币对进行操作?
尝试走另一条路,即使用全局变量 在EA之间交换数值...我自己没有使用它们,我不知道细节,搜索一下,看看它们是如何使用的...
亲爱的专业人士。
我怎样才能教一个EA从另一个窗口读取信息,而另一个EA正在对同一货币对进行操作?
我明白挂单和开单是不同的订单。-------------- 是(也许)也许不是。最主要的是,脚本应该在挂单打开时起作用,也就是说,不是在下单时,而是在打开时。
这是用挖掘机挖出的几棵树!将订单分开的意义何在?价格对所有人来说都是一样的。订单总是 一起处理,批量处理,由同一个最佳变体处理。
也就是说,谁下单并不重要,重要的是每个人的订单有什么参数。你要找的是一个空的。
如果我们必须执行task1和task2,那么我们必须检查每个订单,是否已经为它执行了必要的任务。而且不需要检查这个订单是现在开的,还是刚刚开的,还是即将开的。
这是用挖掘机挖掉了几棵树!将订单分开的意义何在?价格对所有人来说都是一样的。订单总是一起处理,批量处理,以相同的最佳选择。
也就是说,谁下订单并不重要,重要的是每个订单的参数。你要找的是一个空的。
如果我们必须执行task1和task2,那么我们必须检查每个订单,是否已经为它执行了必要的任务。而且,没有必要检查这个订单是现在开的,还是稍早开的,还是即将开的。
这是用挖掘机挖了几棵树!-----------,还有什么更简单的选择呢?
拆分订单的意义何在?--------------,我需要把我的订单分成浮标和卖出。 或者你是指订单的处理?至少给我一个提示,如何使脚本更简单?
斯坦诺,现在测试,一切正常。为什么在第一次测试中没有成功呢?也许是因为有一个电脑重启......但在预定的重启后,机器人在微笑着(工作)。那么,有什么办法可以解释为什么它不工作?只是也许将来会发生类似的故障。
大家好。
我有这样一个问题。假设有一个指标XXXXXX(名称并不重要)
不幸的是,我没有该指标的源代码。因此,我不明白它的依据是什么)
我可以根据XXXXXX指标信号开发一个专家顾问来开立卖单和买单吗?
下面是一个截图的例子
大家好。
我有这样一个问题。假设有一个指标XXXXXX(名称并不重要)
不幸的是,我没有该指标的源代码。因此,我不明白它的依据是什么)
我可以根据XXXXXX指标信号开发一个专家顾问来开立卖单和买单吗?
下面是一个截图的例子
是的,也许。我甚至可以猜到是哪种火鸡...:-)))
请告知。我怎样才能让这个机器人在20秒内完成购买?
我不希望它在20秒内购买,然后价格又值20秒,所以它只在40秒内获胜。
int start()
{
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point, "Order #",0); // 开立一个买入订单
Sleep(20000); // 定时器20秒
return(0);
}