关于MQL 4的程序员问题和答案 - 页 6 1234567 新评论 Vladimir Pastushak 2010.09.19 13:31 #51 代码是否复杂,还是有更简单的东西? hasayama 2010.09.19 13:44 #52 1.在一个数组或2个变量中存储订单票。 2.用OrderSelect一个一个地选择它们(这里的数组更方便)。 3.检查当前时刻的类型。 4.如果类型为OP_BUY || OP_SELL -> 第二张票的OrderDelete。 Vladimir Pastushak 2010.09.19 14:05 #53 请用一个简单的例子来帮助我,我明白了很多东西,但顺序选择有点卡住了! Vladimir Pastushak 2010.09.19 14:11 #54 以下是错误的代码,????? 当一个吊坠触发......,不会删除第二个吊坠。 如果(MA1<MA2) { 如果(n==0) { //==================================================================================================================// tiket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,Slb,tpb,NULL,MagicNumber,0,CLR_NONE)。 if(tiket<0) Alert("Error # - ",GetLastError()," On instrument " , Symbol()); //write error// //================================================================================================================// t2 = OrderSend(Symbol(, OP_BUYSTOP, Lots*Overlot,OtkrBS, Slip,0,tpb, 0, MagicNumber,peration); //================================================================================================================// t1 = OrderSend(Symbol(, OP_SELLSTOP, Lots*Overlot+1,OtkrSS,Slip,0,slb, 0, MagicNumber,expiration)。 //================================================================================================================// //==================================================================================================================// } //==================================================================================================================// 否则 //=================================================================================================================// 如果(MA1>MA2) { tiket=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sls,tps,NULL,MagicNumber,0,CLR_NONE) 。 if(tiket<0) Alert("Error # - ",GetLastError()," On instrument " , Symbol()); //write error// //================================================================================================================// t2 = OrderSend(Symbol(, OP_BUYSTOP, Lots*Overlot+1,OtkrSS1,Slip,0,sls, 0, MagicNumber,expiration)。 //================================================================================================================// t1 = OrderSend(Symbol(, OP_SELLSTOP, Lots*Overlot, OtkrBS1,Slip,0,tps, 0, MagicNumber,peration)。 //================================================================================================================// } //==================================================================================================================// // 如果SELLSTOP已经触发,则删除BUYSTOP 如果(OrderSelect(t1, SELECT_BY_TICKET)) { 如果(OrderType()==OP_SELL) { OrderDelete(t2)。 } } //---- // 如果BUYSTOP已经触发,删除SELLSTOP 如果(OrderSelect(t2, SELECT_BY_TICKET)) { 如果(OrderType()==OP_BUY) { OrderDelete(t1)。 } } Questions and Answers to [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. hasayama 2010.09.19 14:51 #55 你对这些条件感到困惑。我认为你把{}括号放在了错误的地方。 if ( n == 0 ) { if (MA1<MA2) { //==================================================================================================================// tiket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,slb,tpb,NULL,MagicNumber,0,CLR_NONE); if(tiket<0) Alert("Ошибка № - ",GetLastError()," На инструменте ", Symbol()); //пишет ошибку// //================================================================================================================// t2 = OrderSend(Symbol(), OP_BUYSTOP, Lots*Overlot,OtkrBS, Slip,0,tpb, 0, MagicNumber,expiration); //================================================================================================================// t1 = OrderSend(Symbol(), OP_SELLSTOP, Lots*Overlot+1,OtkrSS,Slip,0,slb, 0, MagicNumber,expiration); //================================================================================================================// //==================================================================================================================// } //==================================================================================================================// else //=================================================================================================================// if (MA1>MA2) { tiket=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sls,tps,NULL,MagicNumber,0,CLR_NONE); if(tiket<0) Alert("Ошибка № - ",GetLastError()," На инструменте ", Symbol()); //пишет ошибку// //================================================================================================================// t2 = OrderSend(Symbol(), OP_BUYSTOP, Lots*Overlot+1,OtkrSS1,Slip,0,sls, 0, MagicNumber,expiration); //================================================================================================================// t1 = OrderSend(Symbol(), OP_SELLSTOP, Lots*Overlot, OtkrBS1,Slip,0,tps, 0, MagicNumber,expiration); //================================================================================================================// } } //==================================================================================================================// // если сработал SELLSTOP удаляем BUYSTOP if(OrderSelect(t1, SELECT_BY_TICKET)) { if(OrderType()==OP_SELL) { OrderDelete(t2); } } //---- // если сработал BUYSTOP удаляем SELLSTOP if(OrderSelect(t2, SELECT_BY_TICKET)) { if(OrderType()==OP_BUY) { OrderDelete(t1); } } 或者类似这样的事情。 Vladimir Pastushak 2010.09.19 14:58 #56 没有工作,不幸的是........ Vladimir Pastushak 2010.09.19 15:01 #57 令人惊讶的是,我有一个类似的EA。我用它检查了所有的东西,原则上都是一样的。 它可以使用,而这个不可以... 不同的是,另一个EA只有一个买入的姿势和两个垂线。 hasayama 2010.09.19 15:01 #58 全局变量 中的门票?(在启动和其他功能之外) 如果没有,它们就会在每一次打勾时被重置。 在专家顾问的每一步插入更多的Print(),然后你就会明白它在哪里崩溃,以及它没有做什么。 Vladimir Pastushak 2010.09.19 15:23 #59 hooray aaaaaaaaaaaaaaaaaaaaaaaaaaaa!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 获奖者 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Vladimir Pastushak 2010.09.19 15:25 #60 hasayama: 全局变量中的门票?(在启动和其他功能之外) 如果没有,它们就会在每一次打勾时被重置。 在专家顾问的每一步插入更多的Print(),然后你就会明白它在哪里崩溃,以及它没有做什么。 我非常感谢你,我忽略了一点,我一开始就把票据声明为双数,而顺序不能登记为1.0和2.0,这就是为什么删除的函数在等待浮点 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
1.在一个数组或2个变量中存储订单票。
2.用OrderSelect一个一个地选择它们(这里的数组更方便)。
3.检查当前时刻的类型。
4.如果类型为OP_BUY || OP_SELL -> 第二张票的OrderDelete。
请用一个简单的例子来帮助我,我明白了很多东西,但顺序选择有点卡住了!
以下是错误的代码,????? 当一个吊坠触发......,不会删除第二个吊坠。
如果(MA1<MA2)
{
如果(n==0)
{
//==================================================================================================================//
tiket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,Slb,tpb,NULL,MagicNumber,0,CLR_NONE)。
if(tiket<0) Alert("Error # - ",GetLastError()," On instrument " , Symbol()); //write error//
//================================================================================================================//
t2 = OrderSend(Symbol(, OP_BUYSTOP, Lots*Overlot,OtkrBS, Slip,0,tpb, 0, MagicNumber,peration);
//================================================================================================================//
t1 = OrderSend(Symbol(, OP_SELLSTOP, Lots*Overlot+1,OtkrSS,Slip,0,slb, 0, MagicNumber,expiration)。
//================================================================================================================//
//==================================================================================================================//
}
//==================================================================================================================//
否则
//=================================================================================================================//
如果(MA1>MA2)
{
tiket=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sls,tps,NULL,MagicNumber,0,CLR_NONE) 。
if(tiket<0) Alert("Error # - ",GetLastError()," On instrument " , Symbol()); //write error//
//================================================================================================================//
t2 = OrderSend(Symbol(, OP_BUYSTOP, Lots*Overlot+1,OtkrSS1,Slip,0,sls, 0, MagicNumber,expiration)。
//================================================================================================================//
t1 = OrderSend(Symbol(, OP_SELLSTOP, Lots*Overlot, OtkrBS1,Slip,0,tps, 0, MagicNumber,peration)。
//================================================================================================================//
}
//==================================================================================================================//
// 如果SELLSTOP已经触发,则删除BUYSTOP
如果(OrderSelect(t1, SELECT_BY_TICKET))
{
如果(OrderType()==OP_SELL)
{
OrderDelete(t2)。
}
}
//----
// 如果BUYSTOP已经触发,删除SELLSTOP
如果(OrderSelect(t2, SELECT_BY_TICKET))
{
如果(OrderType()==OP_BUY)
{
OrderDelete(t1)。
}
}
你对这些条件感到困惑。我认为你把{}括号放在了错误的地方。
或者类似这样的事情。
令人惊讶的是,我有一个类似的EA。我用它检查了所有的东西,原则上都是一样的。 它可以使用,而这个不可以...
不同的是,另一个EA只有一个买入的姿势和两个垂线。
全局变量 中的门票?(在启动和其他功能之外)
如果没有,它们就会在每一次打勾时被重置。
在专家顾问的每一步插入更多的Print(),然后你就会明白它在哪里崩溃,以及它没有做什么。
hooray aaaaaaaaaaaaaaaaaaaaaaaaaaaa!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 获奖者 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
全局变量中的门票?(在启动和其他功能之外)
如果没有,它们就会在每一次打勾时被重置。
在专家顾问的每一步插入更多的Print(),然后你就会明白它在哪里崩溃,以及它没有做什么。