ライブ口座でのMetaTrader 5のご利用について - ページ 2

 
IgorM:

SLやTPではなく、価格のことですか? また、サーバーはどの価格で成行注文を出すべきなのでしょうか、それとも私が希望する価格で?

なぜ正のスプレッドを持つ価格をサーバーに送信してはいけないのですか?)

WZZ: USDJPY : 82.49 ; 82.510000000001 ; 82.49 - maybe 82.55 at once ?

価格を正規化したリクエストを送信する例を以下に示します。

//+------------------------------------------------------------------+
//| Функция открытия ордеров                                         |
//+------------------------------------------------------------------+
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.45999999,82.47で注文を出したいのですが、取引と価格について少し違う考えを持っているので、正常化を試みます。

私はそのような価格は、そのログに記録されていなかったので、サーバーは価格82.46を "発明 "だと確信していないと、それは市場価格ではない場合 - 私はそれを必要としない - それはサーバー上に滞在し、私のログのエラーを通過しないようにしましょう。

 
IgorM:

私はプラットフォームが湿っていることに言及したことはありません。

私はこのテーマについてコメントしました。根拠のないコメントだと思われるかもしれませんが、御社はMt5プラットフォームでブローカー用のソフトウェアを販売しているのだと思います。

SPSですが、私は取引と注文を出す価格について少し違った考えを持っていて、82.47, 82.4599999999, 82.47をノーマライズしようとします。

私はそのような価格は、彼のログではなかったと価格は市場でない場合 - 私はそれを必要としない - それはサーバー上に残っているとエラーで私のログに行かないようにするので、サーバーは価格82.46を "発明 "を確信していないです。

残念ながら、あなたは実数の基本的な演算と、コンピュータでの表現方法をご存じないようです。それが「非正規化」価格に対する誤解の根源である。

82.45999999(9)は82.46の2倍表示

 
IgorM:

私はプラットフォームが湿っていることに言及したことはありません。

私はこのテーマについてコメントしました。根拠のないコメントだと思われるかもしれませんが、御社はMt5プラットフォームでブローカー用のソフトウェアを販売しているのだと思います。

SPSですが、私は取引と注文を出す価格について少し違った考えを持っていて、82.47, 82.45999999, 82.47 を正規化しようとします。

私は、サーバーがそのログにそのような価格がないとして価格82.46を "発明 "するかどうかわからないし、それが市場価格でない場合、私はそれを必要としない - それはサーバーに滞在し、私のログのエラーで行かないようにしましょう。

価格設定の考え方がよくわからない、認められた価格は小数点以下5桁、4桁だから、その小数点以下まで価格を下げなければならない。
 
Renat:

残念ながら、あなたは実数の基本的な演算と、コンピュータでの表現方法をご存じないようです。これが、「非正規化」価格に対する誤解の根源です。

82.459999(9)は82.46の二重表現

OK、私は時間を見つけて、おそらくすでに忘れてしまった資料を読み直します、つまり、そのような価格(82.45999999(9))は、取引サーバーによって成行注文を開くために受け入れられるのでしょうか?

sergey1294 開発者が既製の例やクラスとして提供したものに注目してください。少なくとも開発者が提供したCTradeクラスはNormalizeDouble()関数を持っていませんし、MQL5 Reference/ Trading Functions / OrderSendの例も同様です。

私は、元のソースの例を読んだ場合、私は発明し、最初に間違ったプログラムを書くつもりはない、MT4リファレンスではOrderSend()の例も価格の正規化を含んでいない

 
IgorM:

OK、私は時間を見つけて、おそらくすでに私が忘れてしまった、すなわち、このような価格(82.45999999(9))は、成行注文を開くために取引サーバーによって受け入れられる再読してみましょうか。

はい、ティックストリームで正しい/存在する価格であれば、です。


sergey1294 開発者が既製の例やクラスとして提供したものに注目してください。少なくとも開発者が提供したCTradeクラスはNormalizeDouble()関数を持っていませんし、MQL5 Reference/ Trading Functions / OrderSendの例も同様です。

ソースで具体的な例を読んでいれば、間違ったプログラムを考案して最初に書くようなことはしない

通常のBidとAskを取引に使用する場合は、常に正規化されています。計算された価格(ストップなど)は、取引注文を送信する前に正規化する必要があります。

標準的なCTradeメソッドでは、受信した注文価格を強制的に正規化することはありません。なぜなら、それは断固として容認できないからです。

 
Renat:
はい、ティックストリーム内の正しい/既存の価格である限り、です。


通常のBidとAskを取引に 使用する場合は、常に正規化されています。しかし、計算された価格(ストップなど)は、取引注文を送信する前にすでに自分で正規化する必要があります。

CTradeの標準的な方法では、強制的に入力されたビッド価格を正規化することはできませんので、より高いレベルの価格で代替することはできません。

cp!MT5ハンドブックで何度も言及し、誤解がないように、すぐにヘルプを読むように送れるように、気にしないでください :)

ZS: SLとTRは知っているが、ヘルプで読んだり、フォーラムで把握した覚えはない

 
IgorM:

cp!もしよろしければ、MT5のハンドブックで何度かこのことに触れていただけると、誤解がなく、そのままハンドブックを読むように送られます :)

はい、常にドキュメントのアップグレードと説明の追加を行っています。
 
IgorM:

私はこのフォーラムをいつも読んで、非常に頻繁に私はあなたの深遠な、有益な投稿に驚かされる;)。

件名については、私はデモ口座の引用符はmicrorealと異なることを疑うが、デモ口座は非常に頻繁に非正規化された価格、強い動きを持っている - あなたはそれらによって順序を開いたり閉じたりすることはできません、私はいくつかの順序を見てみたい、その後にMT5を非難しないようにすること

味と色に関しては、一般的な知恵として、正規化されていない価格が気になる人がいるようですが、個人的には大きな問題とは考えていません(昔、ペンディングオーダーを使っていたので、このような価格は私にとって大きな問題ではありません)。でも、テスターでOnTimer() が動かないとか、そういうのが問題なんです。

しかし、これらの入力があっても、セント口座(200ドルの入金)で取引するターミナルを選択する場合、私個人はMT5を支持する選択をすることになります。

現在のデメリットを踏まえた上で!

 
Interesting:

正規化されていない価格」を気にされる方もいらっしゃいますが、個人的には大きな問題とは思っていません(ディレイを長く使っている私にとっては、この価格はそれほど大きな問題ではないからです)。ただ、テスターでOnTimer() が動かないとか、そういうのが問題なんです。

このエラーは、最適化に失敗した結果であり、新しい358番目のビルドで修正されました。