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
pour CEHansen
Bonjour,
A l'intérieur que la pour où vous prenez les barres une par une vous devez utiliser la variable i partout au lieu de Current. Current n'est pas initialisé, il est donc égal à 0.
La façon la plus simple de voir cela est de mettre à l'intérieur du for au début ceci :
Current = i ;
Les flèches apparaîtront. N'oubliez pas non plus d'utiliser une valeur plus grande pour Sto_Lookback. Peut-être 100, 1000 ou quelque chose comme ça.
P.S Utilisez pour faire le for comme ceci c'est mieux de mon point de vue.
for (int i = Sto_Lookback ; i >0 ; i--){
...
}
Parce que c'est la façon normale pour les "barres" de venir 0 est le dernier. Cela vous éviterait d'autres problèmes plus tard. (par exemple - repeindre). C'est juste une idée.
Merci,
Victor
Oscillateur de volume Klinger
Je me suis renseigné sur cet indicateur, qui semble intéressant.
Cependant, il repose en partie sur le volume, qui n'est pas vraiment disponible sur le Forex.
Big Be
Erreur 1 de modification d' ordre
Lors de mon backtesting, je reçois de temps en temps le message "OrderModify error1". D'après ce que je peux comprendre, cela signifie qu'il n'y a pas de changement, c'est-à-dire que les arguments de OrderModify() sont les mêmes que les paramètres correspondants de l'ordre modifié.
Cela pourrait être dû à un problème de double comparaison.
La question est de savoir comment je peux résoudre ce problème.
Voici la zone qui, selon moi, est à l'origine du problème :
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen) ;
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy") ;
if (!EachTickMode) BarCount = Bars ;
IsTrade = False ;
continuer ;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red) ;
if (!EachTickMode) BarCount = Bars ;
continuer ;
}
}
}
/Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen) ;
if (!EachTickMode) BarCount = Bars ;
continuer ;
}
}
}
} else {
//Fermeture
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) | (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange) ;
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell") ;
if (!EachTickMode) BarCount = Bars ;
IsTrade = False ;
continuer ;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red) ;
if (!EachTickMode) BarCount = Bars ;
continuer ;
}
}
}
/Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange) ;
if (!EachTickMode) BarCount = Bars ;
continuer ;
}
}
}
}
}
}
Question sur le code
Que signifie i++ ou i-- en codage ?
Ex : for (int i=5 ; i>0 ; i--)
Que signifie i++ ou i-- en codage ? par exemple : for (int i=5 ; i>0 ; i--)
Il s'agit d'un raccourci dans les langages basés sur le C pour incrémenter ou décrémenter une variable basée sur un nombre.
Par exemple, en Visual Basic, vous devriez écrire.
i = i + 1 pour incrémenter la variable i.
En revanche, en C, vous pouvez simplement écrire i++.
J'espère que cela vous aidera.
Hiachiever
C'est un raccourci dans le langage C pour incrémenter ou décrémenter une variable basée sur un nombre.
Par exemple, en Visual Basic, vous devriez écrire.
i = i + 1 pour incrémenter la variable i.
En revanche, en C, vous pouvez simplement écrire i++.
J'espère que cela vous aidera.
HiachieverMerci,
Donc si je mets if (int i=6 ; i>0 ; i++)
cela va "boucler" ou continuer à vérifier la valeur jusqu'à 6 maximum ? je ne suis pas sûr que ce soit correct. Et si j'utilise i-- ? Veuillez clarifier.
Merci,
donc si je mets if (int i=6 ; i>0 ; i++)
il va "boucler" ou continuer à vérifier la valeur jusqu'à 6 maximum ? je ne suis pas sûr que ce soit correct. Et si j'utilise i-- ? Merci de clarifierMatrixebiz,
si tu veux commencer à 6 et revenir à 0 alors utilise i--
(int i=6 ; i>0 ; i--)
Cela commencera à 6, décrémentera de 1 à chaque boucle tant que I > 0.
Si vous voulez inclure 0, utilisez i>=0.
Merci,
Hiachiever
Matrixebiz,
si vous voulez commencer à 6 et revenir à 0, utilisez i--
(int i=6 ; i>0 ; i--)
Cela commencera à 6, décrémentera de 1 à chaque boucle aussi longtemps que i > 0.
Si vous voulez inclure 0, utilisez i>=0.
A la vôtre,
HiachieverOk, donc si je mets if (int i=6 ; i>0 ; i++)
alors il commencera à 6, puis recommencera à incrémenter 1, 2, 3 ... 6, correct ?
Ok, donc si je mets if (int i=6 ; i>0 ; i++) alors il commencera à 6 puis, recommencera à incrémenter de 1, 2, 3 ... 6, correct ?
Pas tout à fait si ce que vous voulez faire ici est de finir à 6.
Dans ce cas, le code serait le suivant
Pour (int i=1 ; i<=6 ; i++)
Cela commencera à 1 et finira à 6 en incrémentant de 1 à chaque boucle.
Merci,
Hiachiever