[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 826

 

Non potremmo calcolare separatamente per ogni posizione aperta successivamente e poi sommare il tutto? C'è una ragione per cui

AccountFreeMarginCheck(sy, op, lot); 

Il simbolo, l'operazione commerciale e il lotto gli vengono passati... Potete calcolare il margine per ogni posizione separatamente, decidere le posizioni che si sovrappongono e stampare il risultato.

Scrivete uno script che stampi sia il vostro calcolo che quello che viene restituito dalla vostra società di intermediazione. E confrontarlo...

MODO_MARGINE COPERTO 31 Margine addebitato su posizioni sovrapposte per 1 lotto


Quindi calcolate i vostri lotti. Conta il numero di lotti sovrapposti dal valore restituito da MODE_MARGINHEDGED
Conteggio rimanente non sovrapposto dal valore restituito da MODE_MARGINREQUIRED

 

Ho incontrato un problema con MRC. Per esempio, quando voglio eseguire questo codice :

double OpPriceF5B = OrderClosePrice()- OrderOpenPrice();

Voglio sapere la differenza tra il prezzo di apertura e il prezzo di scambio.

Come si fa?

Sto cercando di capirlo in questo modo:

for (i=1; i <=OrdersTotal();i++){
    if (OrderSelect(i-1,SELECT_BY_POS)==true){
       if (OrderType()== OP_BUY ){
          if (OrderMagicNumber() == Magic_N_F5){
             double OpPriceF5B = OrderClosePrice()- OrderOpenPrice();
          }
       }      
    }   
}
 

Sperimentare con AccountFreeMarginCheck():

- Ordine BUY aperto sul terminale

- Saldo: 94919.36 Fondi: 94921.16 Garanzia: 1273.39 Libero: 93647.07 Livello: 7454.15%

- Chiedo: AccountFreeMarginCheck(Symbol(),OP_BUY,0.1) - dà il resto del livello Free

- Chiedo: AccountFreeMarginCheck(Symbol(),OP_SELL,0.1) - dà il saldo dal livello Fondi


In generale, il mio problema non può essere risolto così.

La mia domanda (problema) è la seguente: diversi ordini dovrebbero essere aperti simultaneamente, come questo

il primo - vendere con il lotto 0,10

il secondo - comprare con il lotto 0,26

terzo - vendere lotto 0,43
quarto - comprare lotto 0,72

Il quinto - vendere per lotto 1,19, ecc.

Prezzo 1.2737, leva 100, lotto minimo 0.1

C'è la possibilità che in qualche ciclo del prossimo ordine, lo Stop Out arrivi.

Significa che dovremmo calcolare questo scenario peggiore usando la metodologia del DC, ovviamente. E trarre una conclusione: fino a quale quantità totale di lotti sugli ordini aperti nell'ordine specificato possiamo andare senza aver paura di entrare in uno Stop Out? Cioè "all'inizio dell'inizio" :) Calcola il margine totale per gli ordini che possono essere aperti. Di nuovo, l'ordine di apertura è mostrato sopra e l'ordine dei lotti per ogni ordine è noto in anticipo.

 
ikatsko:

Sperimentare con AccountFreeMarginCheck():

- Ordine BUY aperto sul terminale

- Saldo: 94919.36 Fondi: 94921.16 Garanzia: 1273.39 Libero: 93647.07 Livello: 7454.15%

- Chiedo: AccountFreeMarginCheck(Symbol(),OP_BUY,0.1) - dà il resto del livello Free

- Chiedo: AccountFreeMarginCheck(Symbol(),OP_SELL,0.1) - dà il saldo dal livello Fondi


In generale, il mio problema non può essere risolto così.

Ma la mia domanda (compito) è la seguente: diversi ordini dovrebbero essere aperti simultaneamente, e dovrebbero rimanere aperti così

il primo - vendere con il lotto 0,10

il secondo - comprare con il lotto 0,26

terzo - vendere lotto 0,43
quarto - comprare lotto 0,72

Il quinto - vendere per lotto 1,19, ecc.

Prezzo 1.2737, leva 100, lotto minimo 0.1

C'è la possibilità che in qualche ciclo del prossimo ordine, lo Stop Out arrivi.

Significa che dovremmo calcolare questo scenario peggiore usando la metodologia del DC, ovviamente. E fare una conclusione: fino a quale quantità totale di lotti sugli ordini aperti nell'ordine specificato possiamo andare senza aver paura di entrare in uno Stop Out? Cioè "all'inizio dell'inizio" :) Calcola il margine totale per gli ordini che possono essere aperti. Ripeto, l'ordine di apertura è indicato sopra e le dimensioni dei lotti d'ordine per ogni ordine sono note in anticipo.

Pensiamoci.

Tutti Bai: 0,26 + 0,72 = 0,98.

Tutte le palle: 0.1+0.43+1.19 = 1.72

Sovrapposto: il numero di lotti di Bai è inferiore al numero di lotti di Sell, quindi il numero di lotti sovrapposti è uguale al numero di lotti di Bai = 0,98

Lotti rimanenti di vendita unidirezionale: 1,72-0,98 = 0,74

Quindi cosa facciamo? Aggiungete i Bai e sottraete i Sell: -0.1+0.26-0.43+0.72-1.19= -0.74 Se meno, allora abbiamo un Sell unidirezionale

Per quelli sovrapposti, prendere il valore da MODE_MARGINHEDGED e moltiplicarlo per il numero di lotti sovrapposti.

E per quelli unidirezionali, prendete il valore di MODE_MARGINREQUIRED e moltiplicatelo per MathAbs(quantità di lotti unidirezionali);

Beh, e tutto il resto, anche, cercare di fattore in ...

SZY. Non stavo pensando a lungo qui - così tra fare qualche battuta - ammetto le omissioni, quindi prendere solo come una possibile linea di azione... :)

 

Quindi... la logica diventa chiara. Grazie! Proviamo a controllare ora.

A proposito, ho fatto un esperimento sulla DEMO:

primo BUY con 0.1 lotto prezzo 1.27339 - ha mostrato Bail=1273.39. Cioè 0,1 * 1000000 * 1,27339/100.

Il secondo SELL del lotto 0.26 al prezzo di 1.27039 - ha mostrato Bail totale=3305.18. Ed è molto simile a questo 0,26*1000000*1,27039/100=3303,01? Stranezze?

Risulta che il deposito è preso dal numero massimo di lotti che si sovrappongono agli ordini aperti in direzione opposta?

Aspettando l'apertura del prossimo BUY

 
eugggy:
Buon pomeriggio a tutti. C'è una definizione chiara del termine operatore o è come "qual è il senso della vita" (non si può spiegare)?

:) Un operatore in quanto tale è un termine elastico - può anche essere l'operatore di una macchina per il moonshine... :)

Si farebbero domande nel contesto in cui si vuole il significato della parola. Speriamo non sia una frase troppo lunga :)

 
eugggy:
Buon pomeriggio a tutti. C'è una definizione chiara del termine operatore o è come "qual è il senso della vita" (non può essere spiegato)?

=Commando. Vedi wikipedia.

https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

 
ikatsko:

Quindi... la logica ha senso. Grazie. Proviamo a controllare ora.

A proposito, ho fatto un esperimento sulla DEMO:

primo BUY con 0.1 lotto prezzo 1.27339 - ha mostrato Bail=1273.39. Cioè 0,1 * 1000000 * 1,27339/100.

il secondo lotto SELL 0.26 prezzo 1.27039 -ha mostrato Bail totale=3305.18. Ed è molto simile a questo 0,26*1000000*1,27039/100=3303,01? Stranezze?

Risulta che il deposito è preso dal numero massimo di lotti che si sovrappongono agli ordini aperti nella direzione opposta?

Aspettando l'apertura del prossimo BUY

Eh... Vorrei avere il tempo di pensarci su... :) È un compito interessante, ma ho poco tempo.

Penso che se c'è una somiglianza, ma non una somiglianza, non è vero. È solo una stranezza... :) Prova a calcolare la differenza per il lotto massimo...

Per questa "stranezza", le Dezlas si faranno strappare le gambe da clienti seri... :)

Bisogna pensare in un'altra direzione...

In attesa del tuo prossimo ordine :)

 
eugggy:
(ridacchiando): (come l'operatore della macchina del moonshine...)) Se ho capito bene, l'operatore (anche in MQL4) è l'espressione più piccola e significativa nel codice del programma.... qualcosa del genere.

О ... madre-mia-nonna... Non puoi vivere senza? In piedi su un'amaca? Perché complicarsi la vita?

Leggilo qui... e questa è la fine...

 

Tuttavia, come a volte le domande semplici lasciano perplessi :) (Intendo l'operatore).

Ho trovato la definizione più accessibile (semplice) in BSE:

"In informatica, una prescrizione... inteso a specificare qualche azione compiuta..."

E qui nella documentazione:

"Un operatore è una parte di un programma... prescrivendo un certo ordine di conversione delle informazioni".

Quindi la funzione si comporta allo stesso modo...

Interessante.

Motivazione: