Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 220

 
Ehi, ragazzi, aiutatemi! Non riesco a pensare a una funzione. L'Expert Advisor apre una posizione al giorno (tra le 00:00 e le 23:59), cioè un giorno, un ordine. Il compito è trovare la serie di perdite continue e visualizzarla nel log (usando il comando Print(), per stampare una volta sola). Il numero di elementi della serie viene inserito dalla tastiera (per esempio, se avete inserito 5 dalla tastiera, e la serie di 4 giorni perdenti, la ignoriamo --> aspettiamo il verificarsi di 5 o più giorni). Una serie è considerata se i giorni perdenti sono consecutivi o gli ordini sono chiusi lo stesso giorno (sono aperti una volta al giorno, e gli ordini di mercato possono "appendere" per più di un giorno). Per esempio, nel registro dovrebbero esserci le seguenti serie di perdite: 01.05, 02.05, 03.05, 04.05, 05.05. Condizione importante: riconoscere la serie (e di conseguenza emetterla nel log), che è maggiore o uguale al valore inserito dalla tastiera (extern).
//
Personalmente ho la seguente idea:
1. Fiya riempie l'array degli ordini perdenti con i loro valori di chiusura ( Mass[i] = OrderCloseTime();). Cioè, l'array memorizza solo le date e gli orari di chiusura degli ordini perdenti
2. Iniziamo a confrontare l'elemento alla posizione i e alla posizione i-1 (2 adiacenti)
2.1 li confrontiamo convertendo i dati della cella al giorno dell'anno ( TimeDayOfYear(Mass[i]) e TimeDayOfYear(Mass[i-1])
2.(Supponiamo che il primo giorno perdente = 178, e il precedente = 176 --> nessuna serie, perché non sono consecutivi, rispettivamente se il primo = 178, e il secondo 177 --> abbiamo una serie)
2.3 Con il ciclo for guardiamo attraverso tutte le celle dell'array e confrontiamo i suoi vicini. Se c'è una serie di perdite suelementivicinidell' array--> iniziamo a comprimere fino a 1. non abbiamo ancora raggiunto ilnumerominimo di giorni di perditarichiesto per considerarla una serie. 2. (se il punto 1 è soddisfatto) PRIMA che la serie si fermi.
2.4 LA SERIE SI FERMA --> ricorda l'indice dell'elemento dell'array dove è finita e ricorda il numero di elementi della serie (la serie può essere == O maggiore del valore inserito dalla tastiera)
3. ---- qui inizia il problema della realizzazione---
3.1 Dovremmo "fare un passo indietro" in qualche modo attraverso una serie di giorni perdenti, conoscendo la data di ogni elemento, tradurre la data da datetime --> stringa,
3.11 riempire la stringa (non so, forse attraverso StringAdd()?), e inviarla al file LOG (non milioni di volte, solo una)

L'algoritmo di Expert Advisor non è importante, importante è la funzione dell'utente stesso

Per l'amor di Dio, aiuto!)
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
File:
 
Salve. Si è iscritto per il segnale. Ma dopo pochi giorni la percentuale di aumento totale da poche centinaia è diventata solo il 58%. Le percentuali dei mesi precedenti hanno perso il loro colore blu e sono diventate grigie. Perché succede questo? Quale potrebbe essere la ragione?
File:
 
Maestro8:
Salve. Si è iscritto per il segnale. Ma dopo qualche giorno la percentuale di aumento totale da poche centinaia era solo del 58%. Le percentuali dei mesi precedenti hanno perso il loro colore blu e sono diventate grigie. Perché succede questo? Quale potrebbe essere la ragione?

Avete firmato per l'ennesimo divisore di depositi. Vedete la linea verticale sul grafico a sinistra del 76° scambio? Questa linea mostra il momento in cui ti sei collegato al monitoraggio. Prima della connessione al monitoraggio, questo conto è stato "prelevato" da diverse decine di altri conti che non hanno un quadro così bello (sono stati prosciugati in modo sicuro). Il deposito con bellissimi indicatori è collegato al monitoraggio e riceve denaro dai nuovi arrivati che amano le belle immagini. Quindi non credete agli indicatori che sono stati ottenuti prima di unirsi al monitoraggio.

 

Una copia di un'istanza della classe.

Se faccio questo incarico:

Cl1 = Cl2;

poi quando successivamente cambio Cl1, allora anche Cl2 cambia.

Quindi, ovviamente, l'incarico è solo un riferimento.

Ma ho bisogno di salvare un'istanza di una classe che memorizzi tutte le proprietà che le sono state date al momento dell'assegnazione.

Come fare?

 
Evgeny Potapov:

Una copia di un'istanza della classe.

Se faccio questo incarico:

poi quando successivamente cambio Cl1, allora anche Cl2 cambia.

Quindi, ovviamente, l'incarico è solo un riferimento.

Ma ho bisogno di mantenere un'istanza di una classe che memorizzi tutte le proprietà che le sono state date al momento dell'assegnazione.

Come fare?

Probabilmente lo fai:

CClass* cl1=new CClass;
CClass* cl2=cl1;

e avete bisogno di questo.

CClass cl1;
CClass* _cl1=new CClass;
CClass cl2=cl1;
CClass _cl2=_cl1;
CClass* cl3=new CClass(cl1);
CClass* cl4=new CClass(_cl1);

Avete bisogno di un costruttore di copie:

class CClass{
public:
   CClass(){}
   CClass(CClass &mOther){this=mOther;}
};
 
Vladimir Simakov:

Avete bisogno di un costruttore di copie:

Grazie!

Lo proverò, ma non è chiaro come funziona.

Se passa il riferimento di copia alla classe copiata, che differenza fa?

Entrambi si riferiranno di nuovo all'altro?

 
Evgeny Potapov:

Grazie!

Farò un tentativo, ma non è chiaro come funziona.

Se passa alla copia un riferimento alla classe copiata, che differenza fa?

Si riferiranno di nuovo l'uno all'altro?

No, non lo faranno. Questo è un nuovo oggetto. E nel costruttore si riempiono semplicemente i campi. Ci sono delle sottigliezze anche lì, quindi masticate) Non c'è niente a riguardo nell'aiuto locale (anche se potrei sbagliarmi), quindi leggete come è fatto in C++ e fate le correzioni per le realtà locali. Buona fortuna)

 
Vladimir Simakov:

Non lo faranno. Questo è un nuovo oggetto. E nel costruttore basta riempire i campi. Ci sono sottigliezze anche lì, quindi masticatele) Non c'è nulla al riguardo nell'aiuto locale (anche se potrei sbagliarmi), quindi leggete come fa tutto c++ e fate gli aggiustamenti per le realtà locali. Buona fortuna)

Sì, è così che funziona.

Grazie!

Sarebbe interessante sapere dagli autori come funziona:

{this=mOther;}

Perché c'è un trasferimento per valore quando ci si aspetterebbe il trasferimento di un riferimento?

Fortunatamente, un tale costrutto di copia è possibile!

 

Buon pomeriggio!

Potete dirmi perché nel mio MT4 non posso impostare take e stop loss con il mio mouse dal punto di entrata della posizione?

Forse devo regolare qualcosa, ma non capisco cosa sia, per favore aiutatemi

 
from_Reva:

Buon pomeriggio!

Potete dirmi perché nel mio MT4 non posso impostare take e stop loss con il mio mouse dal punto di entrata della posizione?

Forse devo configurare qualcosa, ma non capisco cosa sia, per favore aiutatemi

Prova a tenere premuto "Alt" sulla tastiera e a trascinare