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

 
Roman # :

Forex에는 최종 가격이 없습니다.
아마도 그런 쓰레기 일 것입니다))

그리고 해결책은 이것입니다.
차트 표시의 모든 속성을 원하는 대로 설정하고 템플릿에 default.tpl로 저장합니다.

그것을하는 방법?

이 마지막 가격 라인이 추가 된 이유가 전혀 이해되지 않습니다. 실용적인 의미에서 의미가 없습니다.

 
user4321 # :

그것을하는 방법?

차트의 RMB -> 템플릿 -> 템플릿 저장
파일명: default.tpl

 
어떤 경우에는(패턴을 찾지 못함) 사용하지 않는 선언된 변수로 코드를 컴파일할 때 MetaEditor5 는 미사용에 대해 경고하지 않습니다.
 

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

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

브루클린 씨 , 2022.02.25 07:15

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

오늘 나는 이해할 수 없지만 이미 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 ]
친애하는 전문가 여러분, 이 예제를 이해하는 데 도움을 주십시오. 디렉토리에 있는데 코드가 작동하지 않는 이유는 무엇입니까?

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

 
안녕하세요. 카드 로 보증금을 인출하는 방법을 알려주세요.
 
801765632 # :
안녕하세요. 카드 로 보증금을 인출하는 방법을 알려주세요.

거래 플랫폼 개발자의 웹사이트입니다. 이것은 브로커가 아니며 DC가 아니며 실제 거래 계정이 없습니다.

페이지 하단에는 다음과 같이 명확하게 표시되어 있습니다 .


귀하의 거래 계좌로 돈을 이체한 대상 중개인에게 그러한 질문을 하십시오.

 
801765632 # :
안녕하세요. 카드 로 보증금을 인출하는 방법을 알려주세요.
라이브 거래 계좌를 개설한 브로커에게 문의하십시오.
 

친애하는 개발자 여러분! 과부하(T* const Ptr)가 두 번째 및 세 번째 호출에서 수행되고(T* & Ptr) 수행되지 않는 이유는 무엇입니까?

이것은 버그입니까 기능입니까? b3213.


 template < typename T>
void f1(T* const Ptr) { Print ( __FUNCSIG__ );}

template < typename T>
void f1(T* & Ptr) { Print ( __FUNCSIG__ );}


class X {};

void OnStart ()
  {
   const X* Ptr = new X;

   f1(Ptr);                                 //void f1<const X>(const X*&)
   f1((X*)Ptr);                             //void f1<X>(X*const)
   f1(( const X*) Ptr);                     //void func_902::f1<const X>(const X*const)

   delete Ptr;
  }
 
Roman # :

차트의 RMB -> 템플릿 -> 템플릿 저장
파일명: default.tpl

이 템플릿은 기본적으로 사용 가능합니다. 나는 그것을 교체했다. 도움이 되지 않았습니다. 전환하거나 전환할 때 모든 것이 동일하게 유지되었습니다.

개발자로서 글을 쓸 줄 아세요? 확실히 그들은 이미 이것에 대해 수백 번 통보를 받았습니다. 글쎄, 나는 다시 쓸 것입니다.

 

스크롤할 때 신호의 캡이