基本问题... - 页 8 1234567891011 新评论 Sergey Golubev 2008.10.08 14:58 #71 看看这个主题:https://www.mql5.com/en/forum/178677 [删除] 2008.10.08 17:44 #72 newdigital: 请看这个主题:https://www.mql5.com/en/forum/178677 真的很感谢,对于文件的打开说明和下载链接 Marcel Corzo 2008.10.21 02:31 #73 10points3 求你了,程序员们! 我们需要在10points3的EA中,当第三笔交易开始时,第一笔交易关闭,我正在尝试,但它仍然关闭所有的位置。 事实上,我们有。 如果(PreviousOpenOrders>OpenOrders) { for(cnt=OrdersTotal();cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。 mode=OrderType()。 如果(OrderSymbol()==Symbol() && OrderMagicNumber() == Magic) { 如果(mode==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),slipage,Blue); } 如果(模式==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),slipage,Red); } return(0); } 我在想这样做。 1.当第二笔交易开始时,改变第一笔交易的魔法号码,例如magicnumber+1 2.当第三笔交易开始时,关闭第一笔交易,并指定magicnumber+1。 我说的对吗? 或者我可以用其他什么方法来确定第一笔交易的开仓,然后再将其关闭? 如果你能指导我或进行修改,更好,因为我不是一个程序员,我只是在学习。 这种改变将是霍利圣杯 的开始!!!。 问吧! 10点3.mq4 如何编码? Marcel Corzo 2008.10.21 02:32 #74 10points3 对不起,是EA。 它就在这个主题里。 https://www.mql5.com/en/forum/174975 谢谢! 附加的文件: 10p3v0.03_1.mq4 12 kb begu 2008.11.07 23:36 #75 编程帮助--返回运算符 你好 我是mt4编程的初学者,现在我经常试图找到一个解决方案,将变量从一个无效函数 提交到主程序 "start()"。 下面你可以看到一个例子,问题是,我如何从变量 "CountOpenSell"、"CountOpenBuy"、"ProfitSell "和 "ProfitBuy "向start() - mainprogram......... 提交值。 我已经添加了我的建议(用粗体字返回),但我不知道它是否正确,"start() "主程序的正确代码是怎样的? 对不起,我的英语不好,请大家多多帮助。 非常感谢 问候 forex2006 空白 呼叫买入卖出利润() { ProfitBuy=0; ProfitSell=0。 CountOpenSell=0。 CountOpenBuy=0。 for (i=OrdersTotal()-1;i>=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { 如果(OrderType()==OP_SELL) {ProfitSell = ProfitSell + OrderProfit();CountOpenSell++; } 如果(OrderType()==OP_BUY) {ProfitBuy = ProfitBuy + OrderProfit();CountOpenBuy++;}。 } else Print("订单选择时出错", GetLastError())。 } return(CountOpenSell); return(CountOpenBuy); return(ProfitSell); return(ProfitBuy); } Basic questions ... 我将免费为你写一份顾问报告 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 bobfourie 2008.11.08 07:36 #76 forex2006编程帮助--返回运算符 你好,forex2006。 如果真的想学习mql,我建议你试试codersguru的教程,我就是从那里开始的。至于你的问题,无效函数 不能返回值,如果你想从无效函数中获得值,你必须使用全局变量。对你来说,最好的方法是使用一个返回值的函数,用参数来表示你想要的值。 下面是一个简单的例子。尽量避免在函数中使用全局变量,因为这可能给你以后的工作带来困难。 我希望这对你有帮助 int start() { double ProfitBuy = CallBuySellProfit(OP_BUY,false)。 double ProfitSell = CallBuySellProfit(OP_SELL,false); int CountOpenBuy = CallBuySellProfit(OP_BUY,true); int CountOpenSell = CallBuySellProfit(OP_SELL,true); 评论( "ProfitBuy:"+DoubleToStr(ProfitBuy,2) +"\n "+ "ProfitSell: "+DoubleToStr(ProfitSell,2) +"\n "+ "CountOpenBuy:"+DoubleToStr(CountOpenBuy,2)+"\n "+ "CountOpenSell: "+DoubleToStr(CountOpenSell,2)+"\n "+ ""); 返回。 } double CallBuySellProfit(int iOrderType, bool bCount) { double dProfit = 0; int iCount = 0; for (int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { 如果(OrderType()==iOrderType) { dProfit = dProfit + OrderProfit(); iCount++; } } 否则 { Print( "Error when order select ", GetLastError()); } }//结束 如果(bCount)返回(iCount)。 else return(dProfit); }//结束 CallBuySellProfit Basic questions ... 我将免费为你写一份顾问报告 求助,我想请高手朋友们写一个 止盈--止损脚本 matrixebiz 2008.11.11 11:16 #77 停止EA在同一根柱子上的交易 你好,请问如何编写代码,使EA检查 是否已经在该条上进行了交易,然后在新条上不再进行交易? 谢谢你 Zen Leow 2008.11.11 14:43 #78 matrixebiz,你是否考虑过在同一根蜡烛收盘前,交易开盘和收盘的可能性? 你或许也应该检查一下历史列表。 我总是把我写的这个小函数 移植到我所有的EA中,也许你也会发现它很有用。 bool DecideToOpenTrade() { int total = OrdersTotal(); if (total > 0) { for(int cnt=0;cnt<total;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS)) { if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM) { return (false); } } } } // in case trades has already opened and closed within the candle int histotal = OrdersHistoryTotal(); if (histotal > 0) { for(cnt=0;cnt<histotal;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM) { if (Time[0] <= OrderOpenTime()) // don't open a new position if we're still on the same candle { return (false); } } } } } return (true); } int start() { // some time check codes first.. blah blah // ... // ... // ... // check signals if (Should_Buy()) { if (DecideToOpenTrade()) { //... trade opening codes here } } if (Should_Sell()) { if (DecideToOpenTrade()) { //... trade opening codes here } } } 注意:这个函数假定你已经为EA_MAGIC_NUM设置了一个唯一的值。这样一来,检查就不会看其他EA所开的交易。 Should_Buy()和Should_Sell()是我在所有的EA中创建的函数,用于确定是否发生了买入或卖出信号。 希望这有帮助。如果你需要进一步澄清,请给我发邮件。 问候。 禅 Basic questions ... How to code? 编码帮助 matrixebiz 2008.11.11 18:17 #79 更新后的帖子如下... matrixebiz 2008.11.11 18:18 #80 这似乎对我有用 谢谢你 void DesideToOpen() //----------------------------------------------------------------+ //----------------------------------------------------------------+ { int total = OrdersTotal(); if (total > 0) { for(int cnt=0;cnt<total;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS)) { if(OrderComment() == EA_Name + MagicNumber) DecideToOpenTrade = false; } } } // in case trades has already opened and closed within the candle int histotal = OrdersHistoryTotal(); if (histotal > 0) { for(cnt=0;cnt<histotal;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY)) { if(OrderComment() == EA_Name + MagicNumber) { if (Time[0] <= OrderOpenTime()) DecideToOpenTrade = false; // don't open a new position if we're still on the same candle } } } } } Basic questions ... Multiple trades [WARNING CLOSED!] Any newbie 1234567891011 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
看看这个主题:https://www.mql5.com/en/forum/178677
请看这个主题:https://www.mql5.com/en/forum/178677
真的很感谢,对于文件的打开说明和下载链接
10points3
求你了,程序员们!
我们需要在10points3的EA中,当第三笔交易开始时,第一笔交易关闭,我正在尝试,但它仍然关闭所有的位置。
事实上,我们有。
如果(PreviousOpenOrders>OpenOrders)
{
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
mode=OrderType()。
如果(OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{
如果(mode==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),slipage,Blue); }
如果(模式==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),slipage,Red); }
return(0);
}
我在想这样做。
1.当第二笔交易开始时,改变第一笔交易的魔法号码,例如magicnumber+1
2.当第三笔交易开始时,关闭第一笔交易,并指定magicnumber+1。
我说的对吗?
或者我可以用其他什么方法来确定第一笔交易的开仓,然后再将其关闭?
如果你能指导我或进行修改,更好,因为我不是一个程序员,我只是在学习。
这种改变将是霍利圣杯 的开始!!!。
10points3
对不起,是EA。
它就在这个主题里。
https://www.mql5.com/en/forum/174975
谢谢!
编程帮助--返回运算符
你好
我是mt4编程的初学者,现在我经常试图找到一个解决方案,将变量从一个无效函数 提交到主程序 "start()"。
下面你可以看到一个例子,问题是,我如何从变量 "CountOpenSell"、"CountOpenBuy"、"ProfitSell "和 "ProfitBuy "向start() - mainprogram......... 提交值。
我已经添加了我的建议(用粗体字返回),但我不知道它是否正确,"start() "主程序的正确代码是怎样的?
对不起,我的英语不好,请大家多多帮助。
非常感谢
问候
forex2006
空白 呼叫买入卖出利润()
{ ProfitBuy=0;
ProfitSell=0。
CountOpenSell=0。
CountOpenBuy=0。
for (i=OrdersTotal()-1;i>=0;i--)
{if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
如果(OrderType()==OP_SELL) {ProfitSell = ProfitSell + OrderProfit();CountOpenSell++; }
如果(OrderType()==OP_BUY) {ProfitBuy = ProfitBuy + OrderProfit();CountOpenBuy++;}。
}
else Print("订单选择时出错", GetLastError())。
}
return(CountOpenSell);
return(CountOpenBuy);
return(ProfitSell);
return(ProfitBuy);
}
forex2006编程帮助--返回运算符
你好,forex2006。
如果真的想学习mql,我建议你试试codersguru的教程,我就是从那里开始的。至于你的问题,无效函数 不能返回值,如果你想从无效函数中获得值,你必须使用全局变量。对你来说,最好的方法是使用一个返回值的函数,用参数来表示你想要的值。 下面是一个简单的例子。尽量避免在函数中使用全局变量,因为这可能给你以后的工作带来困难。
我希望这对你有帮助
int start()
{
double ProfitBuy = CallBuySellProfit(OP_BUY,false)。
double ProfitSell = CallBuySellProfit(OP_SELL,false);
int CountOpenBuy = CallBuySellProfit(OP_BUY,true);
int CountOpenSell = CallBuySellProfit(OP_SELL,true);
评论( "ProfitBuy:"+DoubleToStr(ProfitBuy,2) +"\n "+
"ProfitSell: "+DoubleToStr(ProfitSell,2) +"\n "+
"CountOpenBuy:"+DoubleToStr(CountOpenBuy,2)+"\n "+
"CountOpenSell: "+DoubleToStr(CountOpenSell,2)+"\n "+
"");
返回。
}
double CallBuySellProfit(int iOrderType, bool bCount)
{
double dProfit = 0;
int iCount = 0;
for (int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
如果(OrderType()==iOrderType)
{
dProfit = dProfit + OrderProfit();
iCount++;
}
}
否则
{
Print( "Error when order select ", GetLastError());
}
}//结束
如果(bCount)返回(iCount)。
else return(dProfit);
}//结束 CallBuySellProfit
停止EA在同一根柱子上的交易
你好,请问如何编写代码,使EA检查 是否已经在该条上进行了交易,然后在新条上不再进行交易?
谢谢你
matrixebiz,你是否考虑过在同一根蜡烛收盘前,交易开盘和收盘的可能性? 你或许也应该检查一下历史列表。
我总是把我写的这个小函数 移植到我所有的EA中,也许你也会发现它很有用。
bool DecideToOpenTrade()
{
int total = OrdersTotal();
if (total > 0)
{
for(int cnt=0;cnt<total;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM)
{
return (false);
}
}
}
}
// in case trades has already opened and closed within the candle
int histotal = OrdersHistoryTotal();
if (histotal > 0)
{
for(cnt=0;cnt<histotal;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM)
{
if (Time[0] <= OrderOpenTime()) // don't open a new position if we're still on the same candle
{
return (false);
}
}
}
}
}
return (true);
}
int start()
{
// some time check codes first.. blah blah
// ...
// ...
// ...
// check signals
if (Should_Buy())
{
if (DecideToOpenTrade())
{
//... trade opening codes here
}
}
if (Should_Sell())
{
if (DecideToOpenTrade())
{
//... trade opening codes here
}
}
}
注意:这个函数假定你已经为EA_MAGIC_NUM设置了一个唯一的值。这样一来,检查就不会看其他EA所开的交易。
Should_Buy()和Should_Sell()是我在所有的EA中创建的函数,用于确定是否发生了买入或卖出信号。
希望这有帮助。如果你需要进一步澄清,请给我发邮件。
问候。
禅
更新后的帖子如下...
这似乎对我有用 谢谢你
void DesideToOpen()
//----------------------------------------------------------------+
//----------------------------------------------------------------+
{
int total = OrdersTotal();
if (total > 0)
{
for(int cnt=0;cnt<total;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS))
{
if(OrderComment() == EA_Name + MagicNumber) DecideToOpenTrade = false;
}
}
}
// in case trades has already opened and closed within the candle
int histotal = OrdersHistoryTotal();
if (histotal > 0)
{
for(cnt=0;cnt<histotal;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderComment() == EA_Name + MagicNumber)
{
if (Time[0] <= OrderOpenTime()) DecideToOpenTrade = false; // don't open a new position if we're still on the same candle
}
}
}
}
}