初学者的问题 MQL5 MT5 MetaTrader 5 - 页 135

 
zfs:
平均盈利的交易不会覆盖滑点,盈利能力也很小,也可能是一种配合)。

我自己写了专家顾问。这里面没有止损。

 
PetrovichV:

我自己写了这个专家。它没有止损。

那就更糟糕了)。
 
zfs:
这更糟糕)。
谢谢你。
 

我可能会回答我自己的问题,现在已经找到了解决方案--你永远不知道谁会在谷歌上搜索......。

这个问题是关于如何从历史记录中获得最后一笔订单的开盘价。结果发现(至少对我来说不是),它是正确的--我必须得到一个交易的价格,而不是一个订单的价格。在测试器中,最初的变体也能工作(不是我写的)--我怀疑区别在于,在演示版中,它只是说 "市场价格 "而不是价格,当试图请求它为双倍时,由于某种原因返回了零。让它见鬼去吧,现在这个函数看起来像这样。

PositionID = PositionGetInteger(POSITION_IDENTIFIER);

double FindLastPrice(long PositionID) {
   int  i = 0, DealsTotal;
   ENUM_DEAL_TYPE CheckType;
   long Ticket, OldTicket = 0, PosID, Magic, Type;
   double OrderPrice = 0;
   
   DealsTotal = HistoryDealsTotal();
   
   for (i = 0; i < DealsTotal; i++) {
      Ticket = (int)HistoryDealGetTicket(i);
      PosID  = HistoryDealGetInteger(Ticket, DEAL_POSITION_ID);
      Magic  = HistoryDealGetInteger(Ticket, DEAL_MAGIC);
      Type   = HistoryDealGetInteger(Ticket, DEAL_TYPE);
      
      if (Sell) CheckType = DEAL_TYPE_SELL; 
      else CheckType = DEAL_TYPE_BUY;
      
      if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == CheckType)) {
         if (Ticket > OldTicket) {
            OrderPrice = HistoryDealGetDouble(Ticket, DEAL_PRICE);
            OldTicket = Ticket;
         }
      }
   }
   if(!OrderPrice) Print("Ошибка получения цены открытия предыдущей сделки! Error ",GetLastError());
   return(OrderPrice);
}

我不得不为这种无稽之谈消磨几个小时,但至少它都有它的好处:因为这个不工作的功能,我不得不发明一个变通办法,同时掌握基本的文件工作,愚蠢地将每个新的订单价格写入文件,并在必要时读取它......

 
Lone_Irbis:

我可能会回答我自己的问题,因为解决方案已经被找到了--以防有人在谷歌上搜索......

该问题是关于如何从历史记录中获得最后一笔订单的开盘价。....

如果你能使用网站上的搜索,或翻阅已经有的文章,就可以了。

>>>MQL5配方 - 交易历史和获取位置属性的函数库

 
tol64:

而你可以直接使用网站搜索,或在没有其他东西的地方翻阅文章。

>>>MQL5配方 - 交易历史和获取位置属性的函数库

我在这个网站上搜索了一个星期(即通过谷歌,因为内置的搜索有些奇怪:它要么以随机的顺序给出完全不确切的东西,而不是按相关性,或者甚至说 "没有发现",即使是对同一文件的复制请求)...但要找到有用的东西,你应该知道它到底叫什么,以及它与已经存在的非工作版本有什么不同 :)从一个对语言有一定了解的人的立场来谈论搜索是很容易的,但如果你对mql5这个名字只知道一个星期,而且已经在尝试用它做一些东西,那就更难了......

另外,我不太喜欢现成的解决方案和详细的手册,作为一个概念,它们只会让我不愿意自己动手。:)也许我的自学方式不是很有效,但更重要的是它是有趣的--否则在这个话题上投入个人时间的热情就会长期不足。

尽管如此,还是要感谢你的链接,我将阅读它。

 

下午好。

有什么办法可以下载20-30年的货币历史数据?

在Alfa-Forex,这只是过去12年的情况,但在此之前,它是零星的。

 
PetrovichV:

下午好。

有什么办法可以下载20-30年的货币历史数据?

在Alfa-Forex,这只是过去12年的情况,但在此之前,它是零星的。

你的经纪人给你的历史,当你增加期限时,质量会下降。
 

这里是买入订单 的代码,然后它的SL和TP被改变。

我得到的错误是:2013.09.06 00:03:39 交易 '10022332': 修改订单#0失败 买0.00 GBPUSD at market sl: 0.00000 tp: 0.00000 -> 1.56255, sl: 1.55787 tp: 1.56787 [Invalid request]
更改级别的要求有什么问题?

int Positions;
double delta=0.00500;

MqlTradeRequest  Request;
MqlTradeResult   Result;
MqlTick         InfoTick;


void OnTick()

{
//---

 if(PositionsTotal()==0) // если открытых позиций нет, покупаем
   { 
      
    SymbolInfoTick(_Symbol, InfoTick);
                              
    Request.action=TRADE_ACTION_DEAL;
    Request.symbol=_Symbol;
    Request.volume=1;
    Request.price=InfoTick.bid;
    Request.sl=InfoTick.bid - delta;
    Request.tp=InfoTick.bid + delta;
    Request.deviation=50;
    Request.type=ORDER_TYPE_BUY;
    Request.type_filling=ORDER_FILLING_FOK;
               
    OrderSend(Request, Result);
   
  }else{                                     // меняем уровни
        SymbolInfoTick(_Symbol, InfoTick); 
        
        Request.action=TRADE_ACTION_MODIFY;
        Request.symbol=_Symbol;
        Request.sl=InfoTick.last - delta;
        Request.tp=InfoTick.last + delta;
                          
        OrderSend(Request, Result);
       }
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
agvozdezkiy:

这里是买入订单 的代码,然后它的SL和TP被改变。

我得到的错误是:2013.09.06 00:03:39 交易 '10022332': 修改订单#0失败 买0.00 GBPUSD at market sl: 0.00000 tp: 0.00000 -> 1.56255, sl: 1.55787 tp: 1.56787 [Invalid request]
更改级别的要求有什么问题?

获取错误代码作为开始。