Aide au codage - page 159

 
mladen:
Ne changez pas cette partie du code. Cette partie du code vérifie si votre courtier est un courtier à 4 ou 5 chiffres. Voici également un test utilisant un dépôt initial de 500 $ (risque de 5%, stop loss de 20 pips, EURUSD utilisé pour le test) et cela fonctionne même avec ce dépôt initial.

Bonjour, Mladen.

Hier, je vous ai posé une question sur le codage des commandes.

Mais il est trop complexe.

Je suis désolé, parce que je veux un codage simple.

Juste comme ceci :

Solde du compte 500

avec un risque de 5%, lots ouverts= $0.25

lots=500$*(risque/100)

lots=500$*(0.05/100)

lots=500$(0.0005)

lots=0,25

J'aime bien cet EA qui ouvre automatiquement un lot de 0,25$.

Et le nombre de lots ne se mélange pas avec le Stoploss ou le TProfit.

J'espère que vous pourrez m'aider à résoudre ce problème.

Merci beaucoup.

extern double lots = 0.1;extern double stopsize = 20;

extern double profsize = 10;

extern double Risk =5;

int err;

int ticket;

double stop;

double prof;

int init() { return(0); }

int deinit() { return(0); }

int start()

{

int TotalOrders = 0;

for (int i=0; i <= OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

double sl = stopsize*Point*MathPow(10,Digits%2);

double tp = profsize*Point*MathPow(10,Digits%2);

stop = (Ask-sl);

prof = (Ask+tp);

ticket = OrderSend(Symbol(), OP_BUY, getLots(sl,Risk), Ask, 3, 0, 0, NULL,LimeGreen);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

Comment(" ");

}

//

//

//

//

//

double getLots(double stopLoss, double risk)

{

RefreshRates();

double pPoint = MarketInfo(Symbol(),MODE_POINT);

double step = MarketInfo(Symbol(),MODE_LOTSTEP);

double minLot = MarketInfo(Symbol(),MODE_MINLOT);

double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);

double lots = minLot;

if (risk>0 && stopLoss>0)

{

lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(Symbol(),MODE_TICKVALUE)/pPoint);

}

return(MathMax(MathMin(lots,maxLot),minLot));

}
 
hock87:
Salut, Mladen.

Hier, je vous ai interrogé sur le codage des commandes.

Mais il est trop complexe.

Je suis désolé, parce que je veux un codage simple.

Juste comme ceci :

Solde du compte 500

avec un risque de 5%, lots ouverts= $0.25

lots=500$*(risque/100)

lots=500$*(0.05/100)

lots=500$(0.0005)

lots=0,25

J'aime bien cet EA qui ouvre automatiquement un lot de 0,25$.

Et le nombre de lots ne se mélange pas avec le Stoploss ou le TProfit.

J'espère que vous pourrez m'aider à résoudre ce problème.

Merci beaucoup.

extern double lots = 0.1;extern double stopsize = 20;

extern double profsize = 10;

extern double Risk =5;

int err;

int ticket;

double stop;

double prof;

int init() { return(0); }

int deinit() { return(0); }

int start()

{

int TotalOrders = 0;

for (int i=0; i <= OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

double sl = stopsize*Point*MathPow(10,Digits%2);

double tp = profsize*Point*MathPow(10,Digits%2);

stop = (Ask-sl);

prof = (Ask+tp);

ticket = OrderSend(Symbol(), OP_BUY, getLots(sl,Risk), Ask, 3, 0, 0, NULL,LimeGreen);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

Comment(" ");

}

//

//

//

//

//

double getLots(double stopLoss, double risk)

{

RefreshRates();

double pPoint = MarketInfo(Symbol(),MODE_POINT);

double step = MarketInfo(Symbol(),MODE_LOTSTEP);

double minLot = MarketInfo(Symbol(),MODE_MINLOT);

double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);

double lots = minLot;

if (risk>0 && stopLoss>0)

{

lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(Symbol(),MODE_TICKVALUE)/pPoint);

}

return(MathMax(MathMin(lots,maxLot),minLot));

}

hock87

Il n'y a pas de moyen simple(r) de calculer la taille des lots lorsque l'équité, le stoploss et le risque requis sont pris en compte. De plus, vous ne pouvez pas calculer le risque sans connaître le stop loss (pensez-y : si vous ouvrez un ordre, disons, de taille 1 lot et que vous le fermez après 1 pip ou après 100 pips, les pertes (et donc le risque qui a été pris) ne seront pas les mêmes et ne peuvent pas être les mêmes).

Si vous le calculez comme cela (sans un stop loss connu) alors ce n'est pas le calcul du risque mais un simple calcul de la taille du lot (qui n'implique aucun type de calcul du risque).

 
mladen:
hock87

Il n'y a pas de manière simple de calculer la taille d'un lot lorsque l'équité, le stop loss et le risque requis sont pris en compte. De même, vous ne pouvez pas calculer le risque sans connaître le stop loss (pensez-y : si vous ouvrez un ordre, disons, de taille 1 lot et que vous le fermez après 1 pip ou après 100 pips, les pertes (et donc le risque pris) ne seront pas les mêmes et ne peuvent pas être les mêmes).

Si vous le calculez comme ça (sans un stop loss connu) alors ce n'est pas le calcul du risque mais un simple calcul de la taille du lot (qui n'implique aucun type de calcul du risque).

Mladen, vous avez raison.

Je sais que cela n'implique aucun type de calcul de risque.

et je veux juste un simple calcul de la taille du lot,

laissez-le calculer automatiquement la taille du lot avec le solde du compte en %.

lots=$500*(risk%/100)

lots=500$*(0.05/100)

lots=500$(0.0005)

lots=0,25

J'aime bien cet EA qui ouvre automatiquement un lot de 0,25$.

Et le nombre de lots ne se mélange pas avec le Stoploss ou le TProfit.

Comment le coder ?

Merci.

 
hock87:
Mladen, vous avez raison.

Je sais que cela n'implique aucune sorte de calcul de risque.

Je veux juste un simple calcul de la taille du lot,

laissez-le calculer automatiquement la taille du lot avec le solde du compte en %.

lots=$500*(risk%/100)

lots=500$*(0.05/100)

lots=500$(0.0005)

lots=0,25

J'aime bien cet EA qui ouvre automatiquement des lots de 0,25 $.

Et le nombre de lots ne se mélange pas avec le Stoploss ou le TProfit.

Comment le coder ?

Merci.

Essayez la façon décrite par KimIV ici : b-Lots

 

Merci beaucoup à mladen, je pense que c'est similaire à ce que j'avais en tête#1579, d'ailleurs, est-il possible de convertir le DPO de la même manière que les équations RSI ou MFI normaliser l'échelle verticale ?Detrended Price Oscillator - MQL4 Code Base, merci encore.

 
kenwa:
Merci beaucoup à mladen, je pense que c'est similaire à ce que j'avais en tête#1579, d'ailleurs, est-il possible de convertir la DPO de la même manière que le RSI ou les équations MFI normaliser l'échelle verticale ?Detrended Price Oscillator - MQL4 Code Base, merci encore.

kenwa

Une fois que vous avez un modèle pas difficile

Voici un rsi d'un dpo. Le haut est DPO et le bas est le RSI d'un DPO.

Dossiers :
 

Bonjour mladen, j'ai eu votre rsi de macd avant, est-il fait de la même manière/logique que ces récents index de force FI et DPO ?

j'ai attaché vos nouvelles versions de rsi faites récemment (FI et DPO) sur mon ordinateur, je rencontre un problème si j'utilise la fonction icustom pour rappeler leurs valeurs de sortie, ce n'est pas de 0 à 100 comme montré sur le graphique mais de -100 à 0 à 100, des commentaires sur la raison, est-ce que je me réfère mal à la valeur de la mémoire tampon intérieure ? merci pour le conseil.

Dossiers :
 

Salut, Mladen.

J'ai un problème,

lorsque le prix d'ouverture de l'ordre d'achat se déplace dans la direction inverse et que le prix du marché à distance dépasse 25 points,

il ouvre automatiquement un ordre d'achat à nouveau.

Comment coder cette stratégie ?

Merci.

extern double lots = 0.1;

extern double stopsize = 50;

extern double profsize = 20;

int err;

int ticket;

double stop;

double prof;

int start()

{

int TotalOrders = 0;

for (int i=0; i <= OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

ticket=OrderSend(Symbol(), OP_Buy, 0.1, Ask, 3, 0, 0, NULL,LimeGreen);

stop=(Ask+stopsize*Point);

prof=(Ask-profsize*Point);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

// Comment("This is a test ", err, " ", stop, " ", prof);

Comment(" ");

return(0);

}
 
hock87:
Salut, Mladen.

J'ai un problème,

lorsque le prix d'ouverture de l'ordre d'achat se déplace dans la direction inverse et que le prix du marché à distance dépasse 25 points,

il ouvre automatiquement un nouvel ordre d'achat.

Comment coder cette stratégie ?

Merci.

extern double lots = 0.1;

extern double stopsize = 50;

extern double profsize = 20;

int err;

int ticket;

double stop;

double prof;

int start()

{

int TotalOrders = 0;

for (int i=0; i <= OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

ticket=OrderSend(Symbol(), OP_Buy, 0.1, Ask, 3, 0, 0, NULL,LimeGreen);

stop=(Ask+stopsize*Point);

prof=(Ask-profsize*Point);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

// Comment("This is a test ", err, " ", stop, " ", prof);

Comment(" ");

return(0);

}

hock87

Ce code ne compile pas (remplacez OP_Buy par OP_BUY) et je ne vois pas du tout de conditions pour l'ouverture d'un autre ordre. Pour le moment, vous n'autorisez qu'un seul ordre (la ligne "if (TotalOrders<1)"). Cela devrait être votre point de départ.

 

CCI fdoe hpp

J'ai téléchargé cet indicateur à partir d'un des fils de discussion et il est bien meilleur que les indicateurs CCI-zones ou Ma-zones.

Peut-on l'adapter pour qu'il s'affiche à l'écran comme un indicateur de zone ?

Il est réglé sur le paramètre CCI 13 mais s'il peut être transformé facilement en un indicateur à paramètre variable, ce serait un bonus - mais c'est une demande secondaire.

Il s'agit d'un indicateur Forex-TSD mais aucun dossier mq4 ne l'accompagne.

Merci

TEAMTRADER

Dossiers :
cci_fdoehpp.ex4  19 kb