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

 
Valeriy Yastremskiy:

Non capisco, forse sto parlando della finestra sbagliata. Intendo la finestra del grafico dove ci sono le barre. Questi si muovono. Ci sono anche finestre di dialogo quando si caricano gli indicatori EA, finestre di avviso, finestre di messaggio, ma si muovono tutte. Di quale finestra stiamo parlando? La finestra di dialogo non ha niente a che fare con questo. Inoltre non ho librerie in 4

Ecco la finestra del gufo.


Voglio spostarlo sul grafico quando ne ho bisogno.

 
MakarFX:

Ecco la finestra del gufo


Questo è quello che voglio spostare sul programma quando ne ho bisogno.

Non è una finestra, è un pannello. Puoi spostarlo, non posso nemmeno dirti il codice. Ho bisogno del codice e di ridisegnarlo in generale. Ho bisogno di trovare dove il pannello è disegnato e le coordinate sono specificate - poi, usando gli eventi, clicco per spostarlo, cancellarlo e disegnarne uno nuovo. Come questo. Ma non sono affatto un disegnatore.

 
Valeriy Yastremskiy:

Quando si cancella nell'EA, non è necessario pulire il commento, ma nell'indicatore sì. È progettato in questo modo?

Un programmatore adeguato scriverebbe almeno

void OnDeinit(const int reason)
{
     Comment( "" );
}
Se i commenti sono stati usati, li pulirà da solo. E molti principianti non ci fanno caso. Questo è il segreto.
 
Salve.
Potete dirmi (formula) come calcolare il prezzo per un certo livello (tenendo conto delle posizioni aperte)? Per calcolare a quale prezzo ci sarà una margin call e stop out.
 
Konstantin Nikitin:

Un programmatore adeguato scriverebbe almeno

Se i commenti sono stati usati, li pulirà da solo. E molti principianti non prestano attenzione a questo. Questo è il segreto.

Questo è quello che ho scritto, e l'ho scritto sopra). La domanda era perché il diverso comportamento negli EA e negli indicatori. C'è un significato nascosto o si è sviluppato storicamente da diversi team di scrittura)

 
Konstantin Nikitin:

Un programmatore adeguato scriverà almeno

Se i commenti sono stati usati, li pulirà da solo. E molti principianti non prestano attenzione a questo. Questo è tutto il segreto.
In realtà, non ci sono requisiti generali ovvi su questo.
 
Andrey Sokolov:
In realtà, non ci sono requisiti generali espliciti su questo.

Ho parlato del requisito? Ho solo detto che alcuni tengono conto di questo punto e altri no.

 
Konstantin Nikitin:

Ho parlato del requisito? Ho solo detto che alcuni considerano il punto e altri no.

Non così.

 

La libreriaEASY AND FAST https://www.mql5.com/ru/articles/3527 implementa la possibilità di avviare una finestra di programma in una sottofinestra dell'indicatore caricando il file "SubWindow.mq5", in mql5 funziona tutto, in mql4 anche il contenuto viene compilato senza errori, ma la sottofinestra non si apre, cosa si può fare?


//+------------------------------------------------------------------+
//|                                                    SubWindow.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property indicator_separate_window
#property indicator_plots   0
#property indicator_buffers 0
#property indicator_minimum 0.0
#property indicator_maximum 0.0
//--- Имя программы
#define  PROGRAM_NAME ::MQLInfoString(MQL_PROGRAM_NAME)
//--- Идентификатор события для изменения высоты подокна эксперта
#define  ON_SUBWINDOW_CHANGE_HEIGHT (38)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- Короткое имя индикатора
   ::IndicatorSetString(INDICATOR_SHORTNAME,PROGRAM_NAME);
//--- Инициализация прошла успешно
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Деинициализация                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total,
                const int    prev_calculated,
                const int    begin,
                const double &price[])
  {
//--- Если инициализация прошла успешно
   if(prev_calculated<1)
      //--- Отправим сообщение эксперту, чтобы получить от него размер для подокна
      ::EventChartCustom(0,ON_SUBWINDOW_CHANGE_HEIGHT,0,0.0,PROGRAM_NAME);
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int    id,
                  const long   &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- Обработка события изменения высоты подокна эксперта
   if(id==CHARTEVENT_CUSTOM+ON_SUBWINDOW_CHANGE_HEIGHT)
     {
      //--- Принимать сообщения только от имени эксперта
      if(sparam==PROGRAM_NAME)
         return;
      //--- Изменить высоту подокна
      ::IndicatorSetInteger(INDICATOR_HEIGHT,(int)lparam);
      //--- Обновить график
      ::ChartRedraw();
     }
  }
//+------------------------------------------------------------------+
 

Ciao a tutti!

Sto cercando di allegare un controllo del conto a (qualsiasi) indicatore!

bool VerifityToSchet()
  {
   if(AccountNumber() != account)
     {
      Print("На данном счете индикатор работать не будет, вы его приобрели незаконным путем!!!");   
     }else
     {
     Print("На данном счете индикатор авторизован");
     }
   return(false);
  } 

L'ho abilitato in init() e start() ovviamente, ma quando riavvio il terminale, dice che l'account non è valido!

Cosa sto facendo di sbagliato?