没有一个顾问不在Metatrader 5的任何货币对中工作。 - 页 6

 
关于示范美元
 
试图在这里下载机器人,还没有一个人成功。
 

换成美元,内部的EA不工作,我的就工作。

订单执行类型应该是ORDER_FILLING_RETURN

 
sandex:

换成美元,内部的EA不工作,我的就工作。

订单执行类型应该是ORDER_FILLING_RETURN

在哪里输入这种类型)。
 
dogmaone:
在哪里输入这种类型)。
如果你的机器人能工作,你能告诉我在哪里放上正确的数值,使标准机器人也能工作吗?
 

肯定是专家顾问的逻辑有问题(代码要么没有通过所有检查,要么没有考虑到交易模式)。

至少这个简单的代码在服务器 "BCS5-Real "上很容易工作。

//+------------------------------------------------------------------+
//|                                                    OrderSend.mq5 |
//|                              Copyright © 2015, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| https://www.mql5.com/ru/articles/481                             |
//+------------------------------------------------------------------+

#include<Trade\Trade.mqh>
//--- объект для проведения торговых операций
CTrade  trade;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- зададим MagicNumber для идентификации своих ордеров
   int MagicNumber=123456;
   trade.SetExpertMagicNumber(MagicNumber);
//--- установим допустимое проскальзывание в пунктах при совершении покупки/продажи
   int deviation=10;
   trade.SetDeviationInPoints(deviation);
//--- режим заполнения ордера, нужно использовать тот режим, который разрешается сервером
   trade.SetTypeFilling(ORDER_FILLING_RETURN);
//--- режим логирования: лучше не вызывать этот метод вообще, класс сам выставит оптимальный режим
   trade.LogLevel(1);
//--- какую функцию использовать для торговли: true - OrderSendAsync(), false - OrderSend()
   trade.SetAsyncMode(true);
//---
/*//--- 1. пример покупки по текущему символу
   if(!trade.Buy(0.1))
     {
      //--- сообщим о неудаче
      Print("Метод Buy() потерпел неудачу. Код возврата=",trade.ResultRetcode(),
            ". Описание кода: ",trade.ResultRetcodeDescription());
     }
   else
     {
      Print("Метод Buy() выполнен успешно. Код возврата=",trade.ResultRetcode(),
            " (",trade.ResultRetcodeDescription(),")");
     }*/

/*//--- 2. пример покупки по указанному символу
   if(!trade.Buy(0.1,"GBPUSD"))
     {
      //--- сообщим о неудаче
      Print("Метод Buy() потерпел неудачу. Код возврата=",trade.ResultRetcode(),
            ". Описание кода: ",trade.ResultRetcodeDescription());
     }
   else
     {
      Print("Метод Buy() выполнен успешно. Код возврата=",trade.ResultRetcode(),
            " (",trade.ResultRetcodeDescription(),")");
     }*/
     
//Можно указать все параметры ордера: уровни Stop Loss/Take Profit,цена открытия и комментарий.
//--- 3. пример покупки по указанному символу символу с заданными SL и TP
   double volume=0.1;         // укажем объем торговой операции
   string symbol="GBPUSD";    // укажем символ, на котором проводится операция
   int    digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // количество знаков после запятой
   double point=SymbolInfoDouble(symbol,SYMBOL_POINT);         // пункт
   double bid=SymbolInfoDouble(symbol,SYMBOL_BID);             // текущая цена для закрытия LONG
   double SL=bid-1000*point;                                   // ненормализованное значение SL
   SL=NormalizeDouble(SL,digits);                              // нормализуем Stop Loss
   double TP=bid+1000*point;                                   // ненормализованное значение TP
   TP=NormalizeDouble(TP,digits);                              // нормализуем Take Profit
//--- получим текущую цену открытия для LONG позиций
   double open_price=SymbolInfoDouble(symbol,SYMBOL_ASK);
   string comment=StringFormat("Buy %s %G lots at %s, SL=%s TP=%s",
                               symbol,volume,
                               DoubleToString(open_price,digits),
                               DoubleToString(SL,digits),
                               DoubleToString(TP,digits));
   if(!trade.Buy(volume,symbol,open_price,SL,TP,comment))
     {
      //--- сообщим о неудаче
      Print("Метод Buy() потерпел неудачу. Код возврата=",trade.ResultRetcode(),
            ". Описание кода: ",trade.ResultRetcodeDescription());
     }
   else
     {
      Print("Метод Buy() выполнен успешно. Код возврата=",trade.ResultRetcode(),
            " (",trade.ResultRetcodeDescription(),")");
     }
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir:

专家顾问的逻辑肯定是有问题的(代码要么没有通过所有检查,要么没有考虑到交易模式)。

至少在 "BCS5-Real "服务器上这样的简单代码很容易工作。

请告诉我,当我要编译你的代码时:去创建(EA模板)额外的事件处理程序,该如何选择?
 
Sergey Ponomarev:
当我要编译你的代码时,请告诉我:我想创建(EA模板)一个额外的事件处理程序,应该选择哪一个?
这是个脚本。这个脚本是为了检查在这个交易服务器上是否可以以自动模式开仓
 
Karputov Vladimir:
这是个脚本。这个脚本是为了检查在这个交易服务器上是否还能以自动模式开仓
我明白了...所以我的经纪人的服务器需要一些其他的逻辑?)
 
Karputov Vladimir:
这是个脚本。这个脚本是为了检查在这个交易服务器上是否还能以自动模式开仓
谢谢你的努力 :)