[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 589

 

在我的眼前,我正在成为一个母亲!(即成为一个女族长!) :)

这是另一件事。

如果我修改了一个订单,事后会弹出通知窗口,通知我该订单已成功修改。此外,如果我在该窗口出现后禁用EA,那么在信息窗口中按下 "确定 "后,EA将始终修复其行动(在这种情况下,关闭一个头寸)。有趣的是--EA消失了,但它的命令仍然在执行!这就是为什么我们要把它作为一个 "新 "的工具。

我不得不想了一下,把这句话去掉了

message=message+"订单修改错误#"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+" 。"+error_desc+"\n"

在那之后,一切都像它应该的那样。没有窗口......一切都可以打开和关闭......打开和关闭...打开和关闭...

:))))))))))))

P.S.

但如果你把

OrderPrint(); 

继续

没有变化......线路也是如此。

如果(ret==IDOK)返回(0)。

无论它是否存在--都不会改变!

何以如此?

 
lottamer:


为什么?

如果订单还没有打开--你将修改什么?

lottamer:

是否可以检查My_buy(非布尔变量)的TRUE-FALSE?

那么,谁是布尔式 编程师呢? 你总是可以从 "非布尔式 "中制造出一个布尔式!!。

lottamer:

修改是无条件的 - 订单是开放的 - 你必须设置止损点...

这就是检查订单是否开放的目的。

你已经勇敢地迈出了你对语言知识的下一步--你已经熟悉了图书馆的工作方式。

#include <WinUser32.mqh>

这是一个库,是MetaTrader交付的标准库。人们编写自己的(自定义)库。包含交易订单功能的库的例子。这些函数只需编写一次,然后根据需要在其代码中使用。

 
sergeev:
那你为什么把它放在大括号{ }里,如果(例如交叉平均数)?


所以它就在那里。

你认为可以在哪里插入?只有在订单打开后立即插入。

 
lottamer:

在我的眼前,我正在成为一个母亲!(即成为一个女族长!) :)

为何如此?

我只需要查一下 "什么是MessageBox()?"- 通过MetaEditor的Ctrl+F1。
 
TarasBY:

如果订单没有打开 - 你会修改什么?

那么,谁是这里的布尔 谚语家? 你总是可以从 "非布尔的 "中做出一个布尔的!!!。

这就是公开搜查令的作用。

你已经勇敢地迈出了学习语言的下一步--熟悉图书馆的工作情况。

这是一个库,是MetaTrader交付的标准库。人们编写自己的(自定义)库。一个 包含交易订单功能的库的例子。这些函数只需编写一次,然后根据需要在你的代码中使用。


如果订单还没有打开,就不能修改,因为没有什么可以修改的。 我还没有写完整个EA,我是分块写的,马上检查,然后完成后再检查。但我不认为,如果交易不会打开,那么EA就会完全失效,因为它不知道该怎么做--有一个订单要修改,而没有打开的位置。:))将在下一个交易日打开......然后它将修改

2)BOH在这里你是独一无二的,因为我,一个罪人,甚至不明白如何如此布尔-非布尔......也就是说,有一个可用的函数,我们说它被执行了,也就是说,姿势打开了。所以现在机器会理解我的可用函数现在是 "真",因为它已经被执行了?..... 抱歉,我不知道这个问题。

3)见1

4)#include 是一个我不好意思问的话题!

我没有理解错,理论上,比方说,从我的CLOSE_ALL和MODIFY脚本中,你可以做一个#include,而不是一个自定义函数并引用它

但我如何在if条件之后 插入这个#include My_buy

 
TarasBY:
这只是一个查找 "什么是MessageBox() "的问题。- 通过MetaEditor的Ctrl+F1。

这是一个细微的差别......我现在想完成专家顾问......:))
 

有谁知道翻身的事吗?

当订单以展期方式重新打开时,是否会出现止损和取出值的滑移? 如果展期后,开盘价 和止损之间的差异将小于止损水平线,将如何设置止损?

我的任务如下。如果我有一个未平仓的市场订单,我应该检查它是否以展期方式开仓,如果是,我应该得到之前订单的票据,该订单已经关闭。也许有人会告诉我搜索算法? 我目前正在做以下工作。

1.我选择第一个开放的订单。
2.如果是在23:40到00:20开的,那么我继续进一步检查这个订单(40分钟的窗口是为了以防万一,虽然理论上你可以从23:50到23:59)
3。我记得票据、止损和取价
4.我检查了历史上所有关闭的订单,评论中包含 "交换 "一词和货币对的匹配。

5.我比较止损和接管的数据,如果它们匹配,这里就是所需的订单对,如果不匹配--我回到步骤1

 

请告诉我什么叫

while(true)

在我粘贴到EA的修改器脚本中?

这个奇怪的检查是为了什么?

if(cmd==OP_BUY || cmd==OP_SELL) ?

仅仅检查是否存在一个空缺职位 不是更好吗?

int My_modify ()
 {
//      bool   result;
//      double stop_loss,take_profit,point,bid,ask, lotsize;
//      int    cmd, total, error, spread;
//      string message;
//----
   total=OrdersTotal();

//----
   for(int i=0; i<total; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         bid= MarketInfo(OrderSymbol(),MODE_BID);
         ask= MarketInfo(OrderSymbol(),MODE_ASK);
         spread=MarketInfo(OrderSymbol(),MODE_SPREAD);     
         //---- buy or sell orders are considered
         if(cmd==OP_BUY || cmd==OP_SELL)
          {
            //---- modify first market order
            while(true)
             {
                if(cmd==OP_BUY){
                        string type = "buy";
                        if(OrderStopLoss()!=0)stop_loss=OrderStopLoss();
                        else stop_loss=OrderOpenPrice()-StopLoss*point;
                        if(OrderTakeProfit()!=0)take_profit=OrderTakeProfit();
                        else take_profit=OrderOpenPrice()+TakeProfit*point;
                }
                     
                else{
                        type = "sell";
                        if(OrderStopLoss()!=0)stop_loss=OrderStopLoss();
                        else stop_loss=OrderOpenPrice()+StopLoss*point;
                        if(OrderTakeProfit()!=0)take_profit=OrderTakeProfit();
                        else take_profit=OrderOpenPrice()-TakeProfit*point;
                }   
                result=OrderModify(OrderTicket(), OrderOpenPrice(), stop_loss, take_profit, 0, CLR_NONE);
                if(result!=true) { error=GetLastError(); Print("LastError = ",error);}
                else {error=0;}
                if(error==135) RefreshRates();
                else break;
              }
                if(error==0){
                        //message=message+"Ордер #"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+" успешно модифицирован.\n";
                        }
                        else{
                                if(error == 130){string error_desc = " - Неправильные стопы";} else error_desc = "";
                                if(error != 1)
                        message=message+"Ошибка модификации ордера #"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+". "+error_desc+" \n";
                        }

              //---- print modified order (it still selected after modify)
              OrderPrint();
              continue;             
           }
        }
      else { Print( "Error when order select ", GetLastError()); break;}
     }
        int ret=MessageBox(message, NULL, MB_OK);
        if(ret==IDOK) return(0);
//----
   return(0);
  }
 
lottamer:

这是一个细微的差别......,现在我想完成顾问......:))

你想为 "库切的鼻子""移车"。在语言能力水平较低的情况下,你需要从以下方面开始练习。

采取一个现成的专家顾问,它接近你的战略,并根据你的需要对其进行现代化改造--这样它将更快地理解和理解你的行动(在明显没有阅读 "入门 "的愿望下)。

好运!

P.S.AXIOMA: "马车夫不坐马车!!!"

 
TarasBY:

你想为 "库切的鼻子""移车"。在语言能力水平较低的情况下,你需要从以下方面开始练习。

采取一个现成的专家顾问,这与你的策略接近,并升级它以适应你的需要 - 这样你会更快地理解和理解你的行动。

好运!

P.S.AXIOMA: "马车夫不会驾驶马车!!"


我实际上是在做...我看看其他的EA、脚本......然后建立我需要的东西:))