[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 439

 
peshihod:


我明白挂单和开单是不同的订单。如果挂单被打开,那么任务就会减少到最初的任务,即打开订单。如果我理解正确的话,情况变得非常复杂。

有哪些任务?也许,一切都可以用更简单的方式完成?

我知道挂单和开单是不同的订单。-------------- 是(也许)也许不是。最主要的是,脚本应该在该挂单 开盘时触发,也就是说,不是在下单时,而是在开盘时。

我在写剧本时需要帮助,请专业人士、专家和好心人帮助我,如果你想让它发挥作用,请提出修改意见。


如果我有一个挂单,它的价格达到它,机器人也应该做出反应。我希望它也能在这种订单上发挥作用。

好吧,我现在正在测试它,它是有效的。为什么它在第一次测试中没有起作用呢?也许是因为电脑重启......但在计划重启后,机器人笑了(工作)。

还有一个细节.这个脚本在历史图表上无法工作,为什么?

//+------------------------------------------------------------------+
//| 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正在对同一货币对进行操作?

 
demlin:

亲爱的专业人士。

我怎样才能教一个EA从另一个窗口读取信息,而另一个EA正在对同一货币对进行操作?


尝试走另一条路,即使用全局变量 在EA之间交换数值...我自己没有使用它们,我不知道细节,搜索一下,看看它们是如何使用的...
 
demlin:

亲爱的专业人士。

我怎样才能教一个EA从另一个窗口读取信息,而另一个EA正在对同一货币对进行操作?

也有这样一个图书馆
 
semiromid:

我明白挂单和开单是不同的订单。-------------- 是(也许)也许不是。最主要的是,脚本应该在挂单打开时起作用,也就是说,不是在下单时,而是在打开时。


这是用挖掘机挖出的几棵树!将订单分开的意义何在?价格对所有人来说都是一样的。订单总是 一起处理,批量处理,由同一个最佳变体处理。

也就是说,谁下单并不重要,重要的是每个人的订单有什么参数。你要找的是一个空的。

如果我们必须执行task1和task2,那么我们必须检查每个订单,是否已经为它执行了必要的任务。而且不需要检查这个订单是现在开的,还是刚刚开的,还是即将开的。

 
peshihod:


这是用挖掘机挖掉了几棵树!将订单分开的意义何在?价格对所有人来说都是一样的。订单总是一起处理,批量处理,以相同的最佳选择。

也就是说,谁下订单并不重要,重要的是每个订单的参数。你要找的是一个空的。

如果我们必须执行task1和task2,那么我们必须检查每个订单,是否已经为它执行了必要的任务。而且,没有必要检查这个订单是现在开的,还是稍早开的,还是即将开的。

这是用挖掘机挖了几棵树!-----------,还有什么更简单的选择呢?

拆分订单的意义何在?--------------,我需要把我的订单分成浮标和卖出。 或者你是指订单的处理?至少给我一个提示,如何使脚本更简单?

斯坦诺,现在测试,一切正常。为什么在第一次测试中没有成功呢?也许是因为有一个电脑重启......但在预定的重启后,机器人在微笑着(工作)。那么,有什么办法可以解释为什么它不工作?只是也许将来会发生类似的故障。

 

大家好。

我有这样一个问题。假设有一个指标XXXXXX(名称并不重要)

不幸的是,我没有该指标的源代码。因此,我不明白它的依据是什么)

我可以根据XXXXXX指标信号开发一个专家顾问来开立卖单和买单吗?

下面是一个截图的例子

 
FreeSerfer:

大家好。

我有这样一个问题。假设有一个指标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);
}

 
循环的脚本需要按时间工作,而不是按刻度工作。