Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 816
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
je viens d'expérimenter avec l'"archive des cotations" . en mettant à jour chaque graphique séparément, l'historique pour presque tous les graphiques a commencé à fonctionner correctement, sauf pour quelques paires exotiques, je les ai supprimées et mises à jour plusieurs fois - pas de nouvelles données pour le graphique. en général, on peut dire que le problème a été résolu
merci pour l'efficacité))))
Chers programmateurs....J'ai un problème... J'aicréé un EA.... il ouvre les trades normalement (dans le testeur) .... mais ne ferme que les trades d'achat.... il ne ferme que les trades de vente après avoir terminé le test.... voici un morceau de code.... pouvez-vous m'aider...
//---------------------------------------------------------------------------------------------------------
void CloseSell()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol())
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Green);
}
}
}
}
//+------------------------------------------------------------------+
void CloseBuy()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol())
{
if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Green);
}
}
}
}
//+------------------------------------------------------------------+
void OpenSellOrder()
{
mlots = GetLots();
if (AutoSL) sl = CalcSL(OP_SELL);
else sl = ND(Bid - StopLoss*Point);
tp = ND(Bid - TakeProfit*Point);
ticket = OrderSendReliable(Symbol(), OP_SELL, mlots, Bid, Slippage, 0, 0, comment, Magic, 0, Red);
if(ticket > 0)
OrderModifyReliable(OrderTicket(), OrderOpenPrice(), sl, tp, 0);
}
//+------------------------------------------------------------------+
int OpenBuyOrder()
{
mlots = GetLots();
if (AutoSL) sl = CalcSL(OP_BUY);
else sl = ND(Bid - StopLoss*Point);
tp = ND(Ask + TakeProfit*Point);
ticket = OrderSendReliable(Symbol(), OP_BUY, mlots, Ask, Slippage, 0, 0, comment, Magic, 0, Blue);
if(ticket > 0)
OrderModifyReliable(OrderTicket(), OrderOpenPrice(), sl, tp, 0);
}
//+------------------------------------------------------------------+
void ModifyLoss()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderType() == OP_BUY)
{
sl = ND(OrderOpenPrice() + LossPoints*Point);
if (OrderStopLoss() < sl && (Ask - OrderOpenPrice())/Point >= LossLimit)
{
if (sl != ND(OrderStopLoss()))
OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
}
}
else
if (OrderType() == OP_SELL)
{
sl = ND(OrderOpenPrice() - LossPoints*Point);
if (OrderStopLoss() > sl && (OrderOpenPrice()-Bid)/Point >= LossLimit)
{
if (sl != ND(OrderStopLoss()))
OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
}
}
}
}
}
//+------------------------------------------------------------------+
double CalcSL(int otype)
{
double sloss = 10000000;
if (otype == OP_BUY)
{
double min;
for (int i=1; i<=SLBars; i++)
{
min = iLow(NULL, 0, i);
if (min < sloss)
sloss = min;
}
sloss = ND(sloss - SLPips*Point);
if ((Ask-sloss)/Point < MinSL)
sloss = ND(Ask - MinSL*Point);
if ((Ask - sloss)/Point > MaxSL)
sloss = ND(Ask - MaxSL*Point);
else
sloss = ND(sloss - SLPips*Point);
return(sloss);
}
else
if (otype == OP_SELL)
{
double max;
sloss = 0;
for (i=1; i<=SLBars; i++)
{
max = iHigh(NULL, 0, i);
if (max > sloss)
sloss = max;
}
if ((sloss - Bid)/Point < MinSL)
sloss = ND(Bid + MinSL*Point);
if ((sloss - Bid)/Point > MaxSL)
sloss = ND(Bid + MaxSL*Point);
else
sloss = ND(sloss + SLPips*Point);
return(sloss);
}
return(0);
}
//+------------------------------------------------------------------+
double GetLots()
{
if (!UseMM) return(FixLot);
double clots;
clots = AccountBalance() / 10000.0 * LotsFor10000;
clots = MathMax(clots, MarketInfo(Symbol(), MODE_MINLOT));
clots = MathMin(clots, MarketInfo(Symbol(), MODE_MAXLOT));
clots = NormalizeDouble(clots, 2);
return (clots);
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int CountTrades()
{
return(CountBuy() + CountSell());
}
//+------------------------------------------------------------------+
double ND(double value)
{
return (NormalizeDouble(value, Digits));
Ordre de présélection OrderSelect (Ticket_first_order, SELECT_BY_TICKET) ;
si(OrderOpenPrice()+10*Point==Ask)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green) ;
Je pense que c'est une branche de travail... oups, désolé.
Bonne nuit à tous ! !! Bonne année !
J'ai décidé de sauvegarder les données de la mémoire tampon dans un fichier. Il n'y a pas de problème pour créer un fichier et y écrire, mais il est difficile de le lire.
Voici un programme d'essai. Aidez-moi, s'il vous plaît. Le problème est que soit il y a une écriture supplémentaire dans le fichier, soit il ne peut pas être lu du fichier. Je veux juste lire une liste d'un fichier dans, par exemple, des tableaux... Si je suis trop paresseux pour écrire s'il vous plaît lien vers du matériel similaire, mais j'ai trouvé seulement tutoriel ... MAIS MIEUX VAUT UNE VARIANTE PRÊTE SUR LE SITE))) :
MERCI D'AVANCE EN TOUT CAS ! !!))
Hélas, ce n'est pas si facile avec l'ENREGISTREMENT dans le fichier!!!((((
Et il semblait... au contraire.
La lecture est réglée grâce aux exemples du tutoriel, mais l'ENREGISTREMENT dans un fichier nécessite un code plus complexe. En bref, je me suis déjà fait avoir... Je n'arrive pas à trouver comment déplacer l'enregistrement en synchronisation avec le fichier Read from.
J'ai corrigé le réglage des niveaux pour les barres de jour et pour l'historique (données initiales tamponnées).
LA QUESTION EST LA MÊME. S'IL VOUS PLAÎT, DONNEZ-MOI UN INDICE, SI C'EST TROP D'ÉCRITURE, SUR LA FAÇON D'ÉCRIRE LES DONNÉES DE LA MÉMOIRE TAMPON DANS UN FICHIER.
CODE MODIFIÉ DU PROGRAMME
TROUVÉ OÙ CHERCHER LES RÉPONSES À MES QUESTIONS... SUR LES OPÉRATIONS SUR LES FICHIERS))) :
DES SCRIPTS POUR LA SORTIE D'INFORMATIONS D'UN FICHIER VERS UN GRAPHIQUE.
HISTOIRE DES CODES MT4 GRATUITS IL EXISTE DES OPTIONS POUR TRANSFÉRER DES DONNÉES VERS UN FICHIER, AINSI QUE L'OPÉRATION INVERSE.
MERCI À TOUS, TOUT LE MONDE CIAO)))) :
Il y a un grand fichier avec des dates sous cette forme "20141231". Pour convertir la chaîne au formatdate, vous avez besoin des points"YYYY.MM.DD" entre l'année, le mois et le chiffre.
Comment cela peut-il être fait ?
Bonjour à tous, je veux que l'Expert Advisor trouve le plus haut ou le plus bas pour 100 barres, comment faire ?
Vous pouvez lire l'aide, tout y est, avec des exemples.