Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1581

 
Artyom Trishkin:

GráficoIndicadorAdd()

Obrigado. É somente aqui que a EA exibe o indicador que não está diretamente no gráfico. Tenho uma pergunta sobre como exibir os cálculos da própria EA.

 
Andrey Sokolov:

Obrigado. Somente aqui, a EA exibe o indicador não diretamente no gráfico. Tenho uma pergunta sobre como exibir os cálculos da própria EA.

OBJ_LABEL

ObjectSetString - entrada de dados

ObjectGetString - obtenção de dados


Como exemplo, eu tenho




 
Andrey Sokolov:

Obrigado. Somente aqui, a EA exibe o indicador não diretamente no gráfico. Tenho uma pergunta sobre como exibir os cálculos da própria EA.

Pegue uma Tela (CCanvas) e desenhe. Tradução do tempo e preço para as coordenadas do gráfico, usando ChartTimePriceToXY.

 
MakarFX:

Em que período de tempo?

М1

 

Saudações, não consigo entender porque a seleção SELECT_BY_TICKET não funciona neste projeto, ao contrário do SELECT_BY_POS.

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 );
} 
 
Oi pessoal, peço desculpas se estou indo na direção errada: vocês podem me ajudar como fazer um indicador colocado no telefone em MT4, tal como mooving to time frame m15, não era visível neste par no time frame m5, ou qualquer outro TF.
 
MakarFX, Mihail Matkovskij
obrigado. Mas minha pergunta não é sobre isso. Trata-se de como extrair dados de arrays, como de buffers indicadores, se for possível.
 
Andrey Sokolov:
ChartTimePriceToXY e pronto. Desenhe pontos ou linhas ou outros primitivos, ou exiba flechas (fonte Windings) com base nas coordenadas que você obtém. CCanvastem todos os métodospara isso. Basta criar uma tela que cubra toda a tela e você pode desenhar como quiser. Mas ao mesmo tempo você tem que redesenhar constantemente Kanvas em OnChartEvent(id: CHARTEVENT_CHART_CHANGE). Em resumo, você precisa aprender como trabalhar com o CCanvas primeiro. Mas se você é novo em programação, e é muito preguiçoso para aprender tudo, então o Freelance é sua ajuda.
 
Galim_V:

Saudações! Não consigo entender porque neste projeto a seleção SELECT_BY_TICKET não funciona, ao contrário do SELECT_BY_POS.

Porque oSELECT_BY_TICKET seleciona o pedido por seu bilhete. E você os seleciona em ordem (SELECT_BY_POS).Para selecionar pedidos por bilhete, informe os bilhetes à função OrderSelect, e não os índices.

 
Mihail Matkovskij:

Com o CCanvas você pode desenhar o que quiser. Copie o tempo(com CopyTime) e a matriz de dados (para que a célula em tempo coincida claramente com a célula em sua matriz de dados). Converta-o em pixels com ChartTimePriceToXY e pronto. Desenhe pontos ou linhas ou outros primitivos, ou exiba flechas (fonte Windings) com base nas coordenadas que você obtém. CCanvastem todos os métodospara isso. Basta criar uma tela que cubra toda a tela e você pode desenhar como quiser. Mas ao mesmo tempo, a tela tem que ser constantemente redesenhada em OnChartEvent(id: CHARTEVENT_CHART_CHANGE). Em resumo, você precisa aprender como trabalhar com o CCanvas primeiro. Mas se você é novo em programação, e é muito preguiçoso para aprender tudo, então o Freelance é sua ajuda.

obrigado

Razão: