Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1581

 
Artyom Trishkin:

ChartIndicatorAdd()

Grazie. È solo qui che l'EA visualizza l'indicatore che non è direttamente nel grafico. Ho una domanda su come visualizzare i calcoli dell'EA stesso.

 
Andrey Sokolov:

Grazie. Solo qui, l'EA visualizza l'indicatore non direttamente nel grafico. Ho una domanda su come visualizzare i calcoli dell'EA stesso.

OBJ_LABEL

ObjectSetString - inserimento dati

ObjectGetString - ottenere dati


Come esempio, ho




 
Andrey Sokolov:

Grazie. Solo qui, l'EA visualizza l'indicatore non direttamente nel grafico. Ho una domanda su come visualizzare i calcoli dell'EA stesso.

Prendete una Tela (CCanvas) e disegnate. Traduzione di tempo e prezzo alle coordinate del grafico, usando ChartTimePriceToXY.

 
MakarFX:

In quale lasso di tempo?

М1

 

Saluti, non riesco a capire perché la selezione SELECT_BY_TICKET non funziona in questo progetto, a differenza di 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 );
} 
 
Ciao ragazzi, mi scuso se sto andando nella direzione sbagliata: Potete aiutarmi come fare un indicatore messo sul telefono in MT4, come mooving al time frame m15, non era visibile su questa coppia sul time frame di m5, o qualsiasi altro TF.
 
MakarFX, Mihail Matkovskij
grazie. Ma la mia domanda non riguarda questo. Si tratta di come disegnare dati dagli array, come dai buffer degli indicatori, se è possibile.
 
Andrey Sokolov:
ChartTimePriceToXY e hai finito. Disegna punti o linee o altre primitive, o visualizza frecce (font Windings) in base alle coordinate ottenute. CCanvasha tutti i metodiper questo. Basta creare una tela che copre tutto lo schermo e si può disegnare come si vuole. Ma allo stesso tempo devi ridisegnare costantemente Kanvas in OnChartEvent(id: CHARTEVENT_CHART_CHANGE). Tutto sommato, devi prima imparare a lavorare con CCanvas. Ma se siete nuovi alla programmazione, e siete troppo pigri per imparare tutto, allora Freelance è il vostro aiuto.
 
Galim_V:

Non riesco a capire perché in questo progetto la selezione SELECT_BY_TICKET non funziona, a differenza di SELECT_BY_POS.

PerchéSELECT_BY_TICKET seleziona l'ordine inbase al suo biglietto. E li selezionate in ordine (SELECT_BY_POS).Per selezionare gli ordini in base al biglietto, segnalate i biglietti alla funzione OrderSelect, non gli indici.

 
Mihail Matkovskij:

Con CCanvas puoi disegnare qualsiasi cosa tu voglia. Copiate il tempo(con CopyTime) e i dati dell'array (in modo che la cella nell'array del tempo corrisponda chiaramente alla cella nel vostro array di dati). Convertilo in pixel con ChartTimePriceToXY e hai finito. Disegna punti o linee o altre primitive, o visualizza frecce (font Windings) in base alle coordinate ottenute. CCanvasha tutti i metodiper questo. Basta creare una tela che copre tutto lo schermo e si può disegnare come si vuole. Ma allo stesso tempo, la tela deve essere costantemente ridisegnata in OnChartEvent(id: CHARTEVENT_CHART_CHANGE). Tutto sommato, devi prima imparare a lavorare con CCanvas. Ma se siete nuovi alla programmazione, e siete troppo pigri per imparare tutto, allora Freelance è il vostro aiuto.

grazie