Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 97

 
Vladon:

L'idea è vostra, ma non il codice. Il programmatore ha scritto il codice, non tu, tu hai scritto i ToR.

Immaginate - gli utenti di Windows che chiedono l'open source - non è assurdo?

Per quanto ho capito, il codice usato dagli esperti appartiene a MetaQuotes, o a te personalmente?

Che cosa ha a che fare questo con Windows, in primo luogo gli utenti non hanno il diritto di chiederlo perché questo prodotto appartiene a macrosoft, qui è un po' diverso, macrosoft inizierà a chiedere il codice open source del loro prodotto dai programmatori che lo hanno scritto, e loro si torceranno le dita e non lo daranno.

 
Vladon:

Aah :-=) quindi ci sono fonti prima della protezione? cos'altro vuoi allora? Vi è stato detto - nessuno darà il codice open source di EA protetto, e io non lo darei. E se ci fosse l'obbligodi esigere il codice sorgente del vostro prodotto dopo il completamento.

Avrei rifiutato il compito.

Di cos'altro avete bisogno allora? C'è il codice sorgente prima della difesa, quindi è lo stesso del consigliere con la difesa.

Nel corso del lavoro dell'EA, sono state fatte delle modifiche, sono state aggiunte varie funzioni, ecc. ma non esiste un codice open source con queste modifiche.
 
ComplexFX:
Nel processo di lavoro dell'Expert Advisor sono state fatte delle modifiche, sono state aggiunte varie funzioni, ecc, ma non esiste un codice open source con queste modifiche.

allora penso che la verità sia dalla tua parte.

Per quanto ho capito, il codice usato dagli esperti appartiene a MetaQuotes, o a te personalmente?

Se scrivo il codice, mi appartiene personalmente.MetaQuotes possiede il linguaggio di programmazione.

tutto è giusto.

 
Potete dirmi come chiudere un ordine aperto in Expert Advisor? Capisco come chiudere una posizione usando Stop Loss o Take Profit. Come faccio a farlo manualmente?
 
pogeon:
Potete dirmi come chiudere un ordine aperto in Expert Advisor? Capisco come chiudere una posizione usando Stop Loss o Take Profit. Come farlo manualmente?
In mql5, una posizione aperta viene chiusa da ordini di direzione opposta il cui volume totale è uguale al volume di una posizione chiusa.
 
progeon:
Potreste consigliarmi come chiudere un ordine aperto in un Expert Advisor? Ho capito come si chiude una posizione allo Stop Loss o al Take Profit. Come farlo manualmente?

Oppure usate la classe CTrade, che ha una funzione

trade.PositionClose(_Symbol);

qualcosa del genere

https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade/ctradepositionclose

Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / PositionClose
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / PositionClose
  • www.mql5.com
Стандартная библиотека / Торговые классы / CTrade / PositionClose - Документация по MQL5
 
Yedelkin: In mql5, una posizione aperta viene chiusa da ordini diretti in modo opposto, il cui volume totale è uguale al volume della posizione chiusa.

lazarev-d-m: o usare la classe CTrade, c'è una funzione

Il metodo PositionClose() della classe CTrade chiude anche una posizione usando ordini opposti.

 

Per favore, consigliatemi la soluzione o la ragione di questa situazione. Sto lavorando in MQL5 non molto tempo fa, quindi non ho ancora abbastanza esperienza.

Ho provato a fare un EA multivaluta senza usare le classi, ma purtroppo non ho trovato nessun articolo dettagliato sugli EA multivaluta.

Ho scritto il seguente pezzo di codice.

int nomer_instr; // questo è il numero di indice della valuta nell'array dei nomi di valuta

string Name_symbol[6] = { "AUDUSD", "EURUSD", "GBPUSD", "USDCAD", "USDCHF", "USDJPY" } ; // array di testo dei nomi delle valute: in [0]-"AUDUSD", 1-"EURUSD", 2-"GBPUSD", 3-"USDCAD", etc.

double Close_buf[], Open_buf[], High_buf[], Low_buf[]; //array di base per i parametri della candela

datetime Time_buf[]; //array di base del tempo di apertura della barra

double Close_H1[6][150], Open_H1[6][150], High_H1[6][150], Low_H1[6][150]; // array per parametri di candele EA multivaluta per timeframe H1

// il numero di righe nella matrice corrisponde al numero di valute analizzate

datetime Time_H1[6][150]; // array del tempo di apertura della barra

double Close_H4[6][150], Open_H4[6][150], High_H4[6][150], Low_H4[6][150]; // array per i parametri delle candele dell'Expert Advisor multicurrency per timeframe H4

// il numero di righe della matrice corrisponde al numero di valute analizzate

datetime Time_H4[6][150]; // array tempo di apertura della barra



int OnInit()

{

}

void OnDeinit(const int reason)
{
//---
ArrayFree(Time_buf);
ArrayFree(Close_buf);
ArrayFree(Open_buf);

ArrayFree(High_buf);

ArrayFree(Low_buf);

}


void OnTick()

{

//------------------------------------------------------------------------------

ecco un pezzo di codice per determinare il momento in cui si apre una nuova barra Nev_Time[0]

e il numero di serie della barra che viene trattata nel processo di test o di commercio

//------------------------------------------------------------------------------------------------------------------------

ArraySetAsSeries(Close_buf, true); //imposta l'indicizzazione per l'array close_array come in timeseries
ArraySetAsSeries(Open_buf, true); //impostare l'indicizzazione per l'array open_array come in timeseries
ArraySetAsSeries(High_buf, true); //impostare l'indicizzazione per l'array high_array come in timeseries
ArraySetAsSeries(Low_buf, true); //impostare l'indicizzazione per l'array low_array come in timeseries

ArraySetAsSeries(Time_buf, true); //impostare l'indicizzazione per l'array time_array come in timeseries


for( nomer_instr=0; nomer_instr<=5; nomer_instr++ )
{


//========================================================================
CopyTime( Name_symbol[nomer_instr], PERIOD_H1,0,160,Time_buf); // copia i dati temporali storici per ogni barra nel buffer
CopyClose( Name_symbol[nomer_instr], PERIOD_H1,0,160,Close_buf); // copia la chiusura dei dati storici per ogni barra nel buffer
CopyOpen( Name_symbol[nomer_instr], PERIOD_H1,0,160,Open_buf); // copia i dati storici aperti per ogni barra nel buffer
CopyHigh( Name_symbol[nomer_instr], PERIOD_H1,0,160,high_buf); // copia i dati storici alti per ogni barra nel buffer
CopyLow( Name_symbol[nomer_instr], PERIOD_H1,0,160,low_buf); // copia i dati storici bassi per ogni barra nel buffer
//========================================================================

for( i=1; i<=145; i++ )
{
Time_H1[nomer_instr][i]=Time_buf[i];
Close_H1[nomer_instr][i]=Close_buf[i];
Open_H1[nomer_instr][i]=Open_buf[i];
High_H1[nomer_instr][i]=High_buf[i];
Low_H1[nomer_instr][i]=Low_buf[i];
}

//======================================================================================
// controlla lo spostamento temporale dei dati candlestick generati di un timeframe orario

if( Schetchik_svech > 8 && Schetchik_svech < 15 )
{
se( nomer_instr == 5 )
{
Alert("================================================");
Alert(" numero di barra = ",Schetchik_svech,", tempo di apertura della barra Nev_Time[0]=",Nev_Time[0]);
Allarme(" numero dello strumento: nomer_instr=",nomer_instr,", instrument: Name_symbol[nomer_instr]=",Name_symbol[nomer_instr]);
Alert("---------------------------------------------------------");
for(( i=1; i<=5; i++ )
{
Alert("i=",i,", Time_H1[nomer_instr][i]=",Time_H1[nomer_instr][i],", Close_H1[nomer_instr][i]=",Close_H1[nomer_instr][i]);
}
}
}
//======================================================================================

} // fine del ciclo per le valute usate sul timeframe H1


//##############################################

Ecco lo stesso pezzo di grafico per il timeframe H4

//############################################


} // fine della funzione OnTick()


Controllare le prestazioni di questo pezzo di software mi ha rivelato un risultato inaspettato:

- Per il caso di H1, quando l'uscita dei parametri di barre per il grafico, su cui si trova l'Expert Advisor, abbiamo una differenza di tempo di un'ora tra l'apertura della barra zero e la prima barra.

Per esempio, l'Expert Advisor è sul grafico EURUSD e il tempo di apertura della barra zero è Nev_Time[0]=2011.01.03 13:00:00, poi il tempo di apertura della prima barra Time_H1[1][1]=2011.01.03 12:00:00

Il risultato è coerente con il senso comune.

- Ora l'Expert Advisor è sullo stesso grafico e analizziamo i dati di qualsiasi altra valuta, ad esempio AUDUSD:

tempo di apertura della barra zero Nev_Time[0]=2011.01.03 13:00:00, poi il tempo di apertura della prima barra Time_H1[1][1]=2011.01.03 11:00: 00

Questo risultato è semplicemente inaccettabile, ma non ho trovato ragioni per questo effetto negli articoli.

Vi prego di consigliarmi come sbarazzarmi di questo fastidio, non posso scrivere un Expert Advisor per ogni valuta.

Grazie per il vostro feedback.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Boris.45: tempo di apertura della barra zero Time_H1[1][1]=2011.01.03 13:00:00, poi il tempo di apertura della prima barra Time_H1[1][1]=2011.01.03 11:00:00
E cosa restituisce Time_H1[1][0]?
 
Yedelkin:

Cosa restituisce Time_H1[1][0]?

Non uso questo elemento dell'array, perché andrò direttamente all'algoritmo di ricerca dei frattali sulle ultime 5 barre. E Time_H1[1][0] è il tempo di apertura della barra zero dove i parametri di questa barra non sono ancora stati formati. Posso sbagliarmi, ma dalla mia esperienza personale, so che usare i parametri di una barra zero per formare le serie temporali porta alla loro distorsione.