编码帮助 - 页 290

 
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...

 
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)。

以确保只在累计 "利润 "为负值的情况下进行处理(当有亏损时)。

 
mladen:
是的

如果平仓订单的累计利润低于某个数额,它将阻止进一步的代码处理。你可以把最后一行替换成这样:

if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0);
为了确保只在累计 "利润 "为负数的情况下进行(当有亏损时)。

亲爱的MLADEN先生...

对不起,先生...我想我没有对你说得足够清楚.....

我的意图是,只对特定的货币对 和MagicNumber....,记录累积亏损的代码。不包括它所赚取的利润......只计算亏损...

很抱歉造成的混乱...

最好的问候...

AZRUL...

 
12BPRO:
亲爱的MLADEN先生...

很抱歉,先生...我想我没有对你说得足够清楚.....

我的意图是,只对特定货币对和MagicNumber.... 的累积亏损进行记录的代码。不包括它所赚取的利润......只计算亏损...

很抱歉造成了这种混乱...

最好的问候...

AZRUL...

AZRUL

利润可以是负的(==亏损) 在封闭的Otrders列表中,有一个名为Order()profit的文件,保持 "利润":赢的订单为正,输的交易为负。这段和平的代码正是你所需要的

 

亲爱的MLADEN先生。

理论是这样的....,如果今天恰好是一个偏离的市场,我最终将失去一些已经获得的利润(如果有的话)和我的资本上的X$风险....。这并不是对一个非常糟糕的交易日的保护.....

原因是我愿意从今天的交易中以每天X美元的风险....。

上述代码将吃掉当天的所有利润(如果有的话),同时也将吃掉我的风险(资本)......

谢谢

最好的问候...

AZRUL...

 
mladen:
AZRUL 利润可以是负的(==亏损) 在封闭的交易列表中,有一个名为Order()profit的文件,保持 "利润":赢的订单为正,输的交易为负。这段和平的代码正是你所需要的

亲爱的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....

 
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);

}

 

尊敬的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...

 
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...