[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 686
Effectuez la manipulation conditionnelle une seule fois au début de la barre.
Vous pouvez également utiliser un indicateur qui est activé lorsqu'un ordre est passé et réinitialisé lorsque les conditions ont changé de manière significative.
Veuillez me dire quoi insérer (et où l'insérer, si possible) dans le code pour que l'EA ouvre une position avec le lot précédent multiplié par 2 si le trade précédent était perdant.
Merci beaucoup.
Je voudrais juste vous poser une question : Que dois-je faire si je veux ouvrir un poste ?
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает флаг убыточности последней позиции. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool isLossLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
int i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderProfit()<0) return(True);
}
return(False);
}
Chers programmateurs. Veuillez me conseiller sur ce qu'il faut insérer (et où l'insérer si possible) dans le code pour que l'EA ouvre une position avec le lot précédent multiplié par 2, si le trade précédent était perdant. Je vous remercie d'avance. Boris.
Boris, ce n'est pas difficile du tout, voici une fonction simple qui met en œuvre le principe de la martingale :
//+------------------------------------------------------------------+double getMartinLot(double lot, double x){ //ФУНКЦИЯ УПРАВЛЕНИЯ ОБъЕМОМ ТОРГОВ ПО СИСТЕМЕ МАРТИНГЕЙЛАstaticdouble balance_before, balance_after; //ДЛЯ ХРАНЕНИЯ СОСТОЯНИЯ БАЛАНСА ДО И ПОСЛЕ СДЕЛОКstaticdouble save_Lot;
balance_after = AccountBalance(); //СОХРАНЕНИЕ ТЕКУЩЕГО СОСТОЯНИЯ БАЛАНСАif(balance_after >= balance_before){ //ПРОВЕРКА ИЗМЕНЕНИЯ БАЛАНСА
save_Lot = lot; //ЕСЛИ ОН НЕ ИЗМЕНИЛСЯ ИЛИ СТАЛ БОЛЬШЕ, ТО СБРАСЫВАЕМ ЛОТ ДО БАЗОВОГО
}else{
save_Lot *= x; //ЕСЛИ СТАЛ МЕНЬШЕ ТО УВЕЛИЧИВАЕМ ЛОТ НА Х РАЗ
}
balance_before = balance_after; //СОХРАНЯЕМ СОСТОЯНИЕ БАЛАНСА ПОСЛЕ РАБОТЫreturn(save_Lot);
}
//+------------------------------------------------------------------+
Passez le volume initial(double lot), et le pas(double x) comme paramètres. Insérez la méthode directement dans OrderSend au lieu du paramètre volume.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
itum:
Comment résoudre ce problème ? Ga
Effectuez la manipulation conditionnelle une seule fois au début de la barre.
Vous pouvez également utiliser un indicateur qui est activé lorsqu'un ordre est passé et réinitialisé lorsque les conditions ont changé de manière significative.
Уважаемые програмисты.
Veuillez me dire quoi insérer (et où l'insérer, si possible) dans le code pour que l'EA ouvre une position avec le lot précédent multiplié par 2 si le trade précédent était perdant.
Merci beaucoup.
Je voudrais juste vous poser une question : Que dois-je faire si je veux ouvrir un poste ?
Roger:
Ищите советники с кодовым названием Мартингейл.
J'en ai cherché un, mais il ne fonctionne pas pour moi.
J'en ai trouvé un qui devrait doubler un lot si une transaction précédente était perdante, mais il ne veut pas fonctionner.
Cela signifie probablement que si l'on vous propose un code ici, vous ne pouvez toujours pas le mettre vous-même dans votre EA, n'est-ce pas ?
Non, cela signifie que l'EA ne fonctionnait pas et que je ne peux pas en trouver une qui fonctionne avec le morceau de code dont j'ai besoin.
Regardez, https://www.mql5.com/ru/forum/104481
Non, cela signifie que l'EA ne fonctionnait pas et que je ne peux pas en trouver une qui fonctionne avec le morceau de code dont j'ai besoin.
Dans les variables globales, définissez la valeur initiale du lot :
Là, nous assignons cette valeur à la variable, qui transmettra la valeur du lot à la fonction d'ouverture de position :
double Lots_New = Lot;Après avoir fermé la position, vérifions les profits/pertes :Et la fonction elle-même, grâce à Igor Kim...
cyclik33:
Chers programmateurs.Veuillez me conseiller sur ce qu'il faut insérer (et où l'insérer si possible) dans le code pour que l'EA ouvre une position avec le lot précédent multiplié par 2, si le trade précédent était perdant.
Je vous remercie d'avance.
Boris.
Boris, ce n'est pas difficile du tout, voici une fonction simple qui met en œuvre le principe de la martingale :
Passez le volume initial(double lot), et le pas(double x) comme paramètres.
Insérez la méthode directement dans OrderSend au lieu du paramètre volume.
Exemple d'un appel de fonction: