mais c'est idéalement "ce nombre de bars devrait se trouver entre 9h00 et 22h00".
Plus l'horizon temporel est petit, plus l'erreur est grande, en réalité elle est presque toujours moindre. Vous ne pouvez pas utiliser l'historique pour calculer "la prochaine session toutes les N barres".
C'est beaucoup plus simple...
intBars(
string symbol_name, // имя символа ENUM_TIMEFRAMES timeframe, // период datetime start_time, // с какой даты datetime stop_time // по какую дату
);
voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif(CountOrders()==0)
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy() == true)
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell() == true)
vOrderOpenSell();
}
// Пишем какой лот текущий и какой следующий
DrawLABEL("nextlot" ,1,5,0,Color1(),StringConcatenate("CURRENT LOT: ",DoubleToStr(LOT(),2)));
DrawLABEL("currentlot",1,5,0,Color2(),StringConcatenate("NEXT LOT: ",DoubleToStr(LOT(),2)));
DrawLABEL("lab_Take" ,1,5,0,Color(GetProfitFromStart()>0,Lime,Red),StringConcatenate("Profit: ",DoubleToStr(GetProfitFromStart(),2)));
TrailingOrders();
}
void OnTick est constitué comme ci-dessus.
Comment faire en sorte que le compteur de profit se remette à 0.0 lorsque les conditions sont remplies :
si(CountOrders()==0) && (GetProfitFromStart()>0
c'est-à-dire que tous les ordres sont fermés et que le profit total lors de la fermeture du dernier ordre était >0 ?
même en 4, il est préférabled'"ouvrir d'abord, modifier ensuite".
Tout le monde ne vous permet pas d'ouvrir sur le marché avec un Stop Loss en même temps.
D'ailleurs, le stop loss ne se produit pas partout. Si vous voulez négocier avec un ordre stop-loss, vous devez le vérifier sur le serveur du courtier, c'est son service personnel (crédit, risque, gains), pas là où vous le pensez, il n'y a pas de canal de négociation des ordres stop-loss.
Merci, oui, même la démo sur différents courtiers montre des conditions trop différentes.
L'EA a une fonction de comptage intégrée pour le profit actuel :
void OnTick est constitué comme ci-dessus.
Comment faire en sorte que le compteur de profit se remette à 0.0 lorsque les conditions sont remplies :
si(CountOrders()==0) && (GetProfitFromStart()>0
C'est-à-dire que tous les ordres sont fermés et que le profit total lors de la fermeture du dernier ordre était >0 ?
Cette tâche n'est pas tout à fait claire. À chaque fois, la fonction de calcul commence à parcourir les ordres/positions et résume les bénéfices à partir de zéro.
double lp=0,cp=0;
Qu'est-ce que tu veux mettre à zéro ? Si vous n'avez pas de positions/ordres de marché ouverts, la fonction de comptage retournera zéro. Il se remettra à zéro tout seul)))
Recherche d'ordres fermés avec des retours négatifs. Par les totaux il manque, je n'obtiens pas le résultat de tous les ordres négatifs.
J'essaie d'apprendre à écrire.
En un coup d'œil rapide, je vois que vous regardez les positions depuis la fin et en même temps, vous écrivez l'heure de clôture dans la variable. Il se peut que vous ayez capturé l'heure de la dernière position fermée et que la condition suivante ne soit plus vraie :
OrderCloseTime()>=time
car d'autres positions ont des temps de fermeture inférieurs. Tout cela dépend du tri, mais dans le tri standard, c'est le problème.
Corrigez également cette condition
(OrderType() == OP_BUY || OP_SELL)
à
(OrderType() == OP_BUY || OrderType() == OP_SELL)
Si nous prenons une position dans l'historique, OrderProfit() stockera déjà le résultat final avec les swaps et la commission. Dans les postes ouverts - non, tout doit être résumé. Mais ce n'est pas certain, vérifiez-le.
En un coup d'œil rapide, je vois que vous examinez les positions depuis la fin et que vous écrivez l'heure de clôture dans la variable. Il se peut que vous ayez capturé l'heure de la dernière position fermée et que la condition suivante ne soit plus vraie :
car d'autres positions ont des temps de fermeture inférieurs. Tout cela dépend du tri, mais dans le tri standard, c'est le problème.
Corrigez également cette condition
à
Si nous prenons une position dans l'historique, OrderProfit() stockera déjà le résultat final avec les swaps et la commission. Dans les postes ouverts - non, tout doit être résumé. Mais ce n'est pas exact, veuillez vérifier.
Merci. Cela fonctionne bien.
double Minus_profit(){
time=TimeCurrent();
for (int i=0; i<OrdersHistoryTotal(); i++){
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
if (OrderSymbol() == Symbol() && OrderMagicNumber()==Magic){
if (OrderType() == OP_BUY || OrderType() ==OP_SELL){
if (OrderCloseTime()>=time){
if (OrderProfit()+OrderSwap()+OrderCommission()<=0){
time=OrderCloseTime();
profit+=OrderProfit();swap+=OrderSwap(); ;comis+=OrderCommission();
result=profit+swap+comis;
}}}}}}return(result);
}
De plus, lorsque nous rencontrons un ordre avec un profit positif, nous devons réinitialiser le résultat et rechercher les ordres négatifs.
J'interviens :)
Il existe un indice DAX30 = coté de 9 à 22
Comment savoir combien de barres il y a dans une session sur le Timeframe M15, H1 etc.
(22*3600-9*3600)/PeriodSeconds(M15)
mais c'est idéalement "ce nombre de bars devrait se trouver entre 9h00 et 22h00".
Plus l'horizon temporel est petit, plus l'erreur est grande, en réalité elle est presque toujours moindre. Vous ne pouvez pas utiliser l'historique pour calculer "la prochaine session toutes les N barres".
C'est beaucoup plus simple...
Bonjour à tous.
J'ai besoin de votre aide.
L'EA a une fonction de comptage intégrée pour le profit actuel :
void OnTick est constitué comme ci-dessus.
Comment faire en sorte que le compteur de profit se remette à 0.0 lorsque les conditions sont remplies :
si(CountOrders()==0) && (GetProfitFromStart()>0
c'est-à-dire que tous les ordres sont fermés et que le profit total lors de la fermeture du dernier ordre était >0 ?
Installé MT4. Ne sauvegarde pas les guillemets après la fermeture du terminal - en charge un nouveau à chaque fois.
même en 4, il est préférabled'"ouvrir d'abord, modifier ensuite".
Tout le monde ne vous permet pas d'ouvrir sur le marché avec un Stop Loss en même temps.
D'ailleurs, le stop loss ne se produit pas partout. Si vous voulez négocier avec un ordre stop-loss, vous devez le vérifier sur le serveur du courtier, c'est son service personnel (crédit, risque, gains), pas là où vous le pensez, il n'y a pas de canal de négociation des ordres stop-loss.
Merci, oui, même la démo sur différents courtiers montre des conditions trop différentes.
Bonjour à tous.
J'ai besoin de votre aide.
L'EA a une fonction de comptage intégrée pour le profit actuel :
void OnTick est constitué comme ci-dessus.
Comment faire en sorte que le compteur de profit se remette à 0.0 lorsque les conditions sont remplies :
si(CountOrders()==0) && (GetProfitFromStart()>0
C'est-à-dire que tous les ordres sont fermés et que le profit total lors de la fermeture du dernier ordre était >0 ?
Cette tâche n'est pas tout à fait claire. À chaque fois, la fonction de calcul commence à parcourir les ordres/positions et résume les bénéfices à partir de zéro.
Qu'est-ce que tu veux mettre à zéro ? Si vous n'avez pas de positions/ordres de marché ouverts, la fonction de comptage retournera zéro. Il se remettra à zéro tout seul)))
Bonjour à tous.
J'ai besoin de votre aide.
Comment faire en sorte que le compteur de profit se remette à 0.0 lorsque les conditions sont remplies :
c'est-à-dire que tous les ordres ont été fermés et que le profit total à la fermeture du dernier ordre était >0 ???
Qu'est-ce qui ne fonctionne pas exactement ?
Bon après-midi. Aidez-moi, s'il vous plaît.
Recherche d'ordres fermés avec des retours négatifs.
Par les totaux il manque, je n'obtiens pas le résultat de tous les ordres négatifs.
J'apprends à écrire.
Bon après-midi. Aidez-moi, s'il vous plaît.
Recherche d'ordres fermés avec des retours négatifs.
Par les totaux il manque, je n'obtiens pas le résultat de tous les ordres négatifs.
J'essaie d'apprendre à écrire.
En un coup d'œil rapide, je vois que vous regardez les positions depuis la fin et en même temps, vous écrivez l'heure de clôture dans la variable. Il se peut que vous ayez capturé l'heure de la dernière position fermée et que la condition suivante ne soit plus vraie :
car d'autres positions ont des temps de fermeture inférieurs. Tout cela dépend du tri, mais dans le tri standard, c'est le problème.
Corrigez également cette condition
à
Si nous prenons une position dans l'historique, OrderProfit() stockera déjà le résultat final avec les swaps et la commission. Dans les postes ouverts - non, tout doit être résumé. Mais ce n'est pas certain, vérifiez-le.
En un coup d'œil rapide, je vois que vous examinez les positions depuis la fin et que vous écrivez l'heure de clôture dans la variable. Il se peut que vous ayez capturé l'heure de la dernière position fermée et que la condition suivante ne soit plus vraie :
car d'autres positions ont des temps de fermeture inférieurs. Tout cela dépend du tri, mais dans le tri standard, c'est le problème.
Corrigez également cette condition
à
Si nous prenons une position dans l'historique, OrderProfit() stockera déjà le résultat final avec les swaps et la commission. Dans les postes ouverts - non, tout doit être résumé. Mais ce n'est pas exact, veuillez vérifier.
Merci. Cela fonctionne bien.
De plus, lorsque nous rencontrons un ordre avec un profit positif, nous devons réinitialiser le résultat et rechercher les ordres négatifs.
Bon après-midi. Aidez-moi, s'il vous plaît.
Recherche d'ordres fermés avec des retours négatifs.
Par les totaux il manque, je n'obtiens pas le résultat de tous les ordres négatifs.
J'apprends à écrire.
Je recommande l'utilisation d'un débogueur pour ce genre de situation.