エラー、バグ、質問 - ページ 668

 

Price tumblrの 色に注目すると、混乱があるようです。

//---

購入 ボタンは青色です。そのため、入札できる価格も青色であることが望ましい。今は逆で、慣れるために努力しなければならないし、うまくいきそうにない。心理的なニュアンスですね。)))

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен - Документация по MQL5
 

ヘルプの Price Stackに 関連する情報から、テストのレイアウトは以下のようなものになります。

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   MarketBookAdd(_Symbol);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   MarketBookRelease(_Symbol);
  }
//+------------------------------------------------------------------+
//| OnBook Event                                                     |
//+------------------------------------------------------------------+
MqlBookInfo priceArray[];
//---
void OnBookEvent(const string &symbol_name)
  {
   bool getBook=MarketBookGet(_Symbol,priceArray);
//---
   if(!getBook)
     {
      Print("Не удалось получить содержимое стакана по символу ",Symbol());
     }
  }
//+------------------------------------------------------------------+
//| OnChart event handler                                            |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   double price_buy=0.0,price_sell=0.0;
//---
   TRADE_EXEMODE=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_EXEMODE); // Узнаем тип исполнения
//---
   if(TRADE_EXEMODE==SYMBOL_TRADE_EXECUTION_MARKET ||
            TRADE_EXEMODE==SYMBOL_TRADE_EXECUTION_EXCHANGE)
     {
      mytrade.SetTypeFilling(ORDER_FILLING_IOC);
      //---
      if(TRADE_EXEMODE==SYMBOL_TRADE_EXECUTION_EXCHANGE)
        {
         int size=ArraySize(priceArray);
         //---
         for(int i=size-1; i>=0; i--)
           {
            if(priceArray[i].type==1)
              {
               price_buy=priceArray[i].price; // Получим ближайшую цену для BUY
               price_sell=priceArray[i+1].price; // Получим ближайшую цену для SELL

               //---
               break;
              }
           }
        }
      else
        {
         price_buy=mylast_tick.ask;
         price_sell=mylast_tick.bid;
        }
     }
//---
   //... Далее следуют функции для совершения торговых операций
  }

//---

しかし、取引を行う際、Expert Advisorのログにメッセージが表示され、そこから、クエリの中に価格があったものの、それはDepth of Marketで最も近いものであったことがわかる。

price_request=mytrade.RequestPrice();

の場合、結果は価格なし(0.000)です。

price_result=mytrade.ResultPrice();

となり、trade 関数はfalse を返します。

//---

ログを見ると、ゼロ価格でポジションを開こうとしたことがわかります。

が、それにもかかわらず、現在の価格でポジションが開設されました。

//---

この情報だけでは、どちらに問題があるのか判断できない場合は、サービスデスクに手紙を出します。

 

保留中の注文を削除する方法を教えてください。

trReq.order=order_ticket。

trReq.type=TRADE_ACTION_REMOVE;

OrderSend(trReq,trRez)。

コンパイラは、TRADE_ACTION_REMOVEは enumを変換できませんと表示します。

と同じエラーについて2回。

は、以前ゼロベースで同じように試しました。

trReq.symbol =Symbol(); //NULL

trReq.magic =MAGIC; //0

trReq.volume =0.0;

trReq.type =0;

trReq.price =0.0;

trReq.sl =0.0;

trReq.tp =0.0;

trReq.type_time =0;

trReq.expiration=0。

は動作しません。ビルド 597

完全な例を教えてください。よろしくお願いします。

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
stroka:
...

完全な例を挙げてください。よろしくお願いします。

標準ライブラリに完全な例があります。関数OrderDelete()。ドキュメントがある。また、取引業務全般の機能を担うことができます。

//+------------------------------------------------------------------+
//| Delete specified pending order.                                  |
//| INPUT:  ticket - ticket of order for delete.                     |
//| OUTPUT: true-if successful, false otherwise.                     |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CTrade::OrderDelete(ulong ticket)
  {
//--- variables
   string action,result;
//--- check stopped
   if(IsStopped(__FUNCTION__)) return(false);
//--- clean
   ClearStructures();
//--- setting request
   m_request.action    =TRADE_ACTION_REMOVE;
   m_request.order     =ticket;
//--- order check
   if(!OrderCheck(m_request,m_check_result))
     {
      //--- copy return code
      m_result.retcode=m_check_result.retcode;
      if(m_log_level>LOG_LEVEL_NO)
         printf(__FUNCTION__+": %s [%s]",FormatRequest(action,m_request),FormatRequestResult(result,m_request,m_result));
      return(false);
     }
//--- order send
   if(!OrderSend(m_request,m_result))
     {
      if(m_log_level>LOG_LEVEL_NO)
         printf(__FUNCTION__+": %s [%s]",FormatRequest(action,m_request),FormatRequestResult(result,m_request,m_result));
      return(false);
     }
   if(m_log_level>LOG_LEVEL_ERRORS)
      printf(__FUNCTION__+": %s [%s]",FormatRequest(action,m_request),FormatRequestResult(result,m_request,m_result));
//--- ok
   return(true);
  }
 
ターミナルが mql5 コミュニティにログインしない。端末の 設定でログインとパスワードを入力し、okを押しても何も起きない。再度設定を入力すると、ログインは保存されますが、パスワードが空欄になってしまいます。マーケットから何もダウンロードできない。フォーラムには問題なく入ることができます。
 
Dima_S:

外部パラメータとして文字列を設定する際に、文字列を切り捨てる目的は何ですか?

入力文字列- 最大105文字まで指定可能、それ以上の場合は右端で切り取られる。

ビルド 597

ビッド607 - 同じ問題です。
 

以下のコードで対応するウィンドウが見つからない理由を教えてください (確認したところ、このクラスを持つウィンドウは存在しました)

#import "user32.dll"
   int FindWindowA(string &lpClassName, string &lpWindowName);
#import

string FormClass="TMyMainForm";
string FormName="";
int hnd = FindWindowA(FormClass,FormName);
if (hnd==0) printf("not found");
else printf("found");
 

になんらかのエラーがあるようです。

//+------------------------------------------------------------------+
//| Open position.                                                   |
//| INPUT:  symbol     -symbol for trade,                            |
//|         order_type -direct for open,                             |
//|         volume     -volume of position,                          |
//|         price      -price for open,                              |
//|         stop       -price of stop loss,                          |
//|         take       -price of take profit,                        |
//|         comment    -comment of position.                         |
//| OUTPUT: true-if successful, false otherwise.                     |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CTrade::PositionOpen(const string symbol,ENUM_ORDER_TYPE order_type,double volume,
                          double price,double sl,double tp,const string comment)

リターンコード10008(発注済み)の場合、このメソッドはfalseを返します。

最終的に注文は実行されます。

そのため、デモ口座では必要以上の注文が 開設された。

RQ      0       Trades  14:00:18        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
IO      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
MH      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MQ      0       Trades  14:00:18        '3119321' : deal #2888080 buy 0.10 USDCHF at 0.91144 done (based on order #4880065)
NL      0       Trades  14:00:18        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
MK      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
IS      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MN      0       Trades  14:00:19        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
NE      0       Trades  14:00:19        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
JQ      0       Trades  14:00:19        '3119321' : exchange buy 0.10 USDCHF at 0.00000
PJ      0       Trades  14:00:19        '3119321' : deal #2888081 buy 0.10 USDCHF at 0.91144 done (based on order #4880066)
KG      0       Trades  14:00:20        '3119321' : deal #2888082 buy 0.10 USDCHF at 0.91145 done (based on order #4880067)
KF      0       Trades  14:00:20        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
LM      0       Trades  14:00:20        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
HJ      0       Trades  14:00:20        '3119321' : exchange buy 0.10 USDCHF at 0.00000
DR      0       Trades  14:00:20        '3119321' : deal #2888083 buy 0.10 USDCHF at 0.91146 done (based on order #4880068)
HR      0       Trades  14:00:21        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
OJ      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
CE      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MN      0       Trades  14:00:21        '3119321' : deal #2888084 buy 0.10 USDCHF at 0.91146 done (based on order #4880069)
DI      0       Trades  14:00:21        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
CF      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
OP      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000
GI      0       Trades  14:00:22        '3119321' : deal #2888085 buy 0.10 USDCHF at 0.91146 done (based on order #4880070)
QD      0       Trades  14:00:22        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
JS      0       Trades  14:00:22        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
NK      0       Trades  14:00:22        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MD      0       Trades  14:00:22        '3119321' : deal #2888086 buy 0.10 USDCHF at 0.91146 done (based on order #4880071)
NS      0       Trades  14:00:23        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
MH      0       Trades  14:00:23        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
IG      0       Trades  14:00:23        '3119321' : exchange buy 0.10 USDCHF at 0.00000
....

そして、Expert Advisorのログ

(EURUSD,H1)     14:00:18        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:18        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:19        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:20        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:21        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:21        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:22        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:23        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:23        CTrade::PositionOpen:  [placed]
....

教えてください。サーバーに成行注文を出したのに、(部分的にでも)約定しなかったという状況は、どのような場合に起こりうるのでしょうか?
Документация по MQL5: Торговые функции / OrdersTotal
Документация по MQL5: Торговые функции / OrdersTotal
  • www.mql5.com
Торговые функции / OrdersTotal - Документация по MQL5
 
olyakish:

にエラーがあるようです。

リターンコード10008(発注済み)の場合、このメソッドはfalseを返します。

結局、注文は実行される。

そのため、デモ口座では必要以上の注文が 開設された。

そして、エキスパートログ

サーバーに成行注文を出したが、(一部でも)約定しない場合があるが、どのような場合か教えてください。

ページの一番最初に同じ問題が書かれています。こちら(https://www.mql5.com/ru/forum/1111/page679#comment_16400 2)に記載されています。まだ回答はありません。

//---

デモ口座はどこに開設していますか?

 
tol64:

ページの一番最初に同じ問題が書かれています。これだ!https://www.mql5.com/ru/forum/1111/page679#comment_164002。 まだ答えは出ていない。

//---

デモ口座はどこに開設していますか?

1.遅ればせながら、このスレッドを拝見しました。

2.A*****iにて。

そして、私はフォーラム4のユーモアでこれを投稿しましたが、私はそれがここにもあるべきだと思います。

Expert Advisorのフライトを解析しているところ(MT5)、ログにこんなのがありました。

.....(EURUSD,H1)        16:43:16        CTrade::PositionClose:  [not enough money]
...何処で ...DCで?