오류, 버그, 질문 - 페이지 668

 

Depth of Market 에서 색상에 집중하면 혼란이 있는 것 같습니다.

//---

구매 버튼은 파란색입니다. 따라서 주문할 수 있는 가격도 파란색이어야 합니다. 이제 모든 것이 반대이며 익숙해지기 위해 노력해야하며 성공할 가능성이 낮습니다. 이것은 심리적 뉘앙스입니다. )))

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

HelpDepth of Market 에 대한 정보를 기반으로 테스트 계획은 다음과 같습니다.

 //+------------------------------------------------------------------+
//| 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;
        }
     }
//---
   //... Далее следуют функции для совершения торговых операций
  }

//---

그러나 거래 작업이 수행되면 전문가 로그에 메시지가 표시되며, 요청에 Depth of Market에서 가장 가까운 가격이 정확히 포함되어 있음을 알 수 있습니다.

price_request=mytrade.RequestPrice();

결과적으로 가격이 없습니다(0.000):

price_result=mytrade.ResultPrice();

, 그리고 거래 함수는 false 를 반환합니다.

//---

로그에서 포지션을 개설하려는 시도가 가격이 0임을 알 수 있습니다.

, 그러나 위치는 여전히 현재 가격으로 열려 있습니다.

//---

이 정보가 어느 쪽에 오류가 있는지 판단하기에 충분하지 않으면 서비스 데스크에 글을 쓰겠습니다.

 

찻주전자를 알려주세요. 보류 중인 주문을 취소하는 방법을 알려주세요.

trReq.order=주문_티켓;

trReq.type=TRADE_ACTION_REMOVE;

주문 보내기(trReq,trRez);

컴파일러는 다음을 제공합니다. TRADE_ACTION_REMOVE 는 열거형을 변환할 수 없습니다.

그리고 같은 오류에 대해 2번.

나는 또한 이전에 재설정을 시도했습니다.

trReq.symbol = 기호(); // 없는

trReq.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 커뮤니티에 로그인하지 않습니다. 터미널 설정 에 사용자 이름과 비밀번호를 입력하고 확인을 눌러도 아무 일도 일어나지 않습니다. 설정을 다시 입력하면 로그인이 저장되고 비밀번호는 비어 있습니다. 시장에서 아무것도 다운로드되지 않습니다. 문제 없이 포럼에 액세스할 수 있습니다.
 
Dima_S :

그리고 외부 매개변수로 지정될 때 문자열이 잘리는 이유는 무엇입니까?

입력 문자열 - 최대 105자까지 설정할 수 있으며, 그 이상인 경우 오른쪽이 잘립니다.

빌드 597

buid 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
....

및 전문가 로그

(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_164002 . 아직 답변이 없습니다.

//---

데모 계정은 어디에 있습니까?

 
tol64 :

페이지 맨 처음에 동일한 문제가 설명되어 있습니다. 여기: https://www.mql5.com/en/forum/1111/page679#comment_164002 . 아직 답변이 없습니다.

//---

데모 계정은 어디에 있습니까?

1. 이 글을 늦게 봤습니다.

2. A****i에서

그리고 4차 포럼에 유머글로 올렸는데 여기도 있어야 할 것 같아요.

나는 앉아서 전문가 (MT5)의 비행을 분석하고 이것이 내가 로그에서 찾은 것입니다.

.....(EURUSD,H1)         16 : 43 : 16         CTrade::PositionClose:  [ not enough money ]
... 어디 ... DC에서 ???