Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Bonjour à tous
J'ai une question... comment puis-je modifier ce qui suit ;
extern double MaxLot = 1.50 ;
double max_lot = GetMaxLot(OP_BUY, OP_SELL) ;
si (max_lot >= MaxLot) lot = CalcHedgeLot(order_type) ;
(type_ordre)] : ", lot) ;
if (lot == -1) return (lot) ;
lot = NormalizeDouble(lot, LotPrec) ;
si (lot > MaxLot) lot = MaxLot ;
si (lot < MinLot) lot = MinLot ;
return (lot) ;
}
la vérification ci-dessus pour OP_BUY ET OP_SELL
Question : comment puis-je le changer en n'importe quel OP_BUY OU n'importe quel OP_SELL ?
appréciezVous devez modifier le code de la fonction GetMaxLot(), ou peut-être pouvez-vous utiliser GetMaxLot(OP_BUY, OP_BUY) ; et GetMaxLot(OP_SELL, OP_SELL) ; (cela dépend du code - on peut faire comme ça ou pas).
Mais je pense que cela vaut la peine d'essayer
Goen
Est-ce que c'est ce que vous cherchez ?
-----------
int bars_count=WindowBarsPerChart() ;
int bar=WindowFirstVisibleBar() ;
-----------
GoenMerci, Goen .
Vous devez modifier le code de la fonction GetMaxLot(), ou peut-être pouvez-vous utiliser GetMaxLot(OP_BUY, OP_BUY) ; et GetMaxLot(OP_SELL, OP_SELL) ; (cela dépend du code - on peut faire comme ça ou pas).
Mais je pense que cela vaut la peine d'essayer
Allez-ymerci de m'avoir répondu...
Que dois-je changer ici ? Merci de votre aide.
double GetMaxLot(int type1, int type2)
{
double max_lot = 0.0 ;
int cnt = OrdersTotal() ;
for (int i=0 ; i < cnt ; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue ;
if (OrderSymbol() != Symbol()) continue ;
if (OrderMagicNumber() != Magic) continue ;
if (OrderType() != type1 && OrderType() != type2) continue ;
si (max_lot == 0 || OrderLots() >= max_lot)
{
max_lot = OrderLots() ;
}
}
return (max_lot) ;
}
un peu en perte de vitesse ici...
comment ajouter une alerte à l'indicateur tis ?
j'ai un indicateur de croisement MA qui fonctionne très bien, mais il n'a pas le support d'alerte sonore qui me fait rater beaucoup de trades, pouvez-vous s'il vous plaît m'apprendre comment ajouter une alerte à cet indicateur car je ne connais rien au meta code.... merci...
voici le code de l'indicateur avec l'indicateur lui-même, merci...
/*[[
Nom := EMA Cross
Auteur := Hapsa
Lien := http://www.metaquotes.net/
Fenêtre séparée := Non
Fenêtre séparée := Non
Première couleur := Rouge
Premier Type de Dessin := Symbole
Premier symbole := 108
Use Second Data := Yes
Deuxième couleur := Vert olive foncé
Second Type de Dessin := Symbole
Second Symbole := 108
]]*/
#property copyright "Hapsa"
#property link ""
extern int SlowPeriod=20 ;
extern int FastPeriod=5 ;
#property indicator_buffers 3
#property indicator_chart_window
#property indicator_color1 Red
#property indicateur_color2 Vert
double L20[] ;
double L50[] ;
double shift=0,val1=0,val2=0 ;
int init()
{
IndicatorBuffers(3) ;
SetIndexStyle(0,DRAW_ARROW) ;
SetIndexStyle(1,DRAW_ARROW) ;
SetIndexArrow(0, 108) ;
SetIndexArrow(1, 108) ;
SetIndexBuffer(0,L20) ;
SetIndexBuffer(1,L50) ;
//---- indicateurs
//----
return(0) ;
}
int start()
{
int counted_bars=IndicatorCounted() ;
//----
int i = Bars - counted_bars - 1 ;
alors que (i>=0)
{
val1=0 ;
val2=0 ;
double iMaSlowPrevious = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i-1) ;
double iMaSlowCurrent = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i) ;
double iMaFastPrevious = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i-1) ;
double iMaFastCurrent = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i) ;
si (iMaFastPreviousiMaSlowCurrent ) val1=High ;
si (iMaFastPrevious>iMaSlowPrevious && iMaFastCurrent<iMaSlowCurrent ) val2=Low ;
L20=val1+5*Point ;
L50=val2-5*Point ;
i-- ;
}
//----
return(0) ;
}
Merci de m'avoir répondu.
Que dois-je modifier ici ? Merci de votre aide.
double GetMaxLot(int type1, int type2)
{
double max_lot = 0.0 ;
int cnt = OrdersTotal() ;
for (int i=0 ; i < cnt ; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue ;
if (OrderSymbol() != Symbol()) continue ;
if (OrderMagicNumber() != Magic) continue ;
if (OrderType() != type1 && OrderType() != type2) continue ;
si (max_lot == 0 || OrderLots() >= max_lot)
{
max_lot = OrderLots() ;
}
}
return (max_lot) ;
}Oui, vous pouvez utiliser GetMaxLot(OP_BUY,OP_BUY) ; pour obtenir le lot maximum pour les transactions ouvertes à l'achat uniquement, et GetMaxLot(OP_SELL,OP_SELL) ; pour obtenir le lot maximum pour les transactions ouvertes à la vente uniquement.
Vous pouvez simplifier ce code "if (max_lot == 0 || OrderLots() >= max_lot)" avec "if (OrderLots() > max_lot)".
Parce que si max_lot = 0, il sera automatiquement inférieur à n'importe quel lot des transactions ouvertes. Et le signe ">=" est remplacé par ">" car si la valeur est la même, il n'est pas nécessaire de mettre à jour max_lot avec la même valeur, ce qui est inutile. Il ne sera mis à jour que si la nouvelle valeur est supérieure à max_lot.
En changeant ce code, votre processus pourrait être plus rapide.
Goen
problème de stoploss
Bonjour,
Je suis nouveau dans le domaine du forex/méta-trading mais j'essaie de comprendre comment tout cela fonctionne.
J'essaie maintenant d'écrire un EA et j'ai peur de manquer quelque chose de fondamental.
Si, dans mon code, je remplace
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",MAGIC,0,Red) ;
par
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",MAGIC,0,Red) ;
Et en testant cette nouvelle version dans le testeur de stratégie, j'obtiens MOINS d'ordres. Comment l'ajout d'un stoploss peut-il diminuer le nombre d 'entrées d'ordres? Je peux imaginer que le nombre augmente dans le cas où l'ajout d'un ordre stop fait sortir les ordres plus tôt et donc de nouveaux ordres peuvent être ajoutés plus rapidement, mais MOINS d'ordres... ?
Une idée ?
Merci
Bonjour,
Je suis nouveau dans le domaine du forex/méta-trading mais j'essaie de comprendre comment tout cela fonctionne.
J'essaie maintenant d'écrire un EA et j'ai peur de manquer quelque chose de fondamental.
Si, dans mon code, je remplace
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",ordercount,0,Red) ;
par
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",ordercount,0,Red) ;
Et en testant cette nouvelle version dans le testeur de stratégie, j'obtiens MOINS d'ordres. Comment l'ajout d'un stoploss peut-il diminuer le nombre d'entrées d'ordres ? Je peux imaginer que le nombre augmente dans le cas où l'ajout d'un ordre stop fait sortir les ordres plus tôt et donc de nouveaux ordres peuvent être ajoutés plus rapidement, mais LESS ordres... ?
Une idée ?
Merci10 pips peut être trop proche de la limite des stops imposés par le courtier (varie selon les courtiers) - ce qui signifie que si c'est un minimum de 10 pips et que le prix oscille d'un pip à l'intérieur de cette limite au moment où l'ordre est placé, l'ordre sera rejeté...
Omelette, vous avez raison, augmenter le stoploss a réglé le problème, merci ! :-)
#property indicator_color2 Yellow
extern bool TrendDirectionUp=true;
string Color1;
string Color2;
int init() {
if(TrendDirectionUp==true)//Conditionj 1
{
Color1=Yellow;
Color2=CLR_NONE;
}
if(TrendDirectionUp==false)//Condition2
{
Color1=CLR_NONE;
Color2=Magenta;
}
SetIndexStyle(0,DRAW_ARROW,0,star_size,Color1);
SetIndexStyle(1,DRAW_ARROW,0,star_size,Color2);
SetIndexArrow(0,172);//333
SetIndexArrow(1,172);//334
SetIndexBuffer(0,b1);
SetIndexBuffer(1,b2);
return(0);
}Actuellement, les deux couleurs 1 et 2 sont noires sur le graphique !
Un gourou expert peut-il m'aider à résoudre ce problème ?
Merci à l'avance !