Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1581

 
Artyom Trishkin:

ChartIndicatorAdd()

Merci. C'est seulement ici que l'EA affiche l'indicateur qui n'est pas directement dans le graphique. J'ai une question sur la façon d'afficher les calculs de l'EA lui-même.

 
Andrey Sokolov:

Merci. Seulement ici, l'EA affiche l'indicateur pas directement dans le graphique. J'ai une question : comment afficher les calculs de l'EA lui-même ?

OBJ_LABEL

ObjectSetString - saisie de données

ObjectGetString - obtention de données


À titre d'exemple, j'ai




 
Andrey Sokolov:

Merci. Seulement ici, l'EA affiche l'indicateur pas directement dans le graphique. J'ai une question sur la façon d'afficher les calculs de l'EA lui-même.

Prenez un Canvas (CCanvas) et dessinez. Traduction de l'heure et du prix en coordonnées graphiques, en utilisant ChartTimePriceToXY.

 
MakarFX:

Sur quelle échelle de temps ?

М1

 

Bonjour, je n'arrive pas à comprendre pourquoi la sélection SELECT_BY_TICKET ne fonctionne pas dans ce modèle, contrairement à 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 );
} 
 
Salut les gars, je m'excuse si je vais dans la mauvaise direction : Pouvez-vous m'aider à faire un indicateur mis sur le téléphone dans MT4, comme le déplacement vers le cadre temporel m15, n'était pas visible sur cette paire sur le cadre temporel de m5, ou tout autre TF.
 
MakarFX, Mihail Matkovskij
merci. Mais ma question ne porte pas sur ce point. Il s'agit de savoir comment tirer des données des tableaux, comme des tampons d'indicateurs, si c'est possible.
 
Andrey Sokolov:
ChartTimePriceToXY et vous avez terminé. Dessinez des points, des lignes ou d'autres primitives, ou affichez des flèches (police Windings) en fonction des coordonnées obtenues. CCanvaspossède toutes les méthodespour cela. Il suffit de créer une toile qui couvre tout l'écran et vous pouvez dessiner comme bon vous semble. Mais en même temps, vous devez constamment redessiner Kanvas dans OnChartEvent(id : CHARTEVENT_CHART_CHANGE). En somme, vous devez d'abord apprendre à travailler avec CCanvas. Mais si vous êtes novice en matière de programmation, et que vous êtes trop paresseux pour tout apprendre, alors Freelance est votre aide.
 
Galim_V:

Bonjour, je n'arrive pas à comprendre pourquoi, dans ce modèle, la sélection SELECT_BY_TICKET ne fonctionne pas, contrairement à SELECT_BY_POS.

Parce queSELECT_BY_TICKET sélectionne la commande par son ticket. Et vous les sélectionnez dans l'ordre (SELECT_BY_POS).Pour sélectionner les commandes par ticket, rapportez les tickets à la fonction OrderSelect, et non les index.

 
Mihail Matkovskij:

Avec CCanvas, vous pouvez dessiner tout ce que vous voulez. Copiez le temps (avec CopyTime) et les données du tableau (de sorte que la cellule du tableau de temps corresponde clairement à la cellule de votre tableau de données). Convertissez-le en pixels avec ChartTimePriceToXY et vous avez terminé. Dessinez des points, des lignes ou d'autres primitives, ou affichez des flèches (police Windings) en fonction des coordonnées obtenues. CCanvaspossède toutes les méthodespour cela. Il suffit de créer une toile qui couvre tout l'écran et vous pouvez dessiner comme bon vous semble. Mais en même temps, le canevas doit être constamment redessiné dans OnChartEvent(id : CHARTEVENT_CHART_CHANGE). En somme, vous devez d'abord apprendre à travailler avec CCanvas. Mais si vous êtes novice en matière de programmation, et que vous êtes trop paresseux pour tout apprendre, alors Freelance est votre aide.

merci

Raison: