Je n'ai qu'un seul petit souci : toutes les commandes se ferment de temps en temps (c'est-à-dire toutes et toujours !), mais parfois, si j'ouvre 3-4 commandes, seules 2 ou 1 d'entre elles se ferment. J'ai un i-check spécial pour ça, peut-être que vous avez un indice.
Bonjour à tous. Quelqu'un peut-il m'aider à modifier l'EA ? J'ai besoin de supprimer la fonction d'ouverture des ordres, de sorte que l'EA n'ouvre pas les ordres par lui-même, mais fonctionne uniquement avec des ordres ouverts manuellement. Merci d'avance.
Nous prenons un zig-zag et, dans OnCalculace, nous vérifions dans son tampon les valeurs généralement supérieures à 0 (cela signifie que le tampon stocke une valeur extrême, basse ou haute). Nous bouclons dans le tampon en utilisant la fonction
intOnCalculate( constint rates_total, // размер входных таймсерий constint prev_calculated, // обработано баров на предыдущем вызове constdatetime& time[], // Time constdouble& open[], // Open constdouble& high[], // High constdouble& low[], // Low constdouble& close[], // Close constlong& tick_volume[], // Tick Volume constlong& volume[], // Real Volume constint& spread[] // Spread
) {
// код зиг-зага
...
if (prev_calculated > 0) // дальнейший код сработает только один разreturn (rates_total);
// обработка значений зиг-загаfor (int i = rates_total - 1; i >= 0; i--) {
if (zigZag[i] > 0) { // найден экстремум// сохраняем time[i] в любую удобную форму для дальнейшей работы
}
}
return (rates_total);
}
la boucle ci-dessus (de droite à gauche) est destinée à MQL5
pour MQL4 la boucle sera de gauche à droite
for (int i = 0; i < rates_total; i++)
Les exemples ci-dessus donnent d'abord de nouvelles valeurs temporelles. Pour obtenir d'abord les valeurs supérieures dans le temps, utilisez ArraySetAsSeries ou inversez le sens de la boucle.
Les données peuvent être récupérées dans le script en utilisant iCustom, CopyTime ou iTime ainsi que iBars (au lieu de rates_total).
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)));
TrailingOrders();
}
alors l'arrêt et la prise en charge sont instantanément décalés un nombre infini de fois
Sivous n'utilisez pas TrailingOrders() ; alors rien ne se déplace.
Ma tâche n'était pas de créer un mouvement de suivi, mais de déplacer le stop et le takeout une/deux fois.
J'ai "inventé" des choses toute la journée aujourd'hui, jusqu'à présent rien ne fonctionne.
alors l'arrêt et la prise en charge sont instantanément décalés un nombre infini de fois
Sivous n'utilisez pas TrailingOrders() ; alors rien ne se déplace.
Ma tâche n'était pas de créer un mouvement de suivi, mais de déplacer le stop et le takeout une/deux fois.
J'ai "inventé" des choses toute la journée, jusqu'à présent rien ne fonctionne.
Le stop suiveur doit fonctionner si le prix a évolué dans la direction du TP, et il ne doit rien faire si le prix recule. Le niveau SL ne doit aller que dans la direction du TP et ne pas revenir en arrière.
Je vois. Merci.
Je n'ai qu'un seul petit souci : toutes les commandes se ferment de temps en temps (c'est-à-dire toutes et toujours !), mais parfois, si j'ouvre 3-4 commandes, seules 2 ou 1 d'entre elles se ferment. J'ai un i-check spécial pour ça, peut-être que vous avez un indice.
Ne négligez pas les parenthèses, essayez ceci
Comment obtenir les extrêmes de ZZ au format D' 2021.01.05
Pas de script ?
Pas de script ?
Nous prenons un zig-zag et, dans OnCalculace, nous vérifions dans son tampon les valeurs généralement supérieures à 0 (cela signifie que le tampon stocke une valeur extrême, basse ou haute). Nous bouclons dans le tampon en utilisant la fonction
la boucle ci-dessus (de droite à gauche) est destinée à MQL5
pour MQL4 la boucle sera de gauche à droite
Les exemples ci-dessus donnent d'abord de nouvelles valeurs temporelles. Pour obtenir d'abord les valeurs supérieures dans le temps, utilisez ArraySetAsSeries ou inversez le sens de la boucle.
Les données peuvent être récupérées dans le script en utilisant iCustom, CopyTime ou iTime ainsi que iBars (au lieu de rates_total).
Je dois mal comprendre quelque chose.
si je change la fonction dans
alors l'arrêt et la prise en charge sont instantanément décalés un nombre infini de fois
Sivous n'utilisez pas TrailingOrders() ; alors rien ne se déplace.
Ma tâche n'était pas de créer un mouvement de suivi, mais de déplacer le stop et le takeout une/deux fois.
J'ai "inventé" des choses toute la journée aujourd'hui, jusqu'à présent rien ne fonctionne.
Je dois mal comprendre quelque chose.
si je change la fonction dans
alors l'arrêt et la prise en charge sont instantanément décalés un nombre infini de fois
Sivous n'utilisez pas TrailingOrders() ; alors rien ne se déplace.
Ma tâche n'était pas de créer un mouvement de suivi, mais de déplacer le stop et le takeout une/deux fois.
J'ai "inventé" des choses toute la journée, jusqu'à présent rien ne fonctionne.
Le stop suiveur doit fonctionner si le prix a évolué dans la direction du TP, et il ne doit rien faire si le prix recule. Le niveau SL ne doit aller que dans la direction du TP et ne pas revenir en arrière.