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

 
MakarFX #:

In modo che tu possa scriverti un promemoria - qual è la funzione

:))) come se non potessi farlo da solo quando ne ho bisogno: inserire due slash e scrivere un paio di parole. Hai provato a scrivere qualcosa in quella cornice? Quella barra in avanti a destra andrà a destra del numero di caratteri che hai digitato, ma cosa succede se hai bisogno di scrivere più di una riga? Invece di fare qualcosa, devo perdere tempo a disegnare cornici. È solo che l'ide impone una sorta di visione malata di come dovrebbe essere.

 
Nerd Trader #:

:))) come se non potessi farlo da solo quando ne ho bisogno: inserire due slash e scrivere un paio di parole. Hai provato a scrivere qualcosa in quella cornice? Quella barra in avanti a destra andrà a destra del numero di caratteri che hai digitato, ma cosa succede se hai bisogno di scrivere più di una riga? Invece di fare qualcosa, devo perdere tempo a disegnare cornici. Sto solo imponendo una visione malata di come dovrebbe essere.

Metti due slash davanti alla funzione e sei a posto.

//
int OnCalculate (const int rates_total,
                 const int prev_calculated,
                 const datetime& time[],
                 const double& open[],
                 const double& high[],
 
MakarFX #:

Metti due slash davanti alla funzione e sei a posto

Ho già scritto sopra che se c'è una linea vuota tra il commento e la funzione, verrà inserita una cornice.
 

Quando il pulsante viene cliccato, viene creata una linea orizzontale. Vengono ricreati con un colore diverso a seconda della posizione del cursore rispetto al prezzo. Il problema è: le linee gialle e grigie tremolano e si creano costantemente (il verde è OK) quando il cursore è nella posizione appropriata lontano dal prezzo. Un codice simile cambiando solo la proprietà del colore della linea, non ricreandola, funziona correttamente.

Il logico NOT qui è al suo posto, cioè invece di scrivere == 0.

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
  ...
  ...
  ...
  if(ObjectGetInteger(0,"Button Stop Order",OBJPROP_STATE)){
    int x = (int)lparam;
    int y = (int)dparam;
    //Переведём координаты X, Y в дату и время
    if(ChartXYToTimePrice(0,x,y,window,dt,price)){
      //Линия меняет цвет с зелёного на желтый
      if(price < Bid){
        if(!ObjectFind("Buy Stop") || !ObjectFind("not allowed")){
          ObjectDelete(line_name);
          line_name = "Sell Stop";
          CreateLine(line_name, clrYellow);
        }      
      }
      //Линия меняет цвет с желтого на зелёный
      if(price > Ask){
        if(!ObjectFind("Sell Stop") || !ObjectFind("not allowed")){
          ObjectDelete(line_name);
          line_name = "Buy Stop";
          CreateLine(line_name, clrGreen);
        }
      }
      //Линия меняет цвет на серый если в зоне спреда
      if(price > Bid && price < Ask){
        if(!ObjectFind("Buy Stop") || !ObjectFind("Sell Stop")){
          ObjectDelete(line_name);
          line_name = "not allowed";
          CreateLine(line_name, clrGray);
        }
      }
      //Прикрепляем линию к курсору
      if(id == CHARTEVENT_MOUSE_MOVE)
        if(ObjectMove(0,line_name,0,0,price))
          ChartRedraw(0);
    }
  }else if(ObjectFind(line_name) == window) Print(ObjectDelete(line_name));
 
Nerd Trader una linea orizzontale. Sono ricreati in un colore diverso a seconda della posizione del cursore rispetto al prezzo. Il problema è: le linee gialle e grigie sono tremolanti e si creano costantemente (il verde è OK) quando il cursore è nella posizione appropriata dal prezzo. Un codice simile cambiando solo la proprietà del colore della linea, non ricreandola, funziona correttamente.

Il logico NOT qui è al suo posto, cioè invece di scrivere == 0.

ObjectFind è un int, non un bool
 
Nerd Trader #:

Perché mi fa veramente incazzare quando si decide di passare a un ambiente nativo di mql4 ed ecco che si va via! Volete una cornice? E lo venderemo comunque.

Devi usare il metodo di Makar per ottenere ciò che vuoi.

MakarFX #:

Non conoscevo gli stili, quindi li ho formattati nel modo in cui volevo leggerli.

 
MakarFX #:
ObjectFind è un int, non un bool
in questo caso non c'è differenza "!" o "==0"
 
Nerd Trader #:
in questo caso non c'è differenza "!" o "==0"

C'è una differenza!!!

      if(!ObjectFind("Buy Stop"))Print("All right Христофор Бонифатич!");
      else Print("Something is wrong!");
      if(ObjectFind("Buy Stop")!=0)Print("All right Христофор Бонифатич");
 
Nerd Trader #:
in questo caso non c'è differenza "!" o "==0"
if(!ObjectFind("Buy Stop"))

Questa domanda fa così:

Vasily Ivanovich Chapayev e Petka stanno volando in un aereo, e improvvisamente Vasily Ivanovich, seduto al volante, grida:

"Petya, gli strumenti!"

Petya risponde: "Trentotto".

Vasily Ivanovich: "Trentotto cosa?"

Petya: "E gli strumenti?"

 
MakarFX #:

Questa richiesta si presenta così:

No Makar, sembra così:

La funzione ObjectFind() restituisce il numero della finestra principale. E questo numero è 0. D'altra parte, 0 == falso, quindi ne consegue che se la funzione restituisce 0, restituisce comunque falso. Naturalmente, non lo userei perché se la funzione restituisce -1, cioè un errore, potremmo considerare la posizione dell'oggetto non nella finestra principale. Oltre a questo, non si sa mai quali correzioni saranno fatte...

In generale, non discutere e non imparare a farlo ...