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
La condition de fermeture utilise un signal inverse, mais cela ne fonctionne pas. Nos transactions ne sont fermées qu'au stop ou au takei. Quelle est votre raison ?
Faux.
Votre condition doit être au début et la fonction de fermeture après le début.
int i;
//
void Start(){
if ((FMA1<GrossMA1 && FMA2>GrossMA2 && Bid<FMA1-Distanse*GetPoint()) // тут так надо бы Bid<NormalizeDouble(FMA1-Distanse*GetPoint(),Digits)
|| (FRMA1>GrossMA1 && FRMA2<GrossMA2 && Ask>FRMA1+Distanse*GetPoint())){
for(i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) CloseOpBuySell(); // тут закроются все ордера и бай и селл
}
}
}// end start
void CloseOpBuySell()
{
for(i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic ) //свой магик
{
if(OrderType()==OP_BUY)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,LawnGreen); {continue;}
}
if(OrderType()==OP_SELL)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,LawnGreen); {continue;}
}
}
}
}
return;
}
Faux.
Si vous devez fermer par conditions individuelles et non pas toutes en même temps, alors la fonction de fermeture doit être différente.Vous devriez avoir la condition au début et la fonction de fermeture au début.
Oui, mais je l'ai déjà fait et je lui ai envoyé, alors il ne dira rien.
{
//закрытие по МА-шкам
if (FMA1<GrossMA1 && FMA2>GrossMA2 && Bid<FMA1-Distanse*GetPoint()) CloseOpBuySell("BUY");
if (FRMA1>GrossMA1 && FRMA2<GrossMA2 && Ask>FRMA1+Distanse*GetPoint()) CloseOpBuySell("SELL");
return(0);
}
//----
//-----------------------------------+
void CloseOpBuySell(string TypeClose)
{
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==mn )
{
if(TypeClose=="BUY")
{
if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,3,LawnGreen);
}
if(TypeClose=="SELL")
{
if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,3,LawnGreen);
}
}
}
}
}
Il est préférable de compter en fonction des fonds disponibles plutôt que du solde. Sinon, vous risquez d'obtenir beaucoup plus que ce que vous pouvez vous permettre au moment d'ouvrir une transaction.
Vous devez également déterminer la dépendance de l'étape du lot, puis vérifier si le lot est dans les limites des lots maximum et minimum autorisés sur le compte.
double lots,lotstep,free,margin, lotmin, lotmax;
lotmax=MarketInfo(Symbol(), MODE_MAXLOT);
lotmin=MarketInfo(Symbol(), MODE_MINLOT);
lotstep = MarketInfo(Symbol(), MODE_LOTSTEP);
reqmargin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
free=AccountFreeMargin();
lots = NormalizeDouble(lotstep*MathRound((free*MaximumRisk*0.01/reqmargin)/lotstep),2);
if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
Il est préférable de compter en fonction des fonds disponibles plutôt que du solde. Sinon, vous risquez d'obtenir beaucoup plus que ce que vous pouvez vous permettre au moment d'ouvrir une transaction.
Vous devez également déterminer la dépendance de l'étape du lot, puis vérifier si le lot est dans les limites des lots maximum et minimum autorisés sur le compte.
double lots,lotstep,free,margin, lotmin, lotmax;
lotmax=MarketInfo(Symbol(), MODE_MAXLOT);
lotmin=MarketInfo(Symbol(), MODE_MINLOT);
lotstep = MarketInfo(Symbol(), MODE_LOTSTEP);
reqmargin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
free=AccountFreeMargin();
lots = NormalizeDouble(lotstep*MathRound((free*MaximumRisk*0.01/reqmargin)/lotstep),2);
if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
Reporté :
Gevorg Hakobyan, 2016.12.08 15:26
Bonjour. Comment puis-je obtenir une liste de toutes les paires de devises existantes dans Meta Trader 4 ? Et comment puis-je me tenir au courant de tout changement dans la liste ?Reporté :
Gevorg Hakobyan, 2016.12.08 15:26
Bonjour. Comment puis-je obtenir la liste de toutes les paires de devises existant dans Meta Trader 4 ? Et comment être au courant de tout changement dans la liste ?SymbolesTotal
Renvoie le nombre de symboles disponibles (sélectionnés dans MarketWatch ou tous).
intSymbolsTotal(
bool selected// true - seulement les symboles dans MarketWatch
) ;
Paramètres
sélectionné
[Mode de demande. Peut prendre les valeurs true ou false.
Valeur retournée
Si selected est vrai, le nombre de caractères sélectionnés dans MarketWatch est renvoyé. Si elle est fausse, elle renvoie le nombre total de tous les symboles.
Reporté :
Gevorg Hakobyan, 2016.12.08 15:26
Bonjour. Comment puis-je obtenir une liste de toutes les paires de devises existantes dans Meta Trader 4 ? Et comment puis-je me tenir au courant de tout changement dans la liste ?