如何编码? - 页 250 1...243244245246247248249250251252253254255256257...347 新评论 increase 2010.11.22 07:55 #2491 mladen: 嗨,Mladen,谢谢你的帮助,我应用了你的修改,但它没有真正发挥作用,如果EA只是忽略任何现有的未平仓交易,即让它们保持开放,然后打开和关闭自己的新单交易,可能会更简单。 目前,它打开和关闭自己的交易,但它也关闭任何额外的现有未平仓交易。 Mladen Rakic 2010.11.22 08:07 #2492 增加 从部分代码来看,这是我可以建议的。如果创建了 一个布尔参数 NoCloses,如果该参数被设置 为 "真",那么如果像片段中那样应用,就不应该关闭订单(如果CB 和CS 不等于1,代码就不会关闭订单)。 问候 姆拉登 increase: 嗨,Mladen,谢谢你的帮助,我应用了你的修改,但它并没有真正发挥作用,如果EA只是忽略任何现有的未平仓交易,即让它们保持开放,然后打开和关闭自己的新单交易,也许会更简单。 目前,它打开和关闭自己的交易,但它也关闭任何额外的现有未平仓交易 increase 2010.11.22 08:27 #2493 mladen: 增加从部分代码来看,这是我可以建议的。如果创建了 一个布尔参数NoCloses,并且如果该参数被设置 为 "真",那么如果像片段中那样应用,它应该不会关闭订单(如果CB 和CS 不等于1,那么代码将不会关闭订单) 问候 Mladen 这是真的,但除非我理解错了,否则这意味着EA所开的交易也不会关闭,所以它只是在买入和卖出之间切换? Mladen Rakic 2010.11.22 08:49 #2494 是的,这是正确的。 根据我的理解,这是你的想法:让EA打开订单,然后你将手动管理订单(关闭它们)。有了这个参数,你甚至可以把它切换回假的,然后EA将恢复关闭订单 - 所以它是 "可以从外部控制的",某种程度上来说。 increase: 这是真的,但除非我理解错了,否则这意味着EA所开的交易也将永远不会关闭,所以它只是在买入和卖出之间切换? increase 2010.11.22 09:01 #2495 mladen: 是的,这是正确的,据我所知,这是你的想法:让EA打开订单,然后你将手动管理订单(关闭它们)。有了这个参数,你甚至可以把它切换回假的,然后EA将恢复关闭订单--所以它是 "可以从外部控制的",某种程度上来说。 啊,对不起,我说得很含糊,我想让EA打开和关闭它的订单,并忽略任何现有的订单,所以,比如说 1.我有5个卖出订单 2.2.我使用该EA,它打开了1个买入订单 3.现在我有5个卖单和1个买单 4.该EA现在触发了一个卖盘,所以它关闭了它的买盘。 5.我现在有6个卖单(5个现有的,1个EA卖单)。 6.EA现在触发了一个买入,所以它关闭了它的卖出。 7.我现在有5个卖盘和1个买盘等 我将关闭现有的卖盘,EA忽略了除其自身交易外的任何其他交易,如上所述。 Mladen Rakic 2010.11.22 09:07 #2496 增加 如果您将Magicparameter 设置为0以外的值,它已经这样做了(这是检查是否应该在平仓指令之前关闭买入指令的部分代码)。 if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&( (OrderMagicNumber()==Magic)||Magic==0)) 因此,如果"Magic"不等于0,并且Magic的值是唯一的,它将只关闭自己开的订单 increase: 对不起,我说得太含糊了,我想让EA打开和关闭它的订单,并忽略任何现有的订单,因此,比如说 1.我有5个卖出订单2.2.我使用EA,它打开了1个买入订单3.现在我有5个卖单和1个买单4.该EA现在触发了一个卖盘,所以它关闭了它的买盘。5.我现在有6个卖单(5个现有的,1个EA卖单)。6.EA现在触发了一个买入,所以它关闭了它的卖出。7.我现在有5个卖盘和1个买盘等 我将关闭现有的卖出,EA忽略任何其他交易,除了自己的交易,如上所述。 Chistabo 2010.11.23 15:55 #2497 特定时间段的每条交易一次 你好,亲爱的fEllA们! 我有一个在测试器上运行良好的EA(耶,谁不知道),按照指示在每个4H Bar上进行多次交易。现在,当在演示版(Alpari UK)上测试11个货币对时,EA只进行1次交易,而它应该进行更多的交易(最多3次,按照指示)。如果条件得到满足,只在每个4H柱进行交易。 我有一个带有GlobalVariable的'Semaphor'函数,以及这段代码,以防止在一个预定义的时间框架(本例中为4H)内开启多个订单。 //买入 如果(Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))) { 如果(SignalsOnly) { // ------ 警报应该是每个信号只有一次,或者每15或30分钟一次。 如果(CheckAlertTime == iTime (NULL, 5, 0))返回(0)。 否则CheckAlertTime = iTime (NULL, 5, 0); 如果(Alerts) Alert (Symbol() + " " + DoubleToStr (Ask, Digits) + " BUY Signal")。 如果(PlaySounds)PlaySound(WhichSound)。 } 如果(!IsTrade && !SignalsOnly) { if (CheckAlertTime == iTime (NULL, OncePerBarTF, 0)) return (0); 否则 CheckAlertTime = iTime (NULL, OncePerBarTF, 0); //检查自由保证金 如果(AccountFreeMargin() < (1000 * Lots)) { Print ("我们没有钱。Free Margin = ", AccountFreeMargin())。 return(0); } if (UseTakeProfit && CloseLotsPercent == 100) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0; { 如果(MoneyManagement)Lots = NormalizeDouble ((AccountFreeMargin() * Risk / 100 / ((Ask - BuySL) / Point / TickValue)), 2); 否则,Lots = Lots。 } 如果(TradeIsBusy() && IsTradingAllowed() < 0) 返回(-1)。 RefreshRates()。 Ticket = OrderSend (Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "7Qi BUY " + MagicNo, MagicNo, 0, DodgerBlue); 如果(Ticket > 0) { 如果(OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print ("7Qi BUY opened:", OrderOpenPrice())。 if (Alerts) Alert (Symbol() + " " + DoubleToStr (Ask, Digits) + " BUY opened"); 如果 (PlaySounds) PlaySound (WhichSound); } 否则 { Print ("错误打开BUY: " , Err); } } // TradedThisBar = Bars; if (EachTickMode) TickCheck = True; 如果(!EachTickMode) BarCount = Bars; TradeIsNotBusy(); 返回(0)。 } } //------------------------------------------------- 是否可以这样的代码。 if (CheckAlertTime == iTime (NULL, OncePerBarTF, 0)) return (0); 否则CheckAlertTime = iTime (NULL, OncePerBarTF, 0); 防止EA在一小时中进行交易?它是否只在条形图的开头检查? 如果我使用 "TradedThisBar = Bars "函数,我将不得不让EA只在一个时间框架上交易,对吗? Semaphor "函数在TrailingStops中也有编码,PartialCloseLots也有。 谢谢大家的帮助。 祝您愉快。 西蒙 斯洛文尼亚 问吧! How to code? 买/卖EA和指标 Chistabo 2010.11.23 22:18 #2498 Iiiiiik - 我找到了问题所在 嗨! 我已经找到了问题所在--它很可能是以下的组合。 如果(TradeIsBusy() /*&& IsTradingAllowed()*/ < 0) 返回(-1)。 //----------------------------------------------------------------------------------------- int IsTradingAllowed (int MaxWaitingSec = 30) { 如果(!IsTradeAllowed()) { int StartWaitingTime = GetTickCount(); Print ("交易环境很忙!等它空出来再说...")。 if (Alerts) Alert (Symbol() + " EA trading not allowed!等待...")。 while (true) { 如果(IsStopped()) { 打印("EA被终止了!")。 return(-1); } 如果(GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000 ) { Print("超过等待限制("+MaxWaitingSec + " 秒)!"); return(-2); } 如果(IsTradeAllowed()) { 打印("交易环境现在是自由的!")。 return(0); } 睡眠(100)。 } } 否则 { 打印("贸易背景是自由的!")。 return(1); } } */ //----------------------------------------------- int TradeIsBusy (int MaxWaitingSec = 30) { 如果(IsTesting())返回(1)。 int Err = 0, StartWaitingTime = GetTickCount(); while (true) { 如果(IsStopped()) { 打印("EA被终止了!")。 return(-1); } 如果(GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000) { Print ("等待时间(" + MaxWaitingSec + " sec)超过了!")。 if (Alerts) Alert (Symbol() + " EA waiting time exceeded!") 。 返回(-2)。 } 如果(GlobalVariableCheck ("TradeIsBusy")) 断。 否则 { Err = GetLastError(); 如果(Err != 0) { 打印("TradeIsBusy - GlobalVariableCheck - 错误#",Err)。 睡眠(100)。 继续。 } } 如果(GlobalVariableSet ("TradeIsBusy", 1.0) > 0)返回(1)。 否则 { Err = GetLastError(); 如果(Err != 0) { Print ("TradeIsBusy - GlobalVariableSet - Error # ", Err); Sleep(100); 继续。 } } } while (true) { 如果(IsStopped()) { 打印("EA被终止了!")。 return(-1); } 如果(GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000) { Print ("等待时间(" + MaxWaitingSec + " sec)超过了!")。 if (Alerts) Alert (Symbol() + " waiting time exceeded!")。 返回(-2)。 } 如果(GlobalVariableSetOnCondition ("TradeIsBusy", 1.0, 0.0 )) 返回(1)。 否则 { Err = GetLastError(); 如果(Err != 0) { Print ("TradeIsBusy - GlobalVariableSetOnCondition - Error # ", Err); 继续。 } } if (Alerts) Alert (Symbol() + " - waiting another EA to finish trading...")。 睡眠(1000)。 } } //-------------------------------- void TradeIsNotBusy() { int Err; 如果(IsTesting()) { 返回(0)。 } while (true) { 如果(IsStopped()) { 打印 (Symbol() + " EA被终止了!"); 返回(-1)。 } 如果(GlobalVariableSet ("TradeIsBusy", 0.0) > 0) return(1); 否则 { Err = GetLastError(); 如果(Err != 0) Print ("TradeIsNotBusy - GlobalVariableSet - Error # ", Err); } 睡眠(100)。 } } //----------------------------------------------------------------------------------------------- 我将尝试不使用IsTradeAllowed函数。 总之,谢谢你。 祝您愉快。 西蒙 How to code? 10点3.mq4 编码帮助 [删除] 2010.11.24 11:39 #2499 错误代码 130 ----- 删除了-----,没有必要了...... [删除] 2010.11.24 12:27 #2500 可下载的mq4教程 嗨,伙计们。 找不到关于mq4代码的教程或参考书(不是网上的!!)。 你能帮助我吗? 最好的问候 解决了,不得不用一个工具来解压该文件。 1...243244245246247248249250251252253254255256257...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
嗨,Mladen,谢谢你的帮助,我应用了你的修改,但它没有真正发挥作用,如果EA只是忽略任何现有的未平仓交易,即让它们保持开放,然后打开和关闭自己的新单交易,可能会更简单。
目前,它打开和关闭自己的交易,但它也关闭任何额外的现有未平仓交易。
增加
从部分代码来看,这是我可以建议的。如果创建了 一个布尔参数 NoCloses,如果该参数被设置 为 "真",那么如果像片段中那样应用,就不应该关闭订单(如果CB 和CS 不等于1,代码就不会关闭订单)。
问候
姆拉登
嗨,Mladen,谢谢你的帮助,我应用了你的修改,但它并没有真正发挥作用,如果EA只是忽略任何现有的未平仓交易,即让它们保持开放,然后打开和关闭自己的新单交易,也许会更简单。 目前,它打开和关闭自己的交易,但它也关闭任何额外的现有未平仓交易
增加
从部分代码来看,这是我可以建议的。如果创建了 一个布尔参数NoCloses,并且如果该参数被设置 为 "真",那么如果像片段中那样应用,它应该不会关闭订单(如果CB 和CS 不等于1,那么代码将不会关闭订单)
问候
Mladen这是真的,但除非我理解错了,否则这意味着EA所开的交易也不会关闭,所以它只是在买入和卖出之间切换?
是的,这是正确的。
根据我的理解,这是你的想法:让EA打开订单,然后你将手动管理订单(关闭它们)。有了这个参数,你甚至可以把它切换回假的,然后EA将恢复关闭订单 - 所以它是 "可以从外部控制的",某种程度上来说。
这是真的,但除非我理解错了,否则这意味着EA所开的交易也将永远不会关闭,所以它只是在买入和卖出之间切换?
是的,这是正确的,据我所知,这是你的想法:让EA打开订单,然后你将手动管理订单(关闭它们)。有了这个参数,你甚至可以把它切换回假的,然后EA将恢复关闭订单--所以它是 "可以从外部控制的",某种程度上来说。
啊,对不起,我说得很含糊,我想让EA打开和关闭它的订单,并忽略任何现有的订单,所以,比如说
1.我有5个卖出订单
2.2.我使用该EA,它打开了1个买入订单
3.现在我有5个卖单和1个买单
4.该EA现在触发了一个卖盘,所以它关闭了它的买盘。
5.我现在有6个卖单(5个现有的,1个EA卖单)。
6.EA现在触发了一个买入,所以它关闭了它的卖出。
7.我现在有5个卖盘和1个买盘等
我将关闭现有的卖盘,EA忽略了除其自身交易外的任何其他交易,如上所述。
增加
如果您将Magicparameter 设置为0以外的值,它已经这样做了(这是检查是否应该在平仓指令之前关闭买入指令的部分代码)。
因此,如果"Magic"不等于0,并且Magic的值是唯一的,它将只关闭自己开的订单
对不起,我说得太含糊了,我想让EA打开和关闭它的订单,并忽略任何现有的订单,因此,比如说
1.我有5个卖出订单
2.2.我使用EA,它打开了1个买入订单
3.现在我有5个卖单和1个买单
4.该EA现在触发了一个卖盘,所以它关闭了它的买盘。
5.我现在有6个卖单(5个现有的,1个EA卖单)。
6.EA现在触发了一个买入,所以它关闭了它的卖出。
7.我现在有5个卖盘和1个买盘等
我将关闭现有的卖出,EA忽略任何其他交易,除了自己的交易,如上所述。特定时间段的每条交易一次
你好,亲爱的fEllA们!
我有一个在测试器上运行良好的EA(耶,谁不知道),按照指示在每个4H Bar上进行多次交易。现在,当在演示版(Alpari UK)上测试11个货币对时,EA只进行1次交易,而它应该进行更多的交易(最多3次,按照指示)。如果条件得到满足,只在每个4H柱进行交易。
我有一个带有GlobalVariable的'Semaphor'函数,以及这段代码,以防止在一个预定义的时间框架(本例中为4H)内开启多个订单。
//买入
如果(Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))))
{
如果(SignalsOnly)
{
// ------ 警报应该是每个信号只有一次,或者每15或30分钟一次。
如果(CheckAlertTime == iTime (NULL, 5, 0))返回(0)。
否则CheckAlertTime = iTime (NULL, 5, 0);
如果(Alerts) Alert (Symbol() + " " + DoubleToStr (Ask, Digits) + " BUY Signal")。
如果(PlaySounds)PlaySound(WhichSound)。
}
如果(!IsTrade && !SignalsOnly)
{
if (CheckAlertTime == iTime (NULL, OncePerBarTF, 0)) return (0);
否则 CheckAlertTime = iTime (NULL, OncePerBarTF, 0);
//检查自由保证金
如果(AccountFreeMargin() < (1000 * Lots))
{
Print ("我们没有钱。Free Margin = ", AccountFreeMargin())。
return(0);
}
if (UseTakeProfit && CloseLotsPercent == 100) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
{
如果(MoneyManagement)Lots = NormalizeDouble ((AccountFreeMargin() * Risk / 100 / ((Ask - BuySL) / Point / TickValue)), 2);
否则,Lots = Lots。
}
如果(TradeIsBusy() && IsTradingAllowed() < 0)
返回(-1)。
RefreshRates()。
Ticket = OrderSend (Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "7Qi BUY " + MagicNo, MagicNo, 0, DodgerBlue);
如果(Ticket > 0)
{
如果(OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES))
{
Print ("7Qi BUY opened:", OrderOpenPrice())。
if (Alerts) Alert (Symbol() + " " + DoubleToStr (Ask, Digits) + " BUY opened");
如果 (PlaySounds) PlaySound (WhichSound);
}
否则
{
Print ("错误打开BUY: " , Err);
}
}
// TradedThisBar = Bars;
if (EachTickMode) TickCheck = True;
如果(!EachTickMode) BarCount = Bars;
TradeIsNotBusy();
返回(0)。
}
}
//-------------------------------------------------
是否可以这样的代码。
if (CheckAlertTime == iTime (NULL, OncePerBarTF, 0)) return (0);
否则CheckAlertTime = iTime (NULL, OncePerBarTF, 0);
防止EA在一小时中进行交易?它是否只在条形图的开头检查?
如果我使用 "TradedThisBar = Bars "函数,我将不得不让EA只在一个时间框架上交易,对吗?
Semaphor "函数在TrailingStops中也有编码,PartialCloseLots也有。
谢谢大家的帮助。
祝您愉快。
西蒙
斯洛文尼亚
Iiiiiik - 我找到了问题所在
嗨!
我已经找到了问题所在--它很可能是以下的组合。
如果(TradeIsBusy() /*&& IsTradingAllowed()*/ < 0)
返回(-1)。
//-----------------------------------------------------------------------------------------
int IsTradingAllowed (int MaxWaitingSec = 30)
{
如果(!IsTradeAllowed())
{
int StartWaitingTime = GetTickCount();
Print ("交易环境很忙!等它空出来再说...")。
if (Alerts) Alert (Symbol() + " EA trading not allowed!等待...")。
while (true)
{
如果(IsStopped())
{
打印("EA被终止了!")。
return(-1);
}
如果(GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000 )
{
Print("超过等待限制("+MaxWaitingSec + " 秒)!");
return(-2);
}
如果(IsTradeAllowed())
{
打印("交易环境现在是自由的!")。
return(0);
}
睡眠(100)。
}
}
否则
{
打印("贸易背景是自由的!")。
return(1);
}
}
*/
//-----------------------------------------------
int TradeIsBusy (int MaxWaitingSec = 30)
{
如果(IsTesting())返回(1)。
int Err = 0, StartWaitingTime = GetTickCount();
while (true)
{
如果(IsStopped())
{
打印("EA被终止了!")。
return(-1);
}
如果(GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000)
{
Print ("等待时间(" + MaxWaitingSec + " sec)超过了!")。
if (Alerts) Alert (Symbol() + " EA waiting time exceeded!") 。
返回(-2)。
}
如果(GlobalVariableCheck ("TradeIsBusy"))
断。
否则
{
Err = GetLastError();
如果(Err != 0)
{
打印("TradeIsBusy - GlobalVariableCheck - 错误#",Err)。
睡眠(100)。
继续。
}
}
如果(GlobalVariableSet ("TradeIsBusy", 1.0) > 0)返回(1)。
否则
{
Err = GetLastError();
如果(Err != 0)
{
Print ("TradeIsBusy - GlobalVariableSet - Error # ", Err);
Sleep(100);
继续。
}
}
}
while (true)
{
如果(IsStopped())
{
打印("EA被终止了!")。
return(-1);
}
如果(GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000)
{
Print ("等待时间(" + MaxWaitingSec + " sec)超过了!")。
if (Alerts) Alert (Symbol() + " waiting time exceeded!")。
返回(-2)。
}
如果(GlobalVariableSetOnCondition ("TradeIsBusy", 1.0, 0.0 )) 返回(1)。
否则
{
Err = GetLastError();
如果(Err != 0)
{
Print ("TradeIsBusy - GlobalVariableSetOnCondition - Error # ", Err);
继续。
}
}
if (Alerts) Alert (Symbol() + " - waiting another EA to finish trading...")。
睡眠(1000)。
}
}
//--------------------------------
void TradeIsNotBusy()
{
int Err;
如果(IsTesting())
{
返回(0)。
}
while (true)
{
如果(IsStopped())
{
打印 (Symbol() + " EA被终止了!");
返回(-1)。
}
如果(GlobalVariableSet ("TradeIsBusy", 0.0) > 0) return(1);
否则
{
Err = GetLastError();
如果(Err != 0)
Print ("TradeIsNotBusy - GlobalVariableSet - Error # ", Err);
}
睡眠(100)。
}
}
//-----------------------------------------------------------------------------------------------
我将尝试不使用IsTradeAllowed函数。
总之,谢谢你。
祝您愉快。
西蒙
错误代码 130
----- 删除了-----,没有必要了......
可下载的mq4教程
嗨,伙计们。
找不到关于mq4代码的教程或参考书(不是网上的!!)。
你能帮助我吗?
最好的问候
解决了,不得不用一个工具来解压该文件。