[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 193

 

Ciao,

Per favore, datemi l'esempio più semplice per aprire un ordine (immediatamente, senza se).
Il libro di testo è molto complicato.

 
olis:

Ciao,

Per favore, datemi l'esempio più semplice per aprire un ordine (immediatamente, senza se).
Il tutorial è molto complicato.

OrdineInvia()

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

Funzione di base usata per aprire una posizione o piazzare un ordine in sospeso.
Restituisce il numero del biglietto, che viene assegnato all'ordine dal server commerciale, o -1 in caso di fallimento. Per ottenere maggiori informazioni sull'errore, si dovrebbe chiamare la funzione GetLastError().
Note.
Quando si apre un ordine a mercato (OP_SELL o OP_BUY), solo gli ultimi prezzi Bid (per la vendita) o Ask (per l'acquisto) possono essere usati come prezzo di apertura. Se l'operazione viene eseguita per uno strumento finanziario diverso da quello corrente, allora per ottenere le ultime quotazioni di questo strumento, si deve usare la funzione MarketInfo() con il parametro MODE_BID o MODE_ASK. Non puoi usare un prezzo stimato o non normalizzato. Se il prezzo di apertura richiesto non era nel flusso dei prezzi o il prezzo richiesto non è normalizzato secondo il numero di decimali, verrà generato l'errore 129 (ERR_INVALID_PRICE). Se il prezzo di apertura richiesto è gravemente superato, verrà generato un errore 138 (ERR_REQUOTE) indipendentemente dal valore del parametro slippage. Se il prezzo richiesto non è aggiornato ma è ancora presente nel flusso dei prezzi, la posizione sarà aperta al prezzo corrente e solo se il prezzo corrente rientra nell'intervallo prezzo+-slippage.

I prezzi di StopLoss e TakeProfit non possono essere troppo vicini al mercato. La distanza minima di stop in pip può essere ottenuta utilizzando la funzione MarketInfo() con il parametro MODE_STOPLEVEL. L'errore 130 (ERR_INVALID_STOPS) viene generato in caso di arresti errati o non normalizzati.

Quando si piazza un ordine pendente, il prezzo di apertura non può essere troppo vicino al mercato. La distanza minima del prezzo in sospeso dal prezzo corrente di mercato in punti può anche essere ottenuta utilizzando la funzione MarketInfo() con il parametro MODE_STOPLEVEL. Se il prezzo di apertura dell'ordine pendente non è corretto, verrà generato l'errore 130 (ERR_INVALID_STOPS).

Su alcuni server commerciali si può impostare un divieto di scadenza degli ordini pendenti. In questo caso un errore 147 (ERR_TRADE_EXPIRATION_DENIED) sarà generato quando si cerca di impostare un valore diverso da zero nel parametro di scadenza.

Su alcuni server di trading si può impostare un limite sul numero totale di ordini aperti e in sospeso. Se questo limite viene superato, non verrà aperta una nuova posizione (nessun ordine pendente verrà impostato) e il server di trading restituirà l'errore 148 (ERR_TRADE_TOO_MANY_ORDERS).
Parametri:
simbolo - Nome di uno strumento finanziario scambiato.
cmd - Operazione commerciale. Può essere qualsiasi valore commerciale.
volume - Numero di lotti.
prezzo - Prezzo di apertura.
slittamento - Slittamento di prezzo massimo consentito per gli ordini di mercato (ordini di acquisto o di vendita).
stoploss - Il prezzo di chiusura di una posizione quando viene raggiunta la perdita (0 se non c'è perdita).
takeprofit - Il prezzo di chiusura di una posizione quando viene raggiunto il livello di redditività (0 se non c'è un livello di redditività).
commento - Testo del commento dell'ordine. L'ultima parte del commento può essere cambiata dal server di trading.
magia - Numero magico dell'ordine. Può essere usato come identificatore definito dall'utente.
scadenza - Tempo di scadenza dell'ordine in sospeso.
colore_freccia - Colore della freccia di apertura sul grafico. Se il parametro è assente o il suo valore è CLR_NONE, la freccia di apertura non viene mostrata sul grafico.
 
ULAD:

Non riesco a capire come calcolare la durata dalla formazione del modello a 0 bar.

Se il modello esiste e non c'è un riferimento rigido al prezzo e al tempo.

Il modello non esiste sempre. Si è formato in un certo momento. Ecco un link al tempo della sua formazione e al tempo della barra attuale o alla barra della sua formazione e alla barra attuale. Puoi trovare la differenza tra la formazione del modello e l'ora attuale?
 
olis:

Ciao,

Per favore, datemi l'esempio più semplice per aprire un ordine (immediatamente, senza se).
Il libro di testo è molto complicato.


//--------------------------------------------------------------------
// simpleopen.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   return;                                   // Выход из start()
  }
//--------------------------------------------------------------------
 
Roll:


Grazie, funziona!
 

Sto cercando di capire un esempio dal libro di S.K., rocseparate.mq4 Expert Advisor Inizio un test, visualizzo un grafico. In basso c'è una finestra rocseparata, ma è vuota. Per favore, consigliate come fare un indicatore disegnato nella finestra principale? Il codice è come nel libro:

//-------------------------------------------------------------- 5a --
   double L_1=iCustom(NULL,0,"rocseparate",H,P,B,A,1,0);
   double L_5=iCustom(NULL,0,"rocseparate",H,P,B,A,5,0);
//-------------------------------------------------------------- 5b --
   if (L_5<=-Level && L_1>L_5)
     {
      Opn_B=true;                               // Критерий 
 
ScioMe:

Sto cercando di capire un esempio dal libro di S.K., rocseparate.mq4 Expert Advisor Inizio un test, visualizzo un grafico. In basso c'è una finestra rocseparata, ma è vuota. Per favore, consigliate come fare un indicatore disegnato nella finestra principale? Il codice come nel libro:


Tutorial:
"...L'indicatore personalizzato rocseparate.mq4 del tasso di variazione del prezzo sui timeframe corrente, più grande vicino e più grande successivo... è un analogo completo dell'indicatore roc.mq4, ma viene visualizzato in una finestra separata. Permetteva di calcolare i valori delle linee di velocità per diversi intervalli di tempo, non rispetto al riferimento MA, ma rispetto alla linea zero orizzontale".

 
Roll:


Tutorial:
".. .L'indicatore personalizzato rocseparate.mq4 del tasso di variazione del prezzo sui timeframe corrente, maggiore più vicino e maggiore successivo viene visualizzato in una finestra separata ... è l'analogo completo dell'indicatore roc.mq4, ma viene visualizzato in una finestra separata. Questo ha permesso di calcolare i valori delle linee di velocità per diversi intervalli di tempo, non rispetto al riferimento MA, ma rispetto alla linea zero orizzontale".


Sì, assolutamente giusto: lo lascio cadere sul grafico, rocseparate appare in basso nella sua propria finestra. Ma quando clicco su "Open Chart" dopo il test, la finestra del grafico è vuota. Non capisco cosa c'è che non va?
 
Poi premi End sulla tastiera (EA shared.mq4) e osserva il tuo indicatore (la finestra non è vuota).
 

Buon pomeriggio, signori.

Ho ancora bisogno del vostro consiglio su questa domanda:

Sto scrivendo un EA e mi sono imbattuto in un problema. Secondo il TS, l'Expert Advisor dovrebbe eseguire i calcoli ogni minuto per un determinato numero di minuti. Dopo di che, tutti i dati dovrebbero essere resettati e i calcoli dovrebbero ricominciare dall'inizio.

E così il ciclo per ciclo. Il ciclo di tempo è da 1 a 60 minuti. Per favore, consigliatemi come descrivere correttamente questo nel codice. Come posso rendere il seguente codice ciclico e con la possibilità di impostare il tempo di ciclo da 1 a 60 minuti?

Finora il mio ciclo di 5 minuti assomiglia a questo:

if ((TimeMinute(TimeCurrent()))==time1)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time2)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time3)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time4)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time5)

Price20=koef_10;


Apprezzerei il vostro aiuto.