错误、漏洞、问题 - 页 259

 

主持人,有一个问题要问你。

我不能向Servicedesk 发送请求

而且关闭按钮也不起作用

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
sergeev:

主持人,有一个问题要问你。

我不能向Servicedesk 发送请求

而且 "关闭 "按钮不起作用

请再试一次。Servicedesk是公司内部系统的一部分,最近被重新启动了。
 
你能告诉我如何知道一笔交易是否已在止损上平仓?
 
我想知道是否有替代5中的无限循环脚本的方法,因为这样的脚本非常任性,我希望它在重新打开终端或改变时间框架时继续工作?
 
Olegts:
我想知道是否有替代5中的无限循环脚本 的方法,因为这样的脚本非常任性,我希望它在重新打开终端或改变时间框架时继续工作?

如果你对1秒的最小频率感到满意,那么OnTimer,否则

只要 在OnTimer中没有 微秒的操作。

 
由于类型转换可能导致数据丢失 ChartObject.mqh 213 4
由于类型转换可能导致数据丢失 ChartObject.mqh 481 4
由于类型转换可能导致数据丢失 ChartObject.mqh 867 17
由于类型转换可能导致数据丢失 ChartObjectsTxtControls.mqh 519 4

图片375--vornings出现在标准图书馆。可能还有一些,我还没有检查。

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Urain:

如果你对最小频率为1秒感到满意,那么就使用OnTimer,否则

OnTimer之前 ,没有 微秒的操作。

谢谢你,需要较短的间隔时间,所以还是老办法 :)
 
nanaos:
你能告诉我,我如何知道一笔交易是否被止损平仓?

在MT5中,在止损时关闭的不是交易,而是头寸,目前你只能通过在止损时关闭头寸 的交易的评论来了解。下面是一个示例代码。

void Event()
  {
   if(!HistorySelectByPosition(ID))return;
   double margin=0.0;
   bool res;
   int total=HistoryOrdersTotal();
   ulong deal_ticket=HistoryDealGetTicket(total-1);
   string coment=HistoryDealGetString(deal_ticket,DEAL_COMMENT);
   long deal_type=HistoryDealGetInteger(deal_ticket,DEAL_TYPE);
   double volume=HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
   double MinLot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double MaxLot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   ulong stoplevel=SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);

   if(deal_type==ORDER_TYPE_BUY)
     {
      if(StringFind(coment,"sl")>=0)
        {
         request.volume=NormalizeDouble(volume*Klot,DigitsVolume());
         request.price=NormalizeDouble(Bid,_Digits);
         request.type = ORDER_TYPE_SELL;
         if(SL<=0 || TP<=0)return;
         if(SL>=stoplevel) request.sl=NormalizeDouble(Ask+(SL*_Point),_Digits);
         if(SL<stoplevel) request.sl=NormalizeDouble(Ask+(stoplevel*_Point),_Digits);
         if(TP>=stoplevel) request.tp=NormalizeDouble(Bid -(TP*_Point),_Digits);
         if(TP<stoplevel) request.tp=NormalizeDouble(Bid -(stoplevel*_Point),_Digits);
         OrderCalcMargin(request.type,_Symbol,request.volume,Bid,margin);
         if(AccountInfoDouble(ACCOUNT_FREEMARGIN)-margin<0)return;
        }
      if(StringFind(coment,"tp")>=0){flagNewSeries=true;return;}
     }
   if(deal_type==ORDER_TYPE_SELL)
     {
      if(StringFind(coment,"sl")>=0)
        {
         request.volume=NormalizeDouble(volume*Klot,DigitsVolume());
         request.price=NormalizeDouble(Ask,_Digits);
         request.type = ORDER_TYPE_BUY;
         if(SL<=0 || TP<=0)return;
         if(SL>=stoplevel) request.sl=NormalizeDouble(Bid -(SL*_Point),_Digits);
         if(SL<stoplevel) request.sl=NormalizeDouble(Bid -(stoplevel*_Point),_Digits);
         if(TP>=stoplevel) request.tp=NormalizeDouble(Ask+(TP*_Point),_Digits);
         if(TP<stoplevel) request.tp=NormalizeDouble(Ask+(stoplevel*_Point),_Digits);
         OrderCalcMargin(request.type,_Symbol,request.volume,Ask,margin);
         if(AccountInfoDouble(ACCOUNT_FREEMARGIN)-margin<0)return;
        }
      if(StringFind(coment,"tp")>=0){flagNewSeries=true;return;}
     }

   if(request.volume<MinLot)request.volume=MinLot;
   if(request.volume>MaxLot)request.volume=MaxLot;
   request.volume=NormalizeDouble(request.volume,DigitsVolume());

   request.action       = TRADE_ACTION_DEAL;
   request.magic        = Magic;
   request.symbol       = _Symbol;
   request.deviation    = Slip;
   request.type_filling = ORDER_FILLING_AON;
   request.comment      = CommentOrder;

   OrderSend(request,result);

   switch(result.retcode)
     {
      case 10008: {Print("Ордер размещен");PositionSelect(Symbol());ID=PositionGetInteger(POSITION_IDENTIFIER);}break;
      case 10009: {Print("Заявка выполнена");PositionSelect(Symbol());ID=PositionGetInteger(POSITION_IDENTIFIER);}break;
      case 10004: {Print("Реквота");}break;
      case 10006: {Print("Запрос отвергнут");}break;
      case 10007: {Print("Запрос отменен трейдером");res=false;}break;

      case 10010: {Print("Заявка выполнена частично");res=false;}break;
      case 10011: {Print("Ошибка обработки запроса");res=false;}break;
      case 10012: {Print("Запрос отменен по истечению времени");}break;
      case 10013: {Print("Неправильный запрос");res=false;}break;
      case 10014: {Print("Неправильный объем в запросе");res=false;}break;
      case 10015: {Print("Неправильная цена в запросе");res=false;}break;
      case 10016: {Print("Неправильные стопы в запросе");res=false;}break;
      case 10017: {Print("Торговля запрещена");res=false;}break;
      case 10018: {Print("Рынок закрыт");}break;
      case 10019: {Print("Нет достаточных денежных средств для выполнения запроса");res=false;}break;
      case 10020: {Print("Цены изменились");}break;
      case 10021: {Print("Отсутствуют котировки для обработки запроса");}break;
      case 10022: {Print("Неверная дата истечения ордера в запросе");res=false;}break;
      case 10023: {Print("Состояние ордера изменилось");}break;
      case 10024: {Print("Слишком частые запросы");res=false;}break;
      case 10025: {Print("В запросе нет изменений");res=false;}break;
      case 10026: {Print("Автотрейдинг запрещен сервером");res=false;}break;
      case 10027: {Print("Автотрейдинг запрещен клиентским терминалом");res=false;}break;
      case 10028: {Print("Запрос заблокирован для обработки");res=false;}break;
      case 10029: {Print("Ордер или позиция заморожены");res=false;}break;
      case 10030: {Print("Указан неподдерживаемый тип исполнения ордера по остатку");res=false;}break;
      case 10031: {Print("Нет соединения с торговым сервером");}break;
      case 10032: {Print("Операция разрешена только для реальных счетов");res=false;}break;
      case 10033: {Print("Достигнут лимит на количество отложенных ордеров");res=false;}break;
      case 10034: {Print("Достигнут лимит на объем ордеров и позиций для данного символа");res=false;}break;
      default:    Print("Ошибка № - ",result.retcode);
     }
  }
 

EA已经在区间AB上进行了优化。以上是在区间AD上用这些参数运行的情况。我不明白在C点会发生什么。

我不明白,专家顾问实际上没有在CD间隔上进行优化。也许之后的一些贸易规则会有变化 25.10.2010(C点)还是别的什么?

 
sultanm:

EA已经在区间AB上进行了优化。以上是在区间AD上用这些参数运行的情况。我不明白在C点会发生什么。

虽然专家顾问实际上没有在CD间隔上进行优化。也许之后的一些交易规则有了变化 25.10.2010(C点)还是别的什么?

专家顾问的平均利润交易规模是多少?直觉告诉我,这还不到10个点。

问题可能出在历史数据上--它要么是经过了更多的梳理(过滤),要么就是更正确(比如包含正确的价差)。

什么是服务器?

原因: