[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 595

 
Wanderer1000:
安装了MetaTrader 4,开设了一个模拟账户。试图打开/关闭订单。现在我怎样才能使终端本身在价格上涨时触发卖单,在价格下跌时触发买单,使用 "你需要2根蜡烛的差价来关闭旧的订单并开立新的订单 "这样的信息?
写一个EA,也许)
 
nadya:

晚上好。问题:当我关闭一个交易的一部分时,EA会用一个新的票据打开一个新的交易。新秩序的魔力是否依然如故?


 

谁能解释一下为什么所有的交易都是买入?我在SELL上没有交易,SELL上if()前的旗形指标不知为何总是1,WHY???? 在设置中是多头和空头。

我还想问,为什么我让我的EA错过了一些我可以打开的位置?我不能进去!

以下是代码(变量声明 被截断):
double upfr,dnfr=0.0;//最后一个分形的水平
int flag=0;

int start() //在分形中断时打开,在s烛光后关闭
{
if(iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4) !=0)
{
upfr=iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4);
}
if(iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4)==0)
{
upfr=0;
}
if(iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4)!=0)
{
dnfr=iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4);
}
if(iFractals(Symbol(,PERIOD_H1,MODE_LOWER,4)==0)
{
dnfr=0;
}
//通过PROBIT打开ORDRERS
H=iHigh(Symbol(),PERIOD_H1,1);
L=iLow(Symbol(),PERIOD_H1,1);
tOpen=iTime(Symbol(),PERIOD_H1,1);
if(H>upfr &&)flag==0) //如果分形上升,并且超过了分形水平
{
tClose=tOpen+s*stime*60;
OrderSend(Symbol(),OP_BUY,lot,Ask,slipage,NULL,NULL);
flag=1;
}
如果(L<dnfr)
Print(L," -L dnfr- " ,dnfr," flag- " ,flag);
if(L<dnfr &&)flag==0)//如果分形下跌且分形水平下降
{
tClose=tOpen+s*stime*60;
OrderSend(Symbol(),OP_SELL,lot,Bid,slipage,NULL,NULL);
flag=1;
}
//按时间结束关闭订单
if(Time[1]>=tClose && flag==1)//如果指定时间已过
{
Print("CLOSE FUNCTION");
OrClose() ;
flag=0;
upfr=0;
dnfr=0;
}
return(0);
}

附加的文件:
 

偶然发现了这个...

当删除一个EA时,它必须删除未决订单

有两种变体

1.它只是删除了一切...

int deinit()
{
int i;
//----
for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
}
}


//----
return(0);
}

2.选择性地...

int deinit()
{

OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket1);
OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket2);

return(0);
}

现在,问题是,在演示中,两种情况下都能正常工作......但在现实生活中...由于某种原因,只有一个待处理的地段被删除...问题--谁知道为什么?

 
DOCTORS:

偶然发现了这个...

当删除一个EA时,它必须删除未决订单

有两种变体

1.它只是删除了一切...

int deinit()
{
int i;
//----
for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
}
}


//----
return(0);
}

2.选择性地...

int deinit()
{

OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket1);
OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket2);

return(0);
}

现在,问题是,在演示中,两种情况下都能正常工作......但在现实生活中...由于某种原因,只有一个待处理的地段被删除...问题是--谁知道为什么?

IMHO "没有足够的时间"。

一个特殊函数deinit()的运行时间 被限制在2.5秒。如果一个特殊函数deinit()的代码执行时间超过指定时间,客户终端将强制终止特殊函数deinit()和整个程序。

 
ilunga:

IMHO "不及时"。

特殊函数deinit()的执行时间为2.5秒。如果特殊deinit()函数中的代码运行时间超过这个时间,客户终端将强行终止特殊deinit()函数和整个程序。

:(

也就是说,没有希望了?粗略的说,我们先用脚本关闭挂单... 然后关闭猫头鹰...不错的自动交易...

还有一个问题--助手已经把吊坠镶嵌在https://forum.mql4.com/ru/42300/page588

当我改变时间框架时,由于某种原因,订单被删除...

 
DOCTORS:

:(

所以没有希望了?粗略地说,我们先用一个脚本来关闭吊坠......然后再关闭猫头鹰......。不错的自动交易...

还有一个问题--助手已经把吊坠镶嵌在https://forum.mql4.com/ru/42300/page588

当我改变时间框架时,由于某种原因,订单被删除...

脚本或以其他方式命令EA终止其操作(例如,通过全局变量)。

时间框架的变化=专家顾问的重启

 
ilunga:

脚本或其他方式来命令EA终止(例如,通过全局变量)。

时间框架的变化=专家顾问的重启

该变量起作用了--非常感谢你
嗯......没有办法绕过时间框架的变化?
 
论坛成员,请帮助修改订单
 
问题:在视觉测试 模式下,指标线只在测试结束时画出,每个人都是这种情况,还是我做错了什么?