[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 28

 
Dov'è l'errore di "conteggio dei parametri sbagliati" qui?
MA1 = iMA(NULL, 0, MA_Period1, MODE_SMA, PRICE_CLOSE,0);
 
Сvovan-gogan:
Dov'è l'errore di "conteggio dei parametri sbagliati" qui?


Buon pomeriggio! Grazie, signore, per aver posto la domanda. Felice di essere utile.

Ci inchiniamo alla vita e rispondiamo con intelligenza:

Evidentemente ti manca un parametro in iMA:

doppio iMA( simbolo stringa, int timeframe, int periodo, int ma_shift, int ma_method, int applied_price, int shift)
Calcolo della media mobile.
Parametri:
simbolo - Nome del simbolo, sui cui dati verrà calcolato l'indicatore. NULL significa simbolo corrente.
timeframe - Periodo. Può essere uno dei periodi del grafico. 0 significa il periodo del grafico corrente.
periodo - Periodo di media per il calcolo della media mobile.
ma_turno - Spostamento dell'indicatore rispetto al grafico del prezzo.
ma_metodo - Metodo di mediazione. Può essere uno qualsiasi dei valori dei metodi della media mobile.
prezzo applicato - Prezzo usato. Può essere una qualsiasi costante di prezzo.
turno - Indice del valore ottenuto dal buffer dell'indicatore (spostamento relativo alla barra corrente del numero specificato di periodi indietro).
--------------------------

Molto probabilmente, il parametro è mancante:

ma_shift - Spostamento dell'indicatore rispetto al grafico del prezzo.

In attesa di altre domande!

 
Grazie mille)
 

Ho bisogno del vostro aiuto.

Questa espressione deve essere tradotta

OrderOpenPrice()-OrderClosePrice()
in numero di punti e calcolare il profitto o lo stop per ogni posizione a seconda del lotto. E infine stampare l'importo totale in % di profitto o stop
 
Vodya:

Ho bisogno del vostro aiuto.

Ho bisogno di tradurre questa espressione

al numero di articoli ......


Per prima cosa selezionate la voce desiderata.

( OrderOpenPrice() - OrderClosePrice() ) /Point - questo sarà il profitto/perdita della posizione selezionata in pip

---------------

In realtà, per i vostri calcoli, è meglio usare funzioni appropriate di I. Kim. E il compito diventerà molto più facile.

https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page3#434225

 
leonid553:


Prima seleziona la posizione corretta.

( OrderOpenPrice() - OrderClosePrice() ) * Punto - questo sarà il profitto/perdita della posizione selezionata in punti

---------------

In realtà, per i vostri calcoli, è meglio usare funzioni appropriate di I. Kim. E il compito diventerà molto più facile.

https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page3#434225


Grazie. Ma non ho trovato quello che mi serve nella sua funzione. E in questo caso ( OrderOpenPrice() - OrderClosePrice() ) * Punto faccio ( OrderOpenPrice() - OrderClosePrice() ) / Punto

Quando si moltiplica 0000000000000000000000, si ottiene

 

Sì, certo - ho fatto un errore - bisogna dividere per Punto, non moltiplicare affatto!

Per funzione.

È molto semplice. Per esempio. È necessario conoscere il profitto corrente (o la perdita) nella valuta di deposito delle operazioni aperte (supponiamo) - posizioni Bai su EURUSD e posizioni Sell su GBPUSD.

Prendete la funzione https://www.mql5.com/ru/forum/131859/page3#434223

e copiatelo alla fine del vostro codice (fuori dalla funzione START)

Allora il profitto attuale in valuta delle vostre posizioni sarà (impostato all'interno di START):

double PROFIT_ EURUSD = GetProfitOpenPosInCurrency(EURUSD, OP_BUY, -1) ;

double PROFIT_FUNTDOLLAR = GetProfitOpenPosInCurrency(GBPUSD, OP_SELL, -1) ;

Se avete specificato un magik all'apertura di queste posizioni, specificate il magik invece di "-1".

Se avete bisogno di conoscere il profitto di una posizione secondo il simbolo corrente, cioè nel grafico, sul quale l'EA è stato posizionato e sta funzionando, allora :

double PROFIT_NULL = GetProfitOpenPosInCurrency(NULL, OP_SELL, -1) ;

 
leonid553:

Sì, certo - ho fatto un errore - bisogna dividere per Punto, non moltiplicare affatto!

Per funzione.

È molto semplice. Per esempio. È necessario conoscere il profitto corrente (o la perdita) nella valuta di deposito delle operazioni aperte (supponiamo) - posizioni Bai su EURUSD e posizioni Sell su GBPUSD.

Prendete la funzione https://www.mql5.com/ru/forum/131859/page3#434223

e copiatelo alla fine del vostro codice (fuori dalla funzione START)

Allora il profitto attuale in valuta delle vostre posizioni sarà (impostato all'interno di START):

double PROFIT_ EURUSD = GetProfitOpenPosInCurrency(EURUSD, OP_BUY, -1) ;

double PROFIT_FUNTDOLLAR = GetProfitOpenPosInCurrency(GBPUSD, OP_SELL, -1) ;

Se avete specificato un magik all'apertura di queste posizioni, specificate il magik invece di "-1".

Se avete bisogno di conoscere il profitto di una posizione secondo il simbolo corrente, cioè nel grafico, sul quale l'EA è stato posizionato e sta funzionando, allora :

double PROFIT_NULL = GetProfitOpenPosInCurrency(NULL, OP_SELL, -1) ;


Grazie per il consiglio.

Ma voglio impostare il profitto come percentuale del deposito iniziale e la perdita del deposito da calcolare. Funziona, ma solo per ogni trade, non è possibile calcolare la perdita totale.

 
Vodya:


Grazie per il suggerimento.

Ma voglio calcolare il profitto come percentuale del deposito iniziale e la perdita del deposito. Posso calcolarlo, ma solo per ogni affare, non funziona in totale.

Di seguito ci sono delle funzioni per calcolare il Profitto e la Perdita.

Se hai il valore della dimensione/perdita puoi calcolare cos'è come percentuale del deposito.

 double Profit(){
   double profit=0; 
   for(int i=OrdersHistoryTotal()-1; i>=0; i--){
     if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue; 
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue;
     if(OrderType()>1)continue;
     if(OrderProfit()>0)profit+=OrderProfit();
    }        
 return(profit);} 

 double Loss(){
   double loss=0; 
   for(int i=OrdersHistoryTotal()-1; i>=0; i--){
     if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue; 
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue;
     if(OrderType()>1)continue;
     if(OrderProfit()<0)loss+=OrderProfit();
    }        
 return(loss);} 
 
charter:

Di seguito sono riportate le funzioni per calcolare il Profitto e la Perdita.

Con la dimensione/valore del Profit and Loss, si può calcolare a cosa ammonta come percentuale del depo.


Grazie.

Ma quando si compila in questa riga.

double Profit(){

si presenta con '(' - definizione di funzione inaspettata

e questo '}'. - parentesi sbilanciate dove si trova l'ultimo ritorno (0).

Dove dovrebbe essere incollato? Forse l'ho messo nel posto sbagliato