[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 207

 

Le calcul de la marge pour un lot est très simple :

  double МАРЖА=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
  double МАРЖАИНИ=MarketInfo(Symbol(),MODE_MARGININIT);
  double МАРЖАПОДД=MarketInfo(Symbol(),MODE_MARGINMAINTENANCE);
  double МАРЖАЛОК=(MarketInfo(Symbol(),MODE_MARGINHEDGED)*2)/MarketInfo(Symbol(),MODE_LOTSIZE);

Les valeurs de retour sont dans la devise du dépôt.

Veuillez noter qu'ils peuvent retourner 0 et que c'est la norme.

Certains Dealing Desks n'utilisent pas les marges d'initialisation et/ou de soutien.

Ils utilisent également la "marge zéro" du chevauchement...

*

Calcul de type info de la possibilité de chevauchement, en principe:

  string МАРЖАЛОКИД="na";
  if( МАРЖАЛОК==0)    МАРЖАЛОКИД="0";
  if( МАРЖАЛОК==1)    МАРЖАЛОКИД="1";
  if( МАРЖАЛОК==0.5)  МАРЖАЛОКИД="1D";
  if( МАРЖАЛОК==2)    МАРЖАЛОКИД="2";  
 
kombat >> :

Le calcul de la marge par lot est très simple : .....

Ce n'est pas ce qu'il voulait. Il doit calculer la marge des ordres ouverts séparément par instrument. C'est-à-dire, additionner les lots par instrument et multiplier par la marge de l'instrument.

 
granit77 >> :

Ce n'est pas ce qu'il voulait. Il doit calculer la marge des ordres ouverts séparément par instrument. Il s'agit d'additionner les lots par instrument et de les multiplier par la marge de l'instrument.

Eh bien, c'est simple, chaque instrument a son propre summolot*margin.

Nous connaissons la marge, nous connaissons le brut :

double SumLot(){ double buy=0, sell=0, sl; int y;
for( y=0; y<OrdersTotal(); y++) {OrderSelect( y, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderType()==0) buy+=OrderLots();
if(OrderSymbol()==Symbol() && OrderType()==1) sell+=OrderLots();
} return( buy- sell);}
 
kombat писал(а) >>

Le calcul de la marge pour un lot est très simple :

Les valeurs de retour sont dans la devise du dépôt.

Veuillez noter qu'ils peuvent retourner 0 et que c'est la norme.

Certains Dealing Desks n'utilisent pas les marges d'initialisation et/ou de soutien.

De même, les chevauchements à "marge zéro" sont utilisés...

*

Le calcul de type info des superpositions, par principe, une option :

Merci.

Quelle est la différence entre la marge d'initialisation et de soutien et la marge normale - à quoi servent-elles ?

 
Finbest >> :

Merci.

Quelle est la différence entre les marges d'initialisation et de soutien et les marges ordinaires - à quoi servent-elles ?

C'est la boîte à outils des futurs.

m.init = marge requise pour l'ouverture

m.subd = affiché après l'ouverture

Les calculs sont assez complexes et spécifiques, je me laisse donc guider par les conditions de transaction.

m.subd représente généralement ~75% de m.ini, exemples ici...

 

Une autre option consiste à examiner les marges séparément par instrument.

(iExposure légèrement modifié)

Dossiers :
 

Salut. Aidez-nous, s'il vous plaît.

J'ai écrit ce programme... il ne fonctionne pas...


double ves[][6], hour[][6] ;
ArrayCopyRates(ves, Symbol(), Period());// le tableau contient toutes les données du graphique.

int day= Day() ;
int hou= Hour() ;
da= day ;
for ( ; q<= da ; q++, w--){
if (TimeDay(ves[q][0])== w && TimeHour(ves[q][0])== hou){
ArrayCopy(hour, ves, e, q) ;
e++ ;
}
}

J'ai deux tableaux. Le tableau ves est un tableau de temps.

ce dont j'ai besoin........

prendre l'heure courante. de ves copier à l'heure. les 6 données.

prendre le jour d'hier la même heure (jour d'hier) de ves est copiée en heure.

et ainsi de suite...

 

Les gars, à l'aide, je n'arrive pas à trouver comment faire.

J'ai une boucle qui calcule les niveaux entre LOW et HI avec un step Step.

for ( double c = LOW ; c < HI ; c = c + Step)

Je dois maintenant enregistrer chaque niveau quelque part pour pouvoir le ressortir facilement plus tard et le comparer au prix actuel. S'il vous plaît, sous forme de code, non pas par paresse, mais parce que tant que je n'ai pas vu l'exemple, je ne comprends toujours pas comment faire. Merci !

 

Bonjour, estimés connaisseurs. Je continue à vous poser des questions auxquelles je ne trouve pas de réponses dans le manuel et le forum. Comment cette situation peut-elle être ?

Pourquoi dans le test, montrant un profit de 0, sur la troisième transaction la taille du lot a soudainement augmenté ?

Il est calculé comme suit Lots=MathMin(20,NormalizeDouble(MathMax(Lots,AccountEquity( ) /3000),1)) ;

TEST


Symbole EURCHF (euro contre franc suisse)
Période 1 Minute (M1) 2009.08.30 23:02 - 2009.08.31 09:34 (2009.08.30 - 2009.09.05)
Modèle Tous les ticks (méthode la plus précise basée sur toutes les plus petites échéances disponibles)
Paramètres min=0,1 ;

Les bars dans l'histoire 1519 Tiques modélisées 2156 Qualité de la modélisation 24.95%
Erreurs de concordance des graphiques 0




Dépôt initial 450.00



Bénéfice net -8.00 Bénéfice total 0.00 Perte totale -8.00
Rentabilité 0.00 Gain attendu -2.00

Drawdown absolu 32.00 Abaissement maximal 38.00 (8.33%) Abattement relatif 8.33% (38.00)

Total des transactions 4 Positions courtes (% de gain) 1 (0.00%) Positions longues (% de gain) 3 (100.00%)

Transactions rentables (% de toutes) 3 (75.00%) Transactions à perte (% de toutes) 1 (25.00%)
Le plus grand commerce profitable 0.00 transaction perdante -8.00
Moyenne opération rentable 0.00 Perte de marché -8.00
Nombre maximum gains continus (profit) 3 (0.00) Pertes continues (perte) 1 (-8.00)
Maximum Profit continu (nombre de victoires) 0.00 (0) Perte continue (nombre de pertes) -8.00 (1)
Moyenne gains continus 3 Perte continue 1

Temps Type Commandez Volume Prix S / L T / P Profit Balance
1 2009.08.31 00:16 acheter 1 0.30 1.5161 1.5127 1.5163
2 2009.08.31 00:37 fermer 1 0.30 1.5161 1.5127 1.5163 0.00 450.00
3 2009.08.31 00:44 acheter 2 0.30 1.5158 1.5124 1.5161
4 2009.08.31 02:58 fermer 2 0.30 1.5158 1.5124 1.5161 0.00 450.00
5 2009.08.31 03:14 acheter 3 0.40 1.5152 1.5118 1.5154
6 2009.08.31 03:30 fermer 3 0.40 1.5152 1.5118 1.5154 0.00 450.00
7 2009.08.31 06:45 vendre 4 0.40 1.5151 1.5185 1.5149
8 2009.08.31 08:18 fermer 4 0.40 1.5153 1.5185 1.5149 -8.00 442.00








































































 
001 >> :

Les gars, à l'aide, je n'arrive pas à trouver comment faire.

J'ai une boucle qui calcule les niveaux entre LOW et HI avec un step Step.

for ( double c = LOW ; c < HI ; c = c + Step)

Je dois maintenant stocker chaque niveau quelque part pour pouvoir le ressortir facilement plus tard et le comparer au prix actuel. S'il vous plaît, sous forme de code, non pas par paresse, mais parce que tant que je n'ai pas vu l'exemple, je ne comprends toujours pas comment faire. Merci !

En option :

double c, levels[];
int nCount = 1+( HI - LOW)/ Step;
ArrayResize( levels, nCount);

for ( c = LOW, nCount = 0; c < HI; c += Step, nCount++) {
    levels[ nCount] = c;
}

// Use:
for (int j = 0; j < nCount; j++) {
    if ( levels[ j] > ...) {
        //...
    }
}