Questions des débutants MQL5 MT5 MetaTrader 5 - page 462

 

Ou bien une telle conception ne sera-t-elle pas utile s'il n'y a pas de tique sur l'instrument en question ?

#property strict

extern bool USE_Info=true;

static datetime TimeN=0;

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

int start()

  {

   datetime TimeC=iTime("GBPUSD",5,0);

   if(TimeN==0)TimeN=TimeC;

   if(TimeN==TimeC) return(0);

   TimeN=TimeC;

   return(INIT_SUCCEEDED);

  } 

 

Aidez-moi à résoudre ce problème.

Par exemple, je dois ouvrir une position sur l'EURUSD avec un stop de 30 pips et un TakeProfit de 30 pips. Avant d'ouvrir la position, je dois spécifier le volume du lot, de sorte que la perte sur une transaction perdante soit de 100 USD. Comment le calculer avec MQL5 ?

SL=30 ;

Lot=Formule de calcul

Je voudrais utiliser mon robot de trading comme référence.

 
PabloEs:

Aidez-moi à résoudre ce problème.

Par exemple, j'ai besoin d'ouvrir une position sur EURUSD avec un stop de 30 pips et un TakeProfit de 30 pips. Avant d'ouvrir la position, je dois spécifier le volume du lot, de sorte que la perte sur une transaction perdante soit de 100 USD. Comment le calculer avec MQL5 ?

SL=30 ;

Lot=Formule de calcul

Je vous remercie d'avance.

Pour 4, vous pouvez le calculer de cette façon :

Lot=Money / (Hundred_in_points*MarketInfo(Symbol(),MODE_TICKVALUE))

 
Artyom Trishkin:

Pour un quadruplet, vous pouvez le calculer de cette façon :

Lot=Money / (Hundred_in_points*MarketInfo(Symbol(),MODE_TICKVALUE))

Merci, mais ça n'a pas marché pour moi.
 
PabloEs:
Merci, mais ça ne m'a pas aidé.

Voir SymbolInfoDouble() au lieu de MarketInfo()

Et que voulez-vous dire par "ça n'a pas aidé" ? Je ne t'ai pas donné un poisson, je t'ai donné une canne à pêche.

 
Artyom Trishkin:

Voir SymbolInfoDouble() pas MarketInfo()

Et comment ça, ça n'a pas marché ? Je ne t'ai pas donné le poisson, je t'ai donné la canne à pêche.

Je suis trop jeune pour utiliser une canne à pêche)

J'ai écrit un script utilisant la formule ci-dessus

void OnStart()

{

//---

double Test=100/(300*_Point*SymbolInfoDouble(_Symbole,SYMBOL_TRADE_TICK_VALUE)) ;

Alerte(Test) ;

Ça donne 33333.33, peut-être que le troll a tort ?

 
PabloEs:

Je suis encore trop jeune pour utiliser une canne à pêche).

Voici un script écrit à l'aide de la formule ci-dessus

void OnStart()

{

//---

double Test=100/(300*_Point*SymbolInfoDouble(_Symbole,SYMBOL_TRADE_TICK_VALUE)) ;

Alerte(Test) ;

Ça donne 33333.33, peut-être que le troll a tort ?

Argent /(Stoplos_in_points*MarketInfo(Symbol(),MODE_TICKVALUE))

Et vous le comptez dans le prix

 
PabloEs:

Je suis encore trop jeune pour utiliser une canne à pêche).

Voici un script écrit à l'aide de la formule ci-dessus

void OnStart()

{

//---

double Test=100/(300*_Point*SymbolInfoDouble(_Symbole,SYMBOL_TRADE_TICK_VALUE)) ;

Alerte(Test) ;

Il donne 33333.33, peut-être que le troll se trompe ?

J'avais l'habitude d'écrire une telle formule

Lot = AccountFreeMargin()*Risk/100*_Point/(StopLoss*MarketInfo(Symbol(), MODE_TICKVALUE))

AccountFreeMargin()*Risk/100 --- c'est vos 100$.

StopLoss --- Différence entre le prix d'ouverture de l'ordre et le prix SL (pas en points)

De même, MarketInfo() doit être remplacé par SymbolInfoDouble().

 
PabloEs:

Je suis encore trop jeune pour utiliser une canne à pêche).

Voici un script écrit à l'aide de la formule ci-dessus

void OnStart()

{

//---

double Test=100/(300*_Point*SymbolInfoDouble(_Symbole,SYMBOL_TRADE_TICK_VALUE)) ;

Alerte(Test) ;

Ça donne 33333.33, peut-être que le troll a tort ?

Voyez ce que vous avez, si en russe, et à _Point, égal à 0,00001 :

Pour gagner 100 $ avec une prise de 0,003 point (300*0,00001), le lot doit être de 33333.33. Le troll a donc définitivement tort ;)

 
Artyom Trishkin:

Argent /(Staples_in_points*MarketInfo(Symbol(),MODE_TICKVALUE))

Et vous le comptez dans le prix

Exactement. Lorsque j'ai écrit cette formule, le SL n'était pas défini par une valeur spécifique mais était calculé comme la différence entre le prix d'ouverture de l 'ordre et un certain niveau, c'est pourquoi j'ai dû multiplier le montant du risque par _Point.
Raison: