真实账户上的MetaTrader 5 - 页 2

 
IgorM:

我指的是价格,而不是SL或TP? 还有,服务器应该在什么价格为我打开市场订单,是按它给我的价格还是按我想要的价格?

为什么我不应该向服务器发送正价差的价格?)

WZZ: USDJPY : 82.49 ; 82.510000000001 ; 82.49 - 也许82.55一次 ?

下面是一个发送带有规范化价格的请求的例子

//+------------------------------------------------------------------+
//| Функция открытия ордеров                                         |
//+------------------------------------------------------------------+
void OpenOpders(string sym,ENUM_ORDER_TYPE type)
  {
   int n=0;
   bool res=true;
   while(res)
     {
      n++;
      Alert(n," - Попытка открыть ордер: ",TypeToStr(type)," на  ",sym,", Лот - ",Lots);
      double Bid=SymbolInfoDouble(sym,SYMBOL_BID);
      double Ask=SymbolInfoDouble(sym,SYMBOL_ASK);
      int digit=(int)SymbolInfoInteger(sym,SYMBOL_DIGITS);
      double price=0.0;

      if(type==ORDER_TYPE_BUY)price=NormalizeDouble(Ask,digit);
      else if(type==ORDER_TYPE_SELL)price=NormalizeDouble(Bid,digit);

      request.action       = TRADE_ACTION_DEAL;
      request.symbol       = sym;
      request.volume       = Lots;
      request.price        = price;
      request.deviation    = Slip;
      request.type         = type;
      request.type_filling = ORDER_FILLING_AON;

      OrderSend(request,result);

      switch(Fun_Error(result.retcode))
        {
         case 0:res=false;break;
         case 1:res=true;break;
         case 2:res=false;break;
        }
     }
  }
//+------------------------------------------------------------------+
//| Функция обработки ошибок                                         |
//+------------------------------------------------------------------+
int Fun_Error(int Error)
  {
   switch(Error)
     {
      case 10004: Alert("Реквота");return(1);
      case 10006: Alert("Запрос отвергнут");Sleep(3000);return(1);
      case 10007: Alert("Запрос отменен трейдером");Work=false;return(0);
      case 10008: Alert("Ордер размещен");return(2);
      case 10009: Alert("Заявка выполнена");return(2);
      case 10010: Alert("Заявка выполнена частично");return(2);
      case 10011: Alert("Ошибка обработки запроса");return(1);
      case 10012: Alert("Запрос отменен по истечению времени");return(1);
      case 10013: Alert("Неправильный запрос");Work=false;return(0);
      case 10014: Alert("Неправильный объем в запросе");Work=false;return(0);
      case 10015: Alert("Неправильная цена в запросе");Work=false;return(0);
      case 10016: Alert("Неправильные стопы в запросе");Work=false;return(0);
      case 10017: Alert("Торговля запрещена");Work=false;return(0);
      case 10018: Alert("Рынок закрыт");Work=false;return(0);
      case 10019: Alert("Нет достаточных денежных средств для выполнения запроса");Work=false;return(0);
      case 10020: Alert("Цены изменились");return(1);
      case 10021: Alert("Отсутствуют котировки для обработки запроса");Sleep(3000);return(1);
      case 10022: Alert("Неверная дата истечения ордера в запросе");Work=false;return(0);
      case 10023: Alert("Состояние ордера изменилось");return(2);
      case 10024: Alert("Слишком частые запросы");Work=false;return(0);
      case 10025: Alert("В запросе нет изменений");Sleep(3000);return(1);
      case 10026: Alert("Автотрейдинг запрещен сервером");Work=false;return(0);
      case 10027: Alert("Автотрейдинг запрещен клиентским терминалом");Work=false;return(0);
      case 10028: Alert("Запрос заблокирован для обработки");return(2);
      case 10029: Alert("Ордер или позиция заморожены");return(2);
      case 10030: Alert("Указан неподдерживаемый тип исполнения ордера по остатку");Work=false;return(0);
      case 10031: Alert("Нет соединения с торговым сервером");Sleep(3000);return(1);
      case 10032: Alert("Операция разрешена только для реальных счетов");Work=false;return(0);
      case 10033: Alert("Достигнут лимит на количество отложенных ордеров");return(2);
      case 10034: Alert("Достигнут лимит на объем ордеров и позиций для данного символа");return(2);
      default:    Alert("Ошибка № - ",Error);Work=false;return(0);
     }
  }
//+------------------------------------------------------------------+
//| Функция преоброзования типа ордера в строку                      |
//+------------------------------------------------------------------+
string TypeToStr(ENUM_ORDER_TYPE type)
  {
   switch(type)
     {
      case  ORDER_TYPE_BUY:  return("BUY");
      case  ORDER_TYPE_SELL: return("SELL");
     }
   return("");
  }
 
Renat:
也就是说,"平台受潮 "的论点没有得到任何证实。

我从来没有提到过平台的潮湿性 - 重新阅读我的帖子

我已经就这个问题发表了我的意见--如果你认为它们没有证据,那就随它们去吧,但我认为你们公司是为MT5平台的经纪人销售软件的。

sergey1294:

下面是一个发送带有规范化价格的请求的例子

谢谢,但我对交易和价格的想法略有不同,我想在82.47,82.4599999999,82.47的价格上开一个订单,尝试正常化。

我不确定服务器 "发明 "了一个82.46的价格,因为这样的价格并没有记录在它的日志中,如果它不是市场价格--我不需要它--让它留在服务器上,不要在我的日志中出现错误。

 
IgorM:

我从来没有提到过平台的潮湿性 - 重新阅读我的帖子

我已经就这个问题发表了我的意见--如果你认为他们没有证据,那就这样吧,但我认为你们公司是为MT5平台的经纪人销售软件。

sps,但我对交易的想法略有不同,我想在这个价格上开立一个订单,尝试将82.47,82.4599999999,82.47正常化。

我不确定服务器 "发明 "了一个82.46的价格,因为这样的价格不在他的日志中,如果这个价格不是市场价格--我不需要它--让它留在服务器上,不要在我的日志中出现错误。

不幸的是,你不知道实数的基本算术和它们在计算机中的表现。这是你对 "非正常化 "价格误解的根源。

82.45999999(9)是82.46的双倍表示。

 
IgorM:

我从来没有提到过平台的潮湿性 - 重新阅读我的帖子

我已经就这个问题发表了我的意见--如果你认为他们没有证据,那就这样吧,但我认为你们公司是为MT5平台的经纪人销售软件。

sps,但我对交易的想法略有不同,我想在这个价格上开立一个订单,尝试将82.47,82.4599999999,82.47正常化。

我不确定服务器是否会 "发明 "一个82.46的价格,因为在它的日志中没有这样的价格,如果它不是市场价格,我不需要它--让它留在服务器上,不要在我的日志中出现错误。

你不太明白你的定价思路是什么,公认的价格有五位或四位小数,所以你需要把价格削减到小数点后那一位。
 
Renat:

不幸的是,你不知道实数的基本算术和它们在计算机中的表现。这是你对 "非正常化 "价格误解的根源。

82.459999(9)是82.46的双重代表。

好的,我会找时间重读可能已经忘记的材料,也就是说,这样的价格(82.459999(9))会被交易服务器接受,以打开市场订单?

sergey1294 请注意开发人员给你的现成的例子和类,至少开发人员提供的CTrade类没有NormalizeDouble()函数,以及MQL5参考/交易函数/OrderSend中的例子。

如果我读了原始资料中的例子,我不会去发明和最初写错误的程序,在MT4参考资料中,OrderSend()的例子也没有包含价格正常化的内容。

 
IgorM:

好吧,我找时间重读一下可能已经被我遗忘的内容,也就是说,这样的价格(82.459999(9))会被交易服务器接受,以打开市场订单?

是的,如果它是tick流中正确的/现有的价格。


sergey1294 请注意开发人员给你的现成的例子和类,至少开发人员提供的CTrade类没有NormalizeDouble()函数,以及MQL5参考/交易函数/OrderSend中的例子。

如果我在源代码中读到了具体的例子,我就不会去发明和最初写错误的程序了

如果你使用常规的买入价和卖出价来做交易,它们总是被规范化的。在发送交易指令之前,需要对计算的价格(如止损)进行规范化处理。

标准的 CTrade 方法不会强行将订单的输入价格规范化,因为这是绝对不能接受的 - 你不能替代上面宣布的价格。

 
Renat:
是的,只要它是tick流中正确/存在的价格。


如果你使用常规的买入和卖出进行交易,它们总是被规范化的。但在发送交易指令之前,计算出的价格(如止损)已经需要自己进行规范化处理。

标准的CTrade方法不对强制传入的投标价格进行规范化处理,因为这是绝对不能接受的--你不能替代在更高层次上的价格。

cp!不介意在MT5手册中多提几遍,这样就不会有误解,可以立即发送阅读帮助:)

ZS: 我知道SL和TR,但我不记得或没有在帮助中读到过,也没有在论坛上搞清楚。

 
IgorM:

cp!如果你能在MT5手册中多次提到这一点,这样就不会有误解,可以直接送你去阅读手册:)

是的,我们正在不断升级文件,并增加澄清内容。
 
IgorM:

我一直在读这个论坛,经常被你的深刻和丰富的帖子惊呆了;)

至于这个问题,我怀疑模拟账户的报价与微观现实不同,但模拟账户很多时候有非正常化的价格,强烈的运动--你不能通过他们打开或关闭订单,我希望看到一些订单,这样就不会责怪MT5了。

至于味道和颜色,这是一种流行的智慧--非正常化的价格让一些人感到困扰,尽管我个人认为这不是一个大问题(因为我很久以前就使用挂单,这样的价格对我来说不是一个大问题)。但对我来说,问题是诸如OnTimer() 不愿意在测试器中 工作或其他类似的事情。

但即使有了这些投入,当选择一个终端来交易美分账户(存款200美元)时,我个人将使我的选择倾向于MT5。

具备目前所有的劣势!

 
Interesting:

有些人对 "非正常化价格 "感到困扰,但我个人认为这不是一个大问题(因为我已经使用延迟很长时间了,这些价格对我来说不是什么大问题)。但对我来说,问题是诸如OnTimer() 不愿意在测试器中工作 或其他类似的事情。

这个错误是不成功的优化造成的,在第358次构建中已经得到纠正。