Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1457

 
Aleksey Vyazmikin #:

Nella base di codice sono presenti Expert Advisor e indicatori che sono stati originariamente scritti su MT4 e poi riscritti su MT5 - è possibile utilizzarli per la formazione.

Per molti versi i linguaggi sono simili, ponetevi il compito di riscrivere il codice che capite sulla MT5 - e utilizzate attivamente la ricerca nelle istruzioni e nel portale - troverete sempre la risposta, anche negli articoli.

La ringrazio molto per i suoi preziosi consigli. Se non ti dispiace, ti prego di inviarmi il link dell'Expert Advisor (non indicatore) che era su 4 e poi è diventato su 5 (se è possibile sul più semplice), oppure l'EA stesso in 4 e poi lo stesso in 5
Ho iniziato a studiare. Ho capito che le operazioni di trading per un principiante sono più facili da aprire nella classe di trading STrade e sono anche riuscito ad aprire ordini e operazioni con l'aiuto di questa classe
Ma non appena ho condizionato l'apertura di un ordine, gli ordini hanno smesso di aprirsi, per favore ditemi cosa ho sbagliato. Ecco il codice che apriva gli ordini quando non c'erano condizioni.

#include<Trade\Trade.mqh>
 CTrade  trade;

void OnTick()
{
MqlDateTime time_now;  
if(time_now.hour==10||time_now.hour==11&&time_now.min==0)


trade.Buy(0.1);


}

Non ho ancora capito questo punto.... Quando gli ordini BAY sono stati aperti, sono stati chiusi, come ho capito, dagli ordini CEL. E non capisco dove il codice abbia preso le informazioni su quanti pips chiudere gli ordini, perché non ho specificato da nessuna parte la dimensione di SL e TP e non ho specificato affatto la funzione di chiusura degli ordini. Sospetto che queste informazioni siano scritte in qualche punto del file allegato, cioè in qualche classe o struttura. Se è così, come posso trovare questo posto per modificare i parametri dell'ordine aperto?

Grazie ancora per il vostro aiuto

 
ANDREY #:

Grazie mille per i tuoi preziosi consigli. Se non ti dispiace, ti prego di inviarmi un link ad un Expert Advisor (non un indicatore) che era in 4 e poi è diventato in 5 (se è possibile il più semplice), oppure lo stesso Expert Advisor in 4 e poi lo stesso in 5
Ho iniziato a studiare. Ho capito che le operazioni di trading per un principiante sono più facili da aprire nella classe di trading STrade e sono anche riuscito ad aprire ordini e operazioni con l'aiuto di questa classe
Ma non appena ho condizionato l'apertura di un ordine, gli ordini hanno smesso di aprirsi, per favore ditemi cosa ho sbagliato. Ecco il codice che apriva gli ordini quando non c'erano condizioni.

Non ho ancora capito questo punto.... Quando gli ordini BAY sono stati aperti, sono stati chiusi, come ho capito, dagli ordini CEL. E non capisco dove il codice abbia preso le informazioni su quanti pips chiudere gli ordini, perché non ho specificato da nessuna parte la dimensione di SL e TP e non ho specificato affatto la funzione di chiusura degli ordini. Sospetto che queste informazioni siano scritte in qualche punto del file allegato, cioè in qualche classe o struttura. Se è così, come trovare questo posto per apportare modifiche ai parametri dell'ordine aperto?

Grazie ancora per il vostro aiuto

Posso solo dare un consiglio - sono nato nel paese dei soviet...

Cercatelo - ecco un'opzione.

Io stesso non ho ancora imparato tutte le sfumature delle operazioni commerciali - ho ordinato un corso per freelance molti anni fa e lo uso con piccole modifiche.

 
Aleksey Vyazmikin #:

Posso solo dare un consiglio - sono nato nella terra dei soviet....

Potete cercarlo, è un'opzione.

Io stesso non ho ancora imparato tutte le sfumature delle operazioni commerciali - ho ordinato un corso per freelance molti anni fa e lo uso con piccole modifiche.

Capito. Grazie per le preziose informazioni

 
ANDREY #:

Grazie mille per i tuoi preziosi consigli. Se non ti dispiace, ti prego di inviarmi un link ad un Expert Advisor (non un indicatore) che era in 4, e poi è diventato in 5 (se è possibile il più semplice), o lo stesso EA in 4 e poi lo stesso in 5.

Ecco il più semplice. Si chiama così. Ha sia il codice MQL5 che MQL4.

Simple advisor
Simple advisor
  • www.mql5.com
Советник на отложенных ордерах
 
Alexey Viktorov #:

Ecco il più semplice. Questo è il suo nome. Contiene sia codice MQL5 che MQL4.

Grazie per il vostro aiuto.

 
ANDREY #:

Ma non appena ho condizionato l'apertura di un ordine, gli ordini hanno smesso di aprirsi, per favore ditemi cosa ho sbagliato. Ecco il codice che apriva gli ordini quando non c'erano condizioni.

Non ho ancora capito questo punto.... Quando gli ordini BAY sono stati aperti, sono stati chiusi, come ho capito, dagli ordini CEL. E non capisco dove il codice abbia preso le informazioni su quanti pips chiudere gli ordini, perché non ho specificato da nessuna parte la dimensione di SL e TP e non ho specificato affatto la funzione di chiusura degli ordini. Sospetto che queste informazioni siano scritte in qualche punto del file allegato, cioè in qualche classe o struttura. Se è così, come trovare questo posto per apportare modifiche ai parametri dell'ordine aperto?

Grazie ancora per il vostro aiuto

Avete dichiarato la struttura MqlDateTime, ma non l'avete inizializzata, e quindi è vuota o spazzatura.

In questo modo aprirà posizioni di acquisto ad ogni tick a partire dalle 10:00, per un minuto. Poi alle 11:00 inizierà ad aprire posizioni di acquisto per un altro minuto.

//+------------------------------------------------------------------+
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if((time_now.hour == 10 || time_now.hour == 11) && time_now.min == 0)
      trade.Buy(0.1);
  }
//+------------------------------------------------------------------+
Questo codice non può chiudere le posizioni, non c'è nulla di simile all'interno della classe CTrade.
 
Aleksandr Slavskii #:

Si è dichiarata la struttura MqlDateTime , ma non la si è inizializzata: ora è vuota o è un rifiuto.

In questo modo aprirà posizioni di acquisto a ogni tick a partire dalle ore 10:00, per un minuto. Poi alle 11:00 inizierà ad aprire altre posizioni di acquisto per un minuto.

Questo codice non può chiudere le posizioni, non c'è nulla di simile all'interno della classe CTrade.

Grazie mille.... Mi hai fatto progredire molto nella padronanza della 5. Dici che questo codice non può chiudere le posizioni. Ma se si rimuovono tutte le condizioni, le posizioni vengono aperte e chiuse da ordini di contatore CEL.... come ho capito. Allora quale comando del codice viene utilizzato per chiudere gli ordini? Dove il programma prende i dati per chiudere gli ordini esattamente dopo un certo numero di punti, o al verificarsi di qualche evento? Non capisco nemmeno in base a quale regola li chiude.

#include<Trade\Trade.mqh>
 CTrade  trade;

void OnTick()
{
trade.Buy(0.1);
}

Ho anche notato che gli ordini SEL, che vengono utilizzati per chiudere gli ordini BAY, per qualche motivo hanno un numero di ticket molto lontano dal numero di ticket dell'ordine BAY che stanno chiudendo. Ad esempio, il primo ordine BAY ha il ticket 2, ma l'ordine CEL che lo chiude ha un ticket non 3 (che sarebbe logico) ma 91779 per qualche motivo.

E se si apre un solo ordine, tutto diventa logico. L'ordine Bai ha il numero 2 e l'ordine CEL che lo chiude ha il numero 3.

int y;
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if(time_now.hour == 10&&y==0)
   {trade.Buy(0.1);y =1;}
      
  }


 
ANDREY #:

Grazie mille.... Mi hai fatto fare molti progressi nella padronanza della 5. Dici che questo codice non può chiudere le posizioni. Ma se si rimuovono tutte le condizioni, le posizioni vengono aperte e chiuse da ordini di contatore CEL.... come ho capito. Allora quale comando del codice viene utilizzato per chiudere gli ordini? Dove il programma prende i dati per chiudere gli ordini esattamente dopo un certo numero di punti, o al verificarsi di qualche evento? Non capisco nemmeno in base a quale regola li chiude.

Ho anche notato che gli ordini SEL, che vengono utilizzati per chiudere gli ordini BAY, per qualche motivo hanno un numero di ticket molto lontano dal numero di ticket dell'ordine BAY che stanno chiudendo. Ad esempio, il primo ordine BAY ha il ticket 2, ma l'ordine CEL che lo chiude ha un ticket non 3 (che sarebbe logico) ma 91779 per qualche motivo.

E se si apre un solo ordine, tutto diventa logico. L'ordine Bai ha il numero 2 e l'ordine CEL che lo chiude ha il numero 3.


È difficile capire cosa stia succedendo, ma credo che abbiate aperto più posizioni di quelle consentite dal broker su questo strumento e che il tester inizi a chiudere quelle extra.

In realtà, non dovrebbe aprire queste posizioni extra. Ma non riesco a spiegare in altro modo ciò che sta accadendo.


Non capisco nemmeno una posizione. Perché si chiude alla fine della giornata. Forse il vostro broker vieta di portare le posizioni al giorno successivo.

 
Aleksandr Slavskii #:

Beh, è difficile capire cosa stia succedendo, ma credo che abbiate aperto più posizioni di quelle consentite dal broker su questo strumento e il tester inizia a chiudere quelle extra.

In realtà, non dovrebbe aprire queste posizioni extra. Ma non riesco a spiegare in altro modo quello che sta succedendo.


Non capisco nemmeno una posizione. Perché si chiude alla fine della giornata. Forse il vostro broker non vi permette di portare le posizioni al giorno successivo.

Grazie. La spiegazione sembra molto logica. Su un quadrato con lo stesso codice e lo stesso periodo, succede la stessa cosa, solo che gli ordini non vengono chiusi con un contro-ordine. Il mio broker è Alpari. Dopo le vostre spiegazioni, è diventato chiaro il motivo per cui i numeri dei contrordini di chiusura differiscono così tanto dagli ordini che chiudono. Perché tutti gli ordini di chiusura vengono aperti alla fine dopo tutti gli ordini di chiusura.

 

Buon pomeriggio a tutti!
Sto cercando di imparare come inserire gli ordini nella cinquina utilizzando la classe CTrade, in quanto mi è sembrato che questo sia il modo più veloce e semplice per impostarli. Per essere più precisi, sto cercando di imparare come impostare il parametro STOPLOSS. Nella quattro l'ultimo prezzo di offerta era memorizzato nel Bid predefinito, mentre nella cinque, a quanto ho capito, l'ultimo prezzo di offerta non è memorizzato, ma, se non sbaglio, come una delle opzioni, è calcolato nel metodo Bid della classe CSymbolInfo. Ma perché questo metodo calcoli il prezzo, il simbolo deve essere stato precedentemente selezionato dal metodo Name. Ho capito come funziona il metodo Name, in cui è necessario inserire il nome del simbolo o NULL e che restituisce false o true.

Ma non riesco a capire come e dove combinare il metodo Name e il metodo Bid, in modo che il prezzo Bid venga memorizzato nella variabile c.

In quattro ordini sono stati selezionati utilizzando la funzione Select(), ma in cinque ordini non dovrebbero essere selezionati gli ordini ma il simbolo..... Non capisco come fare

Vi sarei molto grato se poteste scrivere un frammento del mio codice per salvare il prezzo Bid nella variabile con, che uso nel parametro SL del metodo Btsu della classe CTrade.

int y;
double c,d;
#include<Trade\Trade.mqh>        //класс
#include <Trade\SymbolInfo.mqh>  //класс 
CTrade  trad;                   //класс (создание объекта класса)
CSymbolInfo pris;
//+------------------------------------------------------------------+
void OnTick()
  {
   c=pris.Bid();//
   Print(" ---------------------CТОП------------------------------------------------------------  ",c);
   MqlDateTime t;                //структура (объявление структуры)
   TimeCurrent(t);               //структура (инициализация структуры)
   if(t.hour == 9&&y==0)
   {trad.Buy(0.1,NULL,0,c);y =1;}   //класс
      
  }
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
  • www.mql5.com
Name - CSymbolInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5