MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1919

 
MrBrooklin # :

귀하의 응답에 대해 Sergey에게 감사드립니다! 당신의 대답은 나를 더욱 어리둥절하게 했습니다. 어때요? 스크립트가 실행되면 보류 중인 모든 주문이 폴링됩니다. 사진을 보면 차트에 두 개가 있는 것을 알 수 있는데, 동시에 한 장의 티켓은 선택된 것으로 나타났고, 다른 한 장은 선택되지 않은 것으로 밝혀졌죠? 명확하지 않습니다.

조금 더 설명해주실 수 있나요?

쓸데없는 호기심이 아니라 독학을 계속하기 위해 질문합니다.

안부 인사를 전합니다. 블라디미르.

여기에 반복자 i를 최대 인덱스에서 0으로 변경하는 루프가 있습니다. 내부에서는 어떤 일이 발생합니까? 그리고 여기 문제가 있습니다. 첫 번째 명령으로 ORDER_SYMBOL 매개변수를 얻으려고 합니다. 그런데 아래 세 줄로 주문이 선택되기 때문에 어떤 주문에서 가져오려고 하십니까?
 
Sergey Gridnev # :
여기에 반복자 i를 최대 인덱스에서 0으로 변경하는 루프가 있습니다. 내부에서는 어떤 일이 발생합니까? 그리고 여기 문제가 있습니다. 첫 번째 명령으로 ORDER_SYMBOL 매개변수를 얻으려고 합니다. 그런데 아래 세 줄로 주문이 선택되기 때문에 어떤 주문에서 가져오려고 하십니까?

Sergey, 매우 자세하고 이해하기 쉬운 설명에 감사드립니다! 나는 주기가 시작된 직후에 보류 중인 주문 티켓으로 줄을 섰고 모든 것이 잘 되었습니다.

예-아-아 ... 마음챙김과 다시 한 번 주의. 내가 놓치고 있는 것이 바로 그것이다. 다시 감사합니다!

안부 인사를 전합니다. 블라디미르.

 

좋은 아침입니다 친애하는 전문가 여러분!

오늘 나는 이해할 수 없지만 이미 MQL5 참조에서 완전히 가져온 코드에서 두 번 더 만났습니다. 이번에는 아무 것도 쓰지 않고 기성품의 예만 들었습니다.

MQL5 참조 / 상수, 열거 및 구조 / 데이터 구조 / 거래 요청 구조 를 엽니다. 거기에서 나는 다음을 발견합니다.

거래 요청 구조
 Modify Pending Order
Торговый приказ на модификацию уровней цен отложенного ордера. Требуется указание 7 полей:
    action
    order
    price
    sl
    tp
    type_time
    expiration
 Пример торговой операции TRADE_ACTION_MODIFY для модификации уровней цен отложенного ордера:

이것은 분명합니다. 그리고 다음 코드가 있는 예가 있습니다.

 #define EXPERT_MAGIC 123456    // MagicNumber эксперта
//+------------------------------------------------------------------+
//| Модификация отложенных ордеров                                   |
//+------------------------------------------------------------------+
void OnStart ()
  {
//-- объявление и инициализация запроса и результата
   MqlTradeRequest request={};
   MqlTradeResult   result={};
   int total= OrdersTotal (); // количество установленных отложенных ордеров
//--- перебор всех установленных отложенных ордеров
   for ( int i= 0 ; i<total; i++)
     {
       //--- параметры ордера
       ulong   order_ticket= OrderGetTicket (i);                             // тикет ордера
       string order_symbol= Symbol ();                                       // символ
       int     digits=( int ) SymbolInfoInteger (order_symbol, SYMBOL_DIGITS );   // количество знаков после запятой
       ulong   magic= OrderGetInteger ( ORDER_MAGIC );                         // MagicNumber ордера
       double volume= OrderGetDouble ( ORDER_VOLUME_CURRENT );                 // текущий объем ордера
       double sl= OrderGetDouble ( ORDER_SL );                                 // текущий Stop Loss ордера
       double tp= OrderGetDouble ( ORDER_TP );                                 // текущий Take Profit ордера
       ENUM_ORDER_TYPE type=( ENUM_ORDER_TYPE ) OrderGetInteger ( ORDER_TYPE ); // тип ордера
       int offset = 50 ;                                                   // отступ от текущей цены для установки ордера, в пунктах
       double price;                                                       // цена срабатывания ордера
       double point= SymbolInfoDouble (order_symbol, SYMBOL_POINT );           // размер пункта
       //--- вывод информации об ордере
       PrintFormat ( "#%I64u %s  %s  %.2f  %s  sl: %s  tp: %s  [%I64d]" ,
                  order_ticket,
                  order_symbol,
                   EnumToString (type),
                  volume,
                   DoubleToString ( PositionGetDouble ( POSITION_PRICE_OPEN ),digits),
                   DoubleToString (sl,digits),
                   DoubleToString (tp,digits),
                  magic);
       //--- если MagicNumber совпадает, Stop Loss и Take Profit не заданы
       if (magic==EXPERT_MAGIC && sl== 0 && tp== 0 )
        {
         request.action= TRADE_ACTION_MODIFY ;                           // тип торговой операции
         request.order = OrderGetTicket (i);                             // тикет ордера
         request.symbol   = Symbol ();                                   // символ
         request.deviation= 5 ;                                           // допустимое отклонение от цены
         //--- установка уровня цены, тейк-профит и стоп-лосс ордера в зависимости от его типа
         if (type== ORDER_TYPE_BUY_LIMIT )
           {
            price = SymbolInfoDouble ( Symbol (), SYMBOL_ASK )-offset*point; 
            request.tp = NormalizeDouble (price+offset*point,digits);
            request.sl = NormalizeDouble (price-offset*point,digits);
            request.price    = NormalizeDouble (price,digits);                 // нормализованная цена открытия
           }
         else if (type== ORDER_TYPE_SELL_LIMIT )
           {
           price = SymbolInfoDouble ( Symbol (), SYMBOL_BID )+offset*point; 
            request.tp = NormalizeDouble (price-offset*point,digits);
            request.sl = NormalizeDouble (price+offset*point,digits);
            request.price    = NormalizeDouble (price,digits);                 // нормализованная цена открытия
           }
         else if (type== ORDER_TYPE_BUY_STOP )
           {
           price = SymbolInfoDouble ( Symbol (), SYMBOL_ASK )+offset*point; 
            request.tp = NormalizeDouble (price+offset*point,digits);
            request.sl = NormalizeDouble (price-offset*point,digits);
            request.price    = NormalizeDouble (price,digits);                 // нормализованная цена открытия
           }
         else if (type== ORDER_TYPE_SELL_STOP )
           {
           price = SymbolInfoDouble ( Symbol (), SYMBOL_BID )-offset*point; 
            request.tp = NormalizeDouble (price-offset*point,digits);
            request.sl = NormalizeDouble (price+offset*point,digits);
            request.price    = NormalizeDouble (price,digits);                 // нормализованная цена открытия
           }
         //--- отправка запроса
         if (! OrderSend (request,result))
             PrintFormat ( "OrderSend error %d" , GetLastError ());   // если отправить запрос не удалось, вывести код ошибки
         //--- информация об операции   
         PrintFormat ( "retcode=%u  deal=%I64u  order=%I64u" ,result.retcode,result.deal,result.order);
         //--- обнуление значений запроса и результата
         ZeroMemory (request);
         ZeroMemory (result);
        }
     }
  }
//+------------------------------------------------------------------+

노란색으로 강조 표시된 선을 이해하려고 합니다. 질문이 즉시 제기 되었습니다. 예가 보류 중인 주문과 관련된 경우 PositionGetDouble ( POSITION_PRICE_OPEN )이 그것과 무슨 관련이 있습니까? 아마도 다음과 같은 줄이 있어야 합니다.

 DoubleToString ( OrderGetDouble ( ORDER_PRICE_OPEN ),digits)
이것이 첫 번째 순간입니다. 두 번째 순간은 내가 BUY_STOP 보류 주문을 설정한 차트에서 이 스크립트를 실행하려고 했을 때였습니다(비록 다른 유형의 보류 주문에서도 같은 일이 발생하지만). 그리고 무슨 일이? 그러나 아무 일도 일어나지 않습니다! 보류 중인 주문의 수정 사항이 표시되지 않습니다. 내가 뭔가를 이해하지 못하는 건 아닐까?

전문가 탭에서는 다음 항목만 찾습니다.
 2022.02 . 25 08 : 41 : 38.491 4 (EURUSD,M1)   # 4727791 EURUSD   ORDER_TYPE_BUY_STOP    0.10    0.00000   sl: 0.00000   tp: 0.00000   [ 0 ]
친애하는 전문가 여러분, 이 예제를 이해하는 데 도움을 주십시오. 디렉토리에 있는데 코드가 작동하지 않는 이유는 무엇입니까?

안부 인사를 전합니다. 블라디미르.
 
MrBrooklin # :

친애하는 전문가 여러분, 이 예제를 이해하는 데 도움을 주십시오. 디렉토리에 있는데 코드가 작동하지 않는 이유는 무엇입니까?

안부 인사를 전합니다. 블라디미르.

몇 페이지 전에 이미 이에 대해 썼습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론

알렉세이 빅토 로프 , 2022.02.20 10:24

사샤, 문서의 예나 어린 양의 예를 사용하는 것보다 더 나쁜 것은 생각할 수 없습니다 . 게다가 어딘가에서 while 루프의 강제 종료 플래그를 잃어버렸습니다. 일반적으로 ... 단어가 없습니다.
문서와 표준 라이브러리에 작성된 예제가 주의 깊게 확인되었는지 의심됩니다. 그런 오류가 많이 있습니다. 내 생각에 예는 예로서만 사용할 수 있습니다 ...
 
Alexey Viktorov # :

몇 페이지 전에 이미 이에 대해 썼습니다.

문서와 표준 라이브러리에 작성된 예제가 주의 깊게 확인되었는지 의심됩니다. 그런 오류가 많이 있습니다. 내 생각에 예는 예로서만 사용할 수 있습니다 ...

안녕하세요 알렉세이입니다!

그런 진지한 회사가 디렉토리에 대해 진지하지 않은 태도를 가지고 있다는 것은 매우 슬픈 일입니다.

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin # :

안녕하세요 알렉세이입니다!

그런 진지한 회사가 디렉토리에 대해 진지하지 않은 태도를 가지고 있다는 것은 매우 슬픈 일입니다.

안부 인사를 전합니다. 블라디미르.

이 예에는 또 다른 오류가 있습니다. 아니면 완전히 눈이 멀거나...

나열된 필수 필드 중 만료가 있지만 예제 코드에서는 만료가 할당된 위치가 표시되지 않습니다. 대신 가격에서 허용 가능한 편차가 할당됩니다.

 
Alexey Viktorov # :

이 예에는 또 다른 오류가 있습니다. 아니면 완전히 눈이 멀거나...

나열된 필수 필드 중 만료가 있지만 예제 코드에서는 만료가 할당된 위치가 표시되지 않습니다. 대신 가격에서 허용 가능한 편차가 할당됩니다.

또한 만료 (만료 시간) 외에도 다음이 있어야 합니다.

type_time - тип истечения

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin # :

또한 만료 (만료 시간) 외에도 다음이 있어야 합니다.

안부 인사를 전합니다. 블라디미르.

나는 중재자와 동시에 이 스레드의 주최자인 Artyom Trishkin에게 호소합니다!

MQL5 참조와 관련된 모든 질문을 MQL로 보낼 수 있습니까?

어렵지 않다면 최소한 이 페이지 는 업데이트할 수 있습니까?

안부 인사를 전합니다. 블라디미르.
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Типы торговых операций - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
MrBrooklin # :

나는 중재자와 동시에 이 스레드의 주최자인 Artyom Trishkin에게 호소합니다!

MQL5 참조와 관련된 모든 질문을 MQL로 보낼 수 있습니까?

어렵지 않다면 최소한 이 페이지 는 업데이트할 수 있습니까?

안부 인사를 전합니다. 블라디미르.

이 스레드에서 보고할 수도 있습니다.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2022.02.24
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Alexey Viktorov # :

이 스레드에서 보고할 수도 있습니다.

팁 감사합니다, Alex! 먼저 이 스레드에서 답변을 기다리겠습니다. 하지만 침묵이 흐른다면 오류, 버그, 질문 주제로 넘어가겠습니다.

안부 인사를 전합니다. 블라디미르.