编码帮助 - 页 290 1...283284285286287288289290291292293294295296297...786 新评论 AZRUL FYZEE AZMI 2014.06.06 10:30 #2891 mladen: 这很简单。在你的EA的start()程序的开头放置类似这样的东西,如果当天的损失(或利润)已经超过一定的数额,它将阻止它工作。 double totalProfit=0; for (int i =OrdersHistoryTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != someMagicNumber) continue; if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0) if (OrderType()==OP_BUY || OrderType()==OP_SELL) totalProfit += OrderProfit()+OrderCommission()+OrderSwap(); } if (totalProfit < someProfitLossLimit) return(0); [/PHP] 亲爱的MLADEN先生.... 非常感谢您提供的上述代码....IOU 2 credits..... [PHP] double totalProfit=0; for (int i =OrdersHistoryTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; 如果(OrderSymbol() == Symbol()) 继续。 如果(OrderMagicNumber() == someMagicNumber) 继续。 如果(iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0) 如果(OrderType()==OP_BUY || OrderType()==OP_SELL) totalProfit += OrderProfit()+OrderCommission()+OrderSwap()。 } if (totalProfit < someProfitLossLimit) return(0); 只是为了检查.....,如果今天的累计亏损超过某个ProfitLossLimit....,这段代码是否会阻止任何来自特定货币对 和MagicNumber的订单? 谢谢你非常快的回复.... 祝贺你 AZRUL... Mladen Rakic 2014.06.06 10:47 #2892 12BPRO: 亲爱的MLADEN先生....感谢上述代码,....。借条2信用..... double totalProfit=0; for (int i =OrdersHistoryTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol() == Symbol()) continue; if (OrderMagicNumber() == someMagicNumber) continue; if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0) if (OrderType()==OP_BUY || OrderType()==OP_SELL) totalProfit += OrderProfit()+OrderCommission()+OrderSwap(); } if (totalProfit < someProfitLossLimit) return(0); [/PHP] Just to check..... will this code prevent any more orders from a specific currency pair and MagicNumber.... if today's ACCUMULATED LOSS exceed someProfitLossLimit.... Thanks for the very-very fast reply.... best regrads AZRUL... 是的 如果平仓订单的累计利润低于某个数额,它将阻止进一步的代码处理。你可以用这句话代替最后一行。 [PHP]如果(totalProfit < 0 && totalProfit < someProfitLossLimit)返回(0)。 以确保只在累计 "利润 "为负值的情况下进行处理(当有亏损时)。 AZRUL FYZEE AZMI 2014.06.06 10:58 #2893 mladen: 是的如果平仓订单的累计利润低于某个数额,它将阻止进一步的代码处理。你可以把最后一行替换成这样: if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0); 为了确保只在累计 "利润 "为负数的情况下进行(当有亏损时)。 亲爱的MLADEN先生... 对不起,先生...我想我没有对你说得足够清楚..... 我的意图是,只对特定的货币对 和MagicNumber....,记录累积亏损的代码。不包括它所赚取的利润......只计算亏损... 很抱歉造成的混乱... 最好的问候... AZRUL... Mladen Rakic 2014.06.06 11:02 #2894 12BPRO: 亲爱的MLADEN先生...很抱歉,先生...我想我没有对你说得足够清楚..... 我的意图是,只对特定货币对和MagicNumber.... 的累积亏损进行记录的代码。不包括它所赚取的利润......只计算亏损... 很抱歉造成了这种混乱... 最好的问候... AZRUL... AZRUL 利润可以是负的(==亏损) 在封闭的Otrders列表中,有一个名为Order()profit的文件,保持 "利润":赢的订单为正,输的交易为负。这段和平的代码正是你所需要的 AZRUL FYZEE AZMI 2014.06.06 11:21 #2895 亲爱的MLADEN先生。 理论是这样的....,如果今天恰好是一个偏离的市场,我最终将失去一些已经获得的利润(如果有的话)和我的资本上的X$风险....。这并不是对一个非常糟糕的交易日的保护..... 原因是我愿意从今天的交易中以每天X美元的风险....。 上述代码将吃掉当天的所有利润(如果有的话),同时也将吃掉我的风险(资本)...... 谢谢 最好的问候... AZRUL... AZRUL FYZEE AZMI 2014.06.06 11:26 #2896 mladen: AZRUL 利润可以是负的(==亏损) 在封闭的交易列表中,有一个名为Order()profit的文件,保持 "利润":赢的订单为正,输的交易为负。这段和平的代码正是你所需要的 亲爱的MLADEN先生... 谢谢你对上述建议的指点......。 我将尝试搜索任何结果.... 最好的问候 AZRUL... AZRUL FYZEE AZMI 2014.06.06 12:04 #2897 亲爱的MLADEN先生。 下面的代码是否能起到作用... 只对特定货币对 和MagicNumber.... 的累积亏损进行监控。不包括其赚取的利润......。只有亏损才算数... extern double LossAmount = -500.00 ............... int start() if(LossRisk()<=LossAmount) return(0); ............... void LossRisk() double totalLoss=0; { for (int i =OrdersHistoryTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol() == Symbol()) continue; if (OrderMagicNumber() == someMagicNumber) continue; if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0) if (OrderType()==OP_BUY || OrderType()==OP_SELL) totalLoss -= OrderProfit()+OrderCommission()+OrderSwap(); } return(totalLoss); } 非常感谢您的知识... 您真正的 AZRUL.... Coding help 如何编码? 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Mladen Rakic 2014.06.06 12:19 #2898 12BPRO: 亲爱的MLADEN先生。下面的代码是否能起到作用... 只对特定货币对和MagicNumber.... 的累积亏损进行监控。不包括它所赚取的利润...只计算亏损... extern double LossAmount = -500.00 ............... int start() if(LossRisk()<=LossAmount) return(0); ............... void LossRisk() double totalLoss=0; { for (int i =OrdersHistoryTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol() == Symbol()) continue; if (OrderMagicNumber() == someMagicNumber) continue; if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0) if (OrderType()==OP_BUY || OrderType()==OP_SELL) totalLoss -= OrderProfit()+OrderCommission()+OrderSwap(); } return(totalLoss); } [/PHP] Your Knowledge is highly appreciated... yours truly AZRUL.... 不,它不会 如果你想只计算亏损,你必须添加 &&(OrderProfit()+OrderCommission()+OrderSwap()<0) 因此,该函数将看起来像这样。 [PHP]void LossRisk() double totalLoss=0。 { for (int i =OrdersHistoryTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 继续。 如果(OrderSymbol() == Symbol()) 继续。 如果(OrderMagicNumber() == someMagicNumber) 继续。 如果(iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0) 如果(OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0) totalLoss += OrderProfit()+OrderCommission()+OrderSwap()。 } return(totalLoss); } AZRUL FYZEE AZMI 2014.06.06 13:11 #2899 尊敬的MLADEN.... 先生 我目前在我的EA中使用这个代码,该EA运行在M15的时间框架上... 它将在M15时间段后打开一个新的订单... bool AddP() {int _num=0; int _ot=0; for (int j=0;j<OrdersTotal();j++) {if(OrderSelect(j,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0)) { _num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime(); } } if(_num==0) return(true); if(_num>0 && ((Time[0]-_ot))>0) return(true); else return(false); } 你能不能改变这段代码,在前一个订单之后的每5分钟发出一个订单.... 尽管我是在M15时间框架下.... 希望你不要因为发送这么多问题而感到不快....。 最好的问候 AZRUL... Coding help 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. 如何编码? AZRUL FYZEE AZMI 2014.06.06 13:28 #2900 mladen: 不,它不会如果你想只增加亏损,你必须添加 &&(OrderProfit()+OrderCommission()+OrderSwap()<0) 因此,该函数将看起来像这样。 void LossRisk() double totalLoss=0; { for (int i =OrdersHistoryTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol() == Symbol()) continue; if (OrderMagicNumber() == someMagicNumber) continue; if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0) if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0) totalLoss += OrderProfit()+OrderCommission()+OrderSwap(); } return(totalLoss); } 亲爱的MLADEN先生。 你确实知道你的方法来完成这里的事情.... 我非常高兴能得到您的回复,SIR....。 如果有什么我可以做的回报,请给我发邮件......除了编码之外,.... 谢谢 最好的问候 AZRUL... 1...283284285286287288289290291292293294295296297...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这很简单。
在你的EA的start()程序的开头放置类似这样的东西,如果当天的损失(或利润)已经超过一定的数额,它将阻止它工作。
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]亲爱的MLADEN先生....
非常感谢您提供的上述代码....IOU 2 credits.....
[PHP]
double totalProfit=0;
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
如果(OrderSymbol() == Symbol()) 继续。
如果(OrderMagicNumber() == someMagicNumber) 继续。
如果(iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
如果(OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap()。
}
if (totalProfit < someProfitLossLimit) return(0);
只是为了检查.....,如果今天的累计亏损超过某个ProfitLossLimit....,这段代码是否会阻止任何来自特定货币对 和MagicNumber的订单?
谢谢你非常快的回复....
祝贺你
AZRUL...
亲爱的MLADEN先生....
感谢上述代码,....。借条2信用.....
double totalProfit=0;
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]
Just to check..... will this code prevent any more orders from a specific currency pair and MagicNumber.... if today's ACCUMULATED LOSS exceed someProfitLossLimit....
Thanks for the very-very fast reply....
best regrads
AZRUL...是的
如果平仓订单的累计利润低于某个数额,它将阻止进一步的代码处理。你可以用这句话代替最后一行。
[PHP]如果(totalProfit < 0 && totalProfit < someProfitLossLimit)返回(0)。以确保只在累计 "利润 "为负值的情况下进行处理(当有亏损时)。
是的
如果平仓订单的累计利润低于某个数额,它将阻止进一步的代码处理。你可以把最后一行替换成这样:
亲爱的MLADEN先生...
对不起,先生...我想我没有对你说得足够清楚.....
我的意图是,只对特定的货币对 和MagicNumber....,记录累积亏损的代码。不包括它所赚取的利润......只计算亏损...
很抱歉造成的混乱...
最好的问候...
AZRUL...
亲爱的MLADEN先生...
很抱歉,先生...我想我没有对你说得足够清楚.....
我的意图是,只对特定货币对和MagicNumber.... 的累积亏损进行记录的代码。不包括它所赚取的利润......只计算亏损...
很抱歉造成了这种混乱...
最好的问候...
AZRUL...AZRUL
利润可以是负的(==亏损)
在封闭的Otrders列表中,有一个名为Order()profit的文件,保持 "利润":赢的订单为正,输的交易为负。这段和平的代码正是你所需要的
亲爱的MLADEN先生。
理论是这样的....,如果今天恰好是一个偏离的市场,我最终将失去一些已经获得的利润(如果有的话)和我的资本上的X$风险....。这并不是对一个非常糟糕的交易日的保护.....
原因是我愿意从今天的交易中以每天X美元的风险....。
上述代码将吃掉当天的所有利润(如果有的话),同时也将吃掉我的风险(资本)......
谢谢
最好的问候...
AZRUL...
AZRUL 利润可以是负的(==亏损)
亲爱的MLADEN先生...
谢谢你对上述建议的指点......。
我将尝试搜索任何结果....
最好的问候
AZRUL...
亲爱的MLADEN先生。
下面的代码是否能起到作用...
只对特定货币对 和MagicNumber.... 的累积亏损进行监控。不包括其赚取的利润......。只有亏损才算数...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
非常感谢您的知识...
您真正的
AZRUL....
亲爱的MLADEN先生。
下面的代码是否能起到作用...
只对特定货币对和MagicNumber.... 的累积亏损进行监控。不包括它所赚取的利润...只计算亏损...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
[/PHP]
Your Knowledge is highly appreciated...
yours truly
AZRUL....不,它不会
如果你想只计算亏损,你必须添加
&&(OrderProfit()+OrderCommission()+OrderSwap()<0)
因此,该函数将看起来像这样。
[PHP]void LossRisk()
double totalLoss=0。
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 继续。
如果(OrderSymbol() == Symbol()) 继续。
如果(OrderMagicNumber() == someMagicNumber) 继续。
如果(iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
如果(OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)
totalLoss += OrderProfit()+OrderCommission()+OrderSwap()。
}
return(totalLoss);
}
尊敬的MLADEN.... 先生
我目前在我的EA中使用这个代码,该EA运行在M15的时间框架上...
它将在M15时间段后打开一个新的订单...
bool AddP()
{int _num=0; int _ot=0;
for (int j=0;j<OrdersTotal();j++)
{if(OrderSelect(j,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0))
{
_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();
}
}
if(_num==0) return(true);
if(_num>0 && ((Time[0]-_ot))>0)
return(true);
else return(false);
}
你能不能改变这段代码,在前一个订单之后的每5分钟发出一个订单....
尽管我是在M15时间框架下....
希望你不要因为发送这么多问题而感到不快....。
最好的问候
AZRUL...
不,它不会
如果你想只增加亏损,你必须添加
&&(OrderProfit()+OrderCommission()+OrderSwap()<0)
因此,该函数将看起来像这样。
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)
totalLoss += OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
亲爱的MLADEN先生。
你确实知道你的方法来完成这里的事情....
我非常高兴能得到您的回复,SIR....。
如果有什么我可以做的回报,请给我发邮件......除了编码之外,....
谢谢
最好的问候
AZRUL...