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

 
Artyom Trishkin :

차트 표시기 추가()

감사해요. 여기서만 EA는 차트에 직접 기록되지 않은 지표를 표시합니다. EA 자체의 계산을 표시하는 방법에 대해 질문이 있습니다.

 
Andrey Sokolov :

감사해요. 여기서만 EA는 차트에 직접 기록되지 않은 지표를 표시합니다. EA 자체의 계산을 표시하는 방법에 대해 질문이 있습니다.

OBJ_LABEL

ObjectSetString - 데이터 입력

ObjectGetString - 데이터 가져오기


저를 위한 예시로




 
Andrey Sokolov :

감사해요. 여기서만 EA는 차트에 직접 기록되지 않은 지표를 표시합니다. EA 자체의 계산을 표시하는 방법에 대해 질문이 있습니다.

Canvas(CCanvas)를 가져와서 그립니다. ChartTimePriceToXY 를 사용하여 시간과 가격을 차트 좌표로 변환합니다.

 
MakarFX :

몇시에?

M1

 

인사말! 그러한 구성에서 SELECT_BY_POS와 달리 SELECT_BY_TICKET에 의한 선택이 작동하지 않는 이유를 이해할 수 없습니다.

 void Ticket_Limits ( int magic ){


int _GetLastError = 0 , k = OrdersTotal ();
        Ticket_Total = 0 ;
        
// изменяем размеры массивов под текущее кол-во позиций
         // (если _OrdersTotal = 0, меняем размер массивов на 1)
         int temp_value = MathMax ( k, 1 );
         ArrayResize ( _Tacket,                   temp_value );
         ArrayResize ( _Type,                        temp_value );
         ArrayResize ( _OpenPrice,                temp_value );   
         // обнуляем массивы
         ArrayInitialize ( _Tacket,               0 );
         ArrayInitialize ( _Type,                 0 );
         ArrayInitialize ( _OpenPrice,     0 );
        
         for ( int z = k- 1 ;z>= 0 ; z -- )
        {

           Print ( "z =" ,z);
                 if (! OrderSelect ( z, SELECT_BY_POS ))
                {
                        _GetLastError = GetLastError ();
                         Print ( "OrderSelect( " , z, ", SELECT_BY_TICKET  ) - Error #" , _GetLastError );
                         continue ;
                }
                 if ( OrderMagicNumber() == magic && OrderSymbol() == Symbol () )
                {
                         // заполняем массивы
                        _Tacket               [Ticket_Total] = OrderTicket();
                        _Type                         [Ticket_Total] = OrderType();
                        _OpenPrice                      [Ticket_Total] = NormalizeDouble ( OrderOpenPrice(), _Digits );
                        Ticket_Total++;
                         Print ( "_Tacket === " ,_Tacket[z], " _Type === " ,_Type[z], " _OpenPrice === " ,_OpenPrice[z]);
                }
          
        }               
         // изменяем размеры массивов под кол-во позиций, принадлежащих эксперту
         // (если Ticket_Total = 0, меняем размер массивов на 1)
        temp_value = MathMax ( Ticket_Total, 1 );
         ArrayResize ( _Tacket,                   temp_value );
         ArrayResize ( _Type,                        temp_value );
         ArrayResize ( _OpenPrice,                temp_value );
} 
 
안녕하세요 여러분! 내가 주제를 다루는 경우 사과드립니다: 도움말, MT4에서 전화로 칠면조를 던지는 방법, 예를 들어 이동 평균, m15 시간 프레임이 m5 시간 프레임 또는 에 동일한 쌍에서 보이지 않았습니다. 다른 모든 TF.
 
마카르FX _
감사해요. 그러나 질문은 그것에 관한 것이 아닙니다. 그리고 EA가 가능한 경우 객체가 되지 않도록 어떻게든 표시기 버퍼에서 배열에서 데이터를 가져오는 방법에 대해 설명합니다.
 
Andrey Sokolov :
ChartTimePriceToXY 를 사용하여 픽셀로 변환하면 됩니다. 수신된 좌표에 따라 최소한 점, 최소한 선, 최소한 다른 프리미티브, 최소한 화살표(Windings 글꼴)를 그립니다. CCanvas 에는 이를 위한 모든 방법이 있습니다. 캔버스를 전체 화면으로 만드는 것으로 충분하고 무엇이든 그릴 수 있으며 완전한 행동의 자유가 있습니다. 그러나 동시에 OnChartEvent (id: CHARTEVENT_CHART_CHANGE)에서 Canvas를 지속적으로 다시 그려야 합니다. 일반적으로 먼저 CCanvas로 작업하는 방법을 배워야 합니다. 그러나 프로그래밍이 처음이고 이 모든 것을 배우기에는 너무 게으르다면 Freelance가 도움이 될 것입니다.
 
Galim_V :

인사말! 그러한 구성에서 SELECT_BY_POS와 달리 SELECT_BY_TICKET에 의한 선택이 작동하지 않는 이유를 이해할 수 없습니다.

SELECT_BY_TICKET은 티켓 으로 주문을 선택하기 때문입니다. 그리고 순서대로 선택합니다( SELECT_BY_POS ). 티켓으로 주문을 선택하려면 인덱스가 아닌 OrderSelect 함수 에 티켓을 보고하세요.

 
Mihail Matkovskij :

씨캔버스로 무엇이든 그릴 수 있습니다. 시간 (CopyTime 사용) 및 배열 데이터(시간 배열의 셀이 데이터 배열의 셀과 정확히 일치하도록)를 복사합니다 . ChartTimePriceToXY 를 사용하여 픽셀로 변환하면 됩니다. 수신된 좌표에 따라 최소한 점, 최소한 선, 최소한 다른 프리미티브, 최소한 화살표(Windings 글꼴)를 그립니다. CCanvas 에는 이를 위한 모든 방법이 있습니다. 캔버스를 전체 화면으로 만드는 것으로 충분하고 무엇이든 그릴 수 있으며 완전한 행동의 자유가 있습니다. 그러나 동시에 OnChartEvent (id: CHARTEVENT_CHART_CHANGE)에서 Canvas를 지속적으로 다시 그려야 합니다. 일반적으로 먼저 CCanvas로 작업하는 방법을 배워야 합니다. 그러나 프로그래밍이 처음이고 이 모든 것을 배우기에는 너무 게으르다면 Freelance가 도움이 될 것입니다.

감사해요