[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 224

 
Il n'y en a pas, le support des anciennes versions a été interrompu.
 

S'il vous plaît aidez-moi à changer la gestion de l'argent dans mon code EA.

Il y a 2 conditions dans mon EA

1 - lot minimum + travail avec lot fixe ou 2 - lot croissant en % des fonds disponibles

Je veux que le lot augmente de 0,01 lot après la 1ère transaction infructueuse, ou de 0,02 lot après la 2ème transaction infructueuse,

et après la 3ème perte, le lot est à nouveau minimal.

J'ai besoin de fonctions que je pourrais coller dans mon EA (de préférence aussi simples que possible)

J'ai essayé de mettre du code à travers include (lot_lib) cela génère beaucoup d'erreurs et ne fonctionne pas.

Merci d'avance pour votre temps !


 

Bonjour !

J'écris du code, le but est de mettre le niveau de stop loss au point le plus bas/haut des trois dernières barres. Voici ce qui en est ressorti :

double FindSL(int mode)
   {
    double sl; //уровень стоплосса
    double buf; //буфер
    double lvl1, lvl2, lvl3; //выборка из 3-х последних баров
    if (mode == 1) //покупали
      {
       lvl1 = iLow(symb, 0, 0);
       lvl2 = iLow(symb, 0, 1);
       lvl2 = iLow(symb, 0, 2);
       buf = MathMin(lvl1, lvl2); //ищем низ
       sl = MathMin(buf, lvl3);
      }
    else if (mode == 2) //продавали
      {
       lvl1 = iHigh(symb, 0, 0);
       lvl2 = iHigh(symb, 0, 1);
       lvl3 = iHigh(symb, 0, 2);
       buf = MathMax(lvl1, lvl2); //ищем вершину
       sl = MathMax(buf, lvl3);
      }
    return (sl);
   }

Les commandes sont ouvertes par le code suivant :

int OpenOrder(int sell_or_buy)                                  //Открытие ордеров
   {
    GetLot();

     if(sell_or_buy==2)                                          //покупка
       {
        StopLoss = FindSL(1);
        OrderSend(symb, OP_BUYSTOP, Lots, iHigh(symb, 0, 1), 0, StopLoss, 
        iHigh(symb, 0, 1)+TakeProfit*Point, "Ichimoku Simple Adviser Trade", 1001, TimeCurrent()+ExpirationTime, Green);    
        return (1);
       }
     else if (sell_or_buy==1)                                    //продажа
       {
        StopLoss = FindSL(2);
        OrderSend(symb, OP_SELLSTOP, Lots, iLow(symb, 0, 1), 0, StopLoss, 
        iLow(symb, 0, 1)-TakeProfit*Point, "Ichimoku Simple Adviser Trade", 1001, TimeCurrent()+ExpirationTime, Red);
        return (1);
       }
     else {return (0);}
   } 

StopLoss est une variable globale.

Lors des tests, il arrive un moment où l'argent s'épuise, d'un seul coup, en une seule transaction. Les lots sont petits, le seul problème est que le stoploss n'est pas défini pour une raison quelconque (égal à 0).

Je n'arrive pas à comprendre quelle est l'erreur.

Regardez le code s'il vous plaît, où pourrais-je faire une erreur ?

 
gogent:

Bonjour !

J'écris du code, le but est de mettre le niveau de stop loss au point le plus bas/haut des trois dernières barres. Voici ce qui en est ressorti :

Les commandes sont ouvertes par le code suivant :

StopLoss est une variable globale.

Lors des tests, il arrive un moment où l'argent s'épuise, d'un seul coup, en une seule transaction. Les lots sont petits, le seul problème est que le stoploss n'est pas défini pour une raison quelconque (égal à 0).

Je n'arrive pas à comprendre quelle est l'erreur.

Regardez le code s'il vous plaît, où pourrais-je faire une erreur ?

Lestop loss est toujours à 0 après les achats.

Motif : la variable lvl3 n'est pas définie (erreur mécanique)

 

Bonjour.

Je m'occupe de l'écart. L'écart est toujours contre moi. Je dois donc l'ajouter à un stop loss et le soustraire à un take profit? Ainsi, si je veux obtenir un bénéfice net de 50 pips (disons, un spread de 3 pips sur une paire de devises), cela signifie que je dois fixer un take profit de 53 pips dans mon ordre. Si j'ai une perte nette de 50 pips, alors un stop loss de 47 pips devrait être donné. Est-ce que j'ai bien compris ?

Merci d'avance !

 
01123456789:

Bonjour.

Je m'occupe de l'écart. L'écart est toujours contre moi. Je dois donc l'ajouter à un stop loss et le soustraire à un take profit ? Ainsi, si je veux obtenir un bénéfice net de 50 pips (disons, un spread de 3 pips sur une paire de devises), cela signifie que je dois fixer un take profit de 53 pips dans mon ordre. Si j'ai une perte nette de 50 pips, alors un stop loss de 47 pips devrait être donné. Est-ce que j'ai bien compris ?

Merci d'avance !


Bonjour !

Si nous parlons de vos projets et de vos attentes, c'est exact.

Si nous parlons de manière formelle, je ne vois pas très bien ce que signifie "dans un ordre ...". " sur l'ordre..."

 

Bonjour, aidez-moi avec une fonction personnalisée.

Je comprends : si la condition est vraie, il retourne pour isitpik- (vrai). La condition est calculée à partir du 0ème tampon où se trouve le calcul de AO. Ou seulement la dernière barre d'i se trouve dans le tampon et à l'occurrence des conditions pour ces critères alors (vrai) est passé à isitpik() ? Et pourquoi assigner le type int à la variable (i) si cela est fait par la condition ci-dessus.


bool isitpik( int i )
   {
   if(ExtBuffer0[i]>0 && ExtBuffer0[i]>ExtBuffer0[i+1] && ExtBuffer0[i]>ExtBuffer0[i-1])return(true);
   if(ExtBuffer0[i]<0 && ExtBuffer0[i]<ExtBuffer0[i+1] && ExtBuffer0[i]<ExtBuffer0[i-1])return(true);
   }
 
tara:


Bonjour !

Si c'est pour parler de vos projets et de vos attentes, c'est bien.

Si nous parlons formellement, je ne comprends pas bien ce que signifie "dans un ordre... spécifier take profit =53 points".

Quand j'ai dit : "Je voulais parler d'un ordre en attente (par exemple, Buy Stop) avec deux colonnes pour Stop Loss et Take Profit. C'est-à-dire que si je veux obtenir un profit de 50 pips, je dois spécifier 53 points de prise de profit dans l'ordre en attente, au lieu de 50 car 3 points supprimeront le spread. N'est-ce pas ?
 
01123456789:
En disant : "Je voulais parler d'un ordre en attente (par exemple, Buy Stop) avec deux colonnes pour Stop Loss et Take Profit. C'est-à-dire que si je veux obtenir un profit de 50 pips, je dois spécifier 53 points de prise de profit dans l'ordre en attente, au lieu de 50 car 3 points supprimeront le spread. N'est-ce pas ?

Dans les ordres, le TP et le SL doivent être spécifiés en prix, et non en points.
 
01123456789:
En disant : "Je voulais parler d'un ordre en attente (par exemple, Buy Stop) avec deux colonnes pour Stop Loss et Take Profit. C'est-à-dire que si je veux obtenir un profit de 50 pips, je dois spécifier 53 points de prise de profit dans l'ordre en attente, au lieu de 50 car 3 points supprimeront le spread. N'est-ce pas ?
Toutes les sociétés de courtage le prévoient dans leur contrat. Les ordres d'achat sont fermés le long de la ligne Ask et les ordres de vente le long de la ligne Bid. Tout ce que vous avez compris correctement. En fonction du spread, vous l'ajouterez à votre profit. Si vous voulez obtenir 50 pips, vous obtiendrez +3 (en fonction du spread de la paire de devises). N'oubliez pas que tous les graphiques sont dessinés par Bid.
Raison: