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

 
Oleg Remizov:

E secondo le mie osservazioni, agli utenti piace quando l'Expert Advisor mostra varie informazioni sullo schermo: disegna frecce, linee, canali e altre cose per mostrare la vigorosa attività dell'"intelligenza artificiale").

Secondo gli indicatori, l'Expert Advisor fornisce il trailing. Voglio visualizzare questo processo in modo che un utente possa vedere la linea tratteggiata con StopLoss.

Usate una linea di tendenza, il primo punto di ancoraggio è la barra corrente e il secondo è 1 barra nella storia, mettete lo spessore di 2-3

 
Vitaly Muzichenko:

Utilizzare una linea di tendenza, primo punto di ancoraggio barra corrente e secondo 1 barra nella storia, mettere lo spessore a 2-3

Grande idea! Grazie mille, sembra giusto.

trending

 
ANDREY:

Ecco cosa dice il libro di testo di Kovalev sull'inizializzazione di un array nel momento stesso in cui viene dichiarato

8.4.4 Inizializzazione delle matrici

Un array può essere inizializzato solo con costanti del tipo appropriato. Gli array monodimensionali e multidimensionali sono inizializzati con una sequenza unidimensionale di costanti elencate separate da virgole. La sequenza è racchiusa tra parentesi graffe:

int Mas_i[3][4] = { 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23 }

double Mas_d[2][3] = { 0.1, 0.2, -0.3, -10.2, 1.5, 7.0 };

bool Mas_b[5] = { false, true, false, true, true }

Una o più costanti possono essere saltate nella sequenza di inizializzazione.

Dal libro di testo mi sembra che quando viene dichiarato un array, l'intero array viene inizializzato con tutti i dati, non solo il primo elemento dell'array.
Se ho frainteso il libro di testo, vi sarei grato se poteste indicarmi cosa ho frainteso.

Non ho il minimo desiderio di discutere il tuo libro di testo, non l'ho letto

e ha scritto qui sul forum che il libro di testo è superato e irrilevante.

un array bidimensionale può essere inizializzato in questo modo:

int arr[2][5] = {{1, 2, 3, 4, 5,}, {6, 7, 8, 9, 10}};
 
Igor Makanu:

Non ho il minimo desiderio di discutere il tuo libro di testo, non l'ho letto

e hanno scritto qui sul forum che il libro di testo è superato e irrilevante.

Un array bidimensionale può essere inizializzato in questo modo:

Grazie mille per il vostro aiuto. Avete indovinato direttamente i miei pensieri. Sono solo perplesso su come inizializzare un array bidimensionale.....ma solo per mezzo della funzioneArrayInitialize();
Il manuale di questa funzione dà informazioni sull'inizializzazione solo di un array unidimensionale, come mi sembrava.
Le sarò molto grato se me lo dirà.

 
ANDREY:

Grazie mille per il vostro aiuto. Avete indovinato direttamente i miei pensieri. Sono solo perplesso su come inizializzare un array bidimensionale.....ma solo per mezzo della funzione ArrayInitialize ();
Nel riferimento su questa funzione l'informazione sull'inizializzazione solo di un array unidimensionale è data, come mi sembrava.
Le sarò molto grato se me lo dirà.

ArrayFill() permette di riempire tutti gli elementi di un array con il valore desiderato e può essere usato per un array bidimensionale. Guardate l'esempio nella guida di questa funzione.

A proposito, ho controllatoArrayInitialize() applicato a un array bidimensionale, funziona anche questo. Ma in entrambi i casi potete inizializzare solo tutti gli elementi con un valore particolare.

Se volete impostare un valore diverso per ogni elemento, queste funzioni non funzioneranno.

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
 
Oleg Remizov:

ArrayFill() permette di riempire tutti gli elementi di un array con il valore desiderato e può essere utilizzato per un array bidimensionale. Vedi l'esempio nell'aiuto per questa funzione.

A proposito, ho controllatoArrayInitialize() applicato a un array bidimensionale, funziona anche questo. Ma in entrambi i casi potete inizializzare solo tutti gli elementi con un valore particolare.

Se avete bisogno di impostare un valore diverso per ogni elemento, queste funzioni non funzioneranno.

Grazie mille per il vostro aiuto.

 
Oleg Remizov:

Sfortunatamente, il modello non funziona per me. La funzione di visualizzazione degli indicatori dovrebbe essere attivata/disattivata nelle impostazioni, e il disegno dovrebbe essere fatto direttamente dall'EA. L'Expert Advisor dovrebbe poter essere trasferito in un unico file.

Al posto della freccia, disegnate una linea di tendenza, che ha lo stesso prezzo e tempo in entrambi i punti. Usa lo spessore della linea per regolare la dimensione del punto risultante.

 
Salve, sono un nuovo arrivato e vorrei sapere come prelevare denaro dal mio conto e poi quando trasferirlo
 

Saluti.

C'è una cosa del genere in MT4:

#import "user32.dll"
   int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[]);
   int RegisterWindowMessageA(uchar &lParam[]);
#import

string IndiName="TestBot";

void OnStart()
  {
   char buf[];
   StringToCharArray("MetaTrader4_Internal_Message", buf);
   int MT4InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray(IndiName, buf);
   long handle=ChartGetInteger(0, CHART_WINDOW_HANDLE);
   Print(MT4InternalMsg);
   bool res=SendMessageA((int)handle, MT4InternalMsg, 14, buf);
   Print("Функция SendMessageA завершила работу с результатом: ",res);
  }

Questo codice invia un comando alla finestra del terminale per eseguire uno specifico EA.

Esiste una funzionalità simile per MT5?

Ho provato così:

#import "user32.dll"
   int SendMessageA(long hWnd, long Msg, uint wParam, uchar &lParam[]);
   int RegisterWindowMessageA(uchar &lParam[]);
#import

string IndiName="TestBot";

void OnStart()
  {
   uchar buf[];
   StringToCharArray("MetaTrader5_Internal_Message", buf);
   long MT5InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray(IndiName, buf);
   long handle=ChartGetInteger(0, CHART_WINDOW_HANDLE);
   Print("Window handle: ", handle);
   Print("Message: ",MT5InternalMsg);
   for(int i = 0; i<100; i++){
      bool res=SendMessageA(handle, MT5InternalMsg, i , buf);
      printf("Функция SendMessageA завершила работу с результатом: %d, номер: %d ",res, i);
   }
  }

Non funziona.

Ho provato a fare la scansione di spy++, ma non ci sono messaggi in MT5 a differenza di MT4.

Ho bisogno esattamente di chiamare la finestra delle impostazioni di Expert Advisor.

 
50211108:
Ciao, sono un Newbie e vorrei chiarire come ritirare i soldi dal conto e poi quando depositare

Puoi solo ritirare ciò che hai guadagnato da questa risorsa, che è la vendita di software, segnali e potenza del computer. Ciò che viene inserito può essere speso solo per questa risorsa.

Motivazione: