[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 1044

 
eddy:
我不感兴趣,我只想画一条线...
图片中的点是最大最小?
 
不,掐架
 
costy_:

Это для не стандартного подхода, того чего нет в отчете оптимизатора. файл здесь terminal\tester\files

Сохраняйте отчет из "Результаты оптим." сохран как>>


我现在明白了如何保存一些东西。请告诉我如何自动保存优化的结果。基本上,我只关心最大的缩水和利润。
 
001:

现在我明白了如何保存我需要的东西。请告知如何自动保存优化结果。原则上,我只关心最大的缩水和利润。

在Deinit中,通过OrdersHistoryTotal 计算 所有盈利的、无盈利的、缩减的、盈利的 总和 ,并写入文件;)

类似这样的事情

   for(i=0;i<OrdersHistoryTotal();i++)
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol())
    if(OrderProfit()>=0)
     profit+=OrderProfit();
     else noprof+=OrderProfit();
   прибыль = profit  -  noprof;



 
eddy:
不,cloze。

关于这一点,在较低的时期,你可以在H1图表中的ind H4设置中查看较早的那个矢量。

这又是为了什么呢?

附加的文件:
maxvekt.mq4  2 kb
 
costy_:

在Deinit中,使用OrdersHistoryTotal 来计算 所有盈利、不盈利、缩水、盈利的 总和 ,并将其存档; )

类似这样的事情




是的,有这回事。不幸的是,这种方法给出的数据与MT不同。你只需要将优化结果 原子化地保存到一个文件中,就可以了。
 
我不明白这个计算方法。你能用我的画作为例子向我解释一下吗?
 
costy_:

你按照列表中的仓位号顺序滚动浏览未结订单和挂单,选择你感兴趣的订单并获取其票据。

并继续工作的票。



如果你不知道该怎么做,就是不知道该怎么做。

请告诉我,如果我们已经选择了相同的订单,为什么还需要这样做?

也许我不明白的是:这个代码。

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber() ==Magicbuy) {
ticketbuy=OrderTicket() 。OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotbuy2,bid,3,Magenta) ; }

和这个。

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol &&)OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotbuy2,bid,3,Magenta) ; }

会做同样的事情吗?

 
Aleksandr_8:

谢谢你的答复。

如果我们已经选择了相同的订单,为什么还需要这样做呢?

也许我不明白的是:这个代码。

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal()-1; cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber() ==Magicbuy) {
ticketbuy=OrderTicket()OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES); lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotbuy2,bid,3,Magenta) ; }
}

和这个。

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal()-1; cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol &&)OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotbuy2,bid,3,Magenta) ; }
}

会做同样的事情吗?

红色标记的代码是多余的,因为订单已经被选中,你不需要再选择它来处理

 
Aleksandr_8:

谢谢你的答复。

如果我们已经选择了相同的订单,为什么还需要这样做呢?

也许我不明白的是:这个代码。

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber() ==Magicbuy) {
ticketbuy=OrderTicket()OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotbuy2,bid,3,Magenta) ; }

和这个。

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol &&)OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotbuy2,bid,3,Magenta) ; }

会做同样的事情吗?

在第一个变体中,ticketbuy上的第二个OrderSelect 使用了第二个检查,我猜(如果它在一个待定或+1 ordertotal上滑开...)。

在以前的帖子中正确发现了错误(除了绿色)。

在第二张中没有标注买票。我们需要确定

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
ticketbuy=OrderTicket();
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }
原因: