Comment coder ? - page 318

 
mladen:
dasio Il boucle déjà sur toutes les heures de la journée en cours. J'ai placé le iClose() et le iOpen() juste comme un exemple d'un appel à partir d'un cadre temporel différent de 1 heure. Si vous voulez accéder à un jour différent du jour actuel, remplacez le "0" de la date startTime=iTime(NULL,PERIOD_D1,0) ; par n'importe quel jour pour lequel vous souhaitez que les données soient collectées.

Merci.

Peut-être que je dois étudier.

Je ne comprends pas comment je peux faire des calculs séparés pour la bougie de 00:00 - 01:00 - 02:00, etc.

Désolé

 

Problèmes de signal

Mladen

Merci, j'ai regardé de près....Im encore expérimenter le code.je vais être notifié quand à travers.

 

dasio

Cette partie

int i=iBarShift(NULL,PERIOD_H1,startTime);

fixe le i au décalage de la première bougie horaire du jour spécifié (c'est pourquoi datetime startTime=iTime(NULL,PERIOD_D1,0) ; a été ajouté - pour connaître l'heure de début de la journée) après cela il va boucler à travers chaque valeur de barre d'une heure jusqu'à ce que le jour reste le même (par exemple le vendredi il ne va pas boucler 24 fois mais 22 ou 23 selon votre courtier)

Si vous avez besoin de sentir un tableau qui doit être fait un peu différemment, dites-le moi si c'était votre idée).

dasio:
Merci.

Peut-être que je dois étudier.

Je ne comprends pas comment je peux faire des calculs séparés pour la bougie de 00:00 - 01:00 - 02:00 etc.

Désolé
 

Comment faire un arrêt expert ?

Bonjour les codeurs,

Comment coder quelques lignes supplémentaires pour qu'un Expert s'arrête après un trade gagnant ?

Les pips sont dans le sac, alors faites les stops Expert...

Merci beaucoup

Tomcat98

 
mladen:
dasio

Cette partie

int i=iBarShift(NULL,PERIOD_H1,startTime);

définit le i au décalage de la première bougie horaire dans le jour spécifié (c'est pourquoi datetime startTime=iTime(NULL,PERIOD_D1,0) ; a été ajouté - pour connaître l'heure de début de la journée) après cela, il va boucler à travers chaque valeur de barre d'une heure jusqu'à ce que le jour reste le même (par exemple, le vendredi, il ne sera pas bouclé 24 fois, mais 22 ou 23 selon votre courtier).

Si vous avez besoin de sentir un tableau qui doit être fait un peu différemment, faites-moi savoir si c'était votre idée.)

Merci,

Je comprends un peu mieux.

Cependant, j'en ai besoin par exemple.

Je dois associer aux variables quelque chose comme ceci :

(bougie 00:00 ; Variable = Close+High

bougie 01:00 ; Variable1 = Close+Open

bougie 02:00 ; Variable2 = high+low ;

Et ainsi de suite pour toutes les bougies de l'heure du jour.

Donc les variables sont définies comment double.

Ensuite, je dois faire quelques calculs mathématiques avec la variable et associer le résultat à un tampon (ce n'est pas un problème).

Le problème pour moi est l'association des variables.....

 

Un autre problème... J'essaie d'étudier la programmation et parfois (seulement parfois ? eheh) j'ai besoin d'aide.

Si j'ai un ea qui place deux ordres en attente comment puis-je coder si je veux que lorsqu'un ordre en attente est ouvert l'autre ordre en attente doit être supprimé ?

Merci de votre aide.

 

Vous devez utiliser 2 boucles :

Tout d'abord, vous devez compter les ordres pour savoir si l'un des ordres en attente est devenu un ordre "régulier" (vous devez donc compter régulièrement les ordres de type OP_BUY ou OP_SELL et, si vous le souhaitez, compter également le reste des ordres).

S'il y a des ordres ouverts, alors vous devez boucler une fois de plus et supprimer tous les ordres qui ne sont pas de type OP_BUY ou OP_SELL.

Le code pourrait être quelque chose comme ceci :

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

}
dasio:
Un autre problème... J'essaie d'étudier la programmation et parfois (seulement parfois ? eheh) j'ai besoin d'aide.

Si j'ai un ea qui place deux ordres en attente comment puis-je coder si je veux que lorsqu'un ordre en attente est ouvert l'autre ordre en attente doit être supprimé ?

Merci pour votre aide.
 

Fermer toutes les positions de vente ou d'achat uniquement (lorsque le profit cible est atteint)

Bonjour à tous... Je suis nouveau dans le monde des changes et des EA. J'ai essayé de trouver un EA pour "fermer toutes les ventes" ou "fermer tous les achats" lorsque l'objectif est atteint mais je n'ai pas trouvé. Je n 'ai trouvé que la fermeture de toutes les ventes ou tous les achats sans le "HIT TARGET ou PROFIT". Est-il possible si quelqu'un pouvait m'aider à créer 1 EA avec les caractéristiques suivantes:-

1) Fermer toutes les ventes si le profit atteint la cible X.

2) Fermer tous les achats si le profit atteint la cible X.

3) Inclure un stop suiveur (si possible, sinon pas de problème).

4) Ne pas fermer si le niveau d'équité ou de marge est inférieur à X % si on ferme tous les achats ou toutes les ventes (si possible, sinon pas de problème).

Note :

Si le numéro 4 est assez difficile à coder, il suffit de coder les numéros 1, 2 et 3 dans un seul EA.

Si le numéro 4 et le numéro 3 sont difficiles à coder, il suffit de créer les numéros 1 et 2 dans un seul EA.

Si cela reste difficile, créez les numéros 1 et 2 séparément.

Je vous serais vraiment reconnaissant si quelqu'un pouvait me fournir les informations ci-dessus.

Merci d'avance

 
pipsmonitor:
Bonjour à tous... Je suis nouveau dans le monde des changes et des EA. J'ai essayé de trouver un EA pour "fermer toutes les ventes" ou "fermer tous les achats" lorsque l'objectif est atteint mais je n'ai pas trouvé. Je n'ai trouvé que la fermeture de toutes les ventes ou tous les achats sans le "HIT TARGET ou PROFIT". Est-il possible que quelqu'un puisse m'aider à créer un EA avec les caractéristiques suivantes : -.

1) Fermez toutes les ventes si le profit atteint l'objectif X.

2) Fermez tous les achats si le profit atteint l'objectif X.

3) Inclure un stop suiveur (si possible, sinon pas de problème).

4) Ne pas fermer si le niveau d'équité ou de marge est inférieur à X % si vous fermez tous les achats ou toutes les ventes (si possible, sinon pas de problème).

Note :

Si le numéro 4 est assez difficile à coder, il suffit de coder les numéros 1, 2 et 3 dans un seul EA.

Si le numéro 4 et le numéro 3 sont difficiles à coder, il suffit de créer les numéros 1 et 2 dans un seul EA.

Si cela reste difficile, créez les numéros 1 et 2 séparément.

Je vous serais vraiment reconnaissant si quelqu'un pouvait me fournir les informations ci-dessus.

Merci d'avance

Bonjour Pipsmonitor,

J'ai peut-être trouvé quelque chose sur cette page https://www.mql5.com/en/forum/181179. J'ai aussi fait une recherche sur Google dans la barre d'en-tête du forum avec l'expression "fermé sur le profit" et j'en ai trouvé quelques-unes que vous pourriez utiliser. Je pourrais aussi essayer de chercher des Eas de suivi, je connais un Ema de suivi et un BBand stop de suivi Ea.

 

Bonjour,

J'essaie de fusionner ces deux codes mais j'ai du mal à le faire.

J'ai besoin que lorsqu'un ordre en attente est exécuté, l'autre doit être annulé.

Merci pour votre disponibilité

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

} [/PHP]

[PHP] extern int Magic = 68415;

extern int Orario_Inizio = 0;

extern int Orario_Fine = 6;

extern int Buffer = 0;

extern double Lotti = 0.1;

extern int TakeProfit = 10;

extern int StopLoss = 50;

double Massimo;

double Minimo;

int BarCount;

int BarStart;

int BarShift;

double MinLot;

double LotSize;

int i;

int ticket;

string Status;

string BuyStatus1;

string SellStatus1;

double Range;

string CommentoRange;

double pipMultiplier = 1;

int init()

{

}

int start()

{

if (Digits==3 || Digits==5)

{pipMultiplier = 10;}

else {pipMultiplier = 1; }

double TakeProfit1 = TakeProfit*Point*pipMultiplier;

double StopLoss1 = StopLoss*Point*pipMultiplier;

double Buffer1 = Buffer*Point*pipMultiplier;

double StopLossPrice = NormalizeDouble(StopLoss1,Digits);

double TakeProfitPrice = NormalizeDouble(TakeProfit1,Digits);

double BufferPrice = NormalizeDouble(Buffer1,Digits);

//CALCOLA LE BARRE DEL RANGE

if(Orario_Inizio>Orario_Fine)

{

BarCount=24+Orario_Fine-Orario_Inizio;

}

if(Orario_Inizio<Orario_Fine)

{

BarCount=Orario_Fine-Orario_Inizio;

}

//CALCOLA IL MASSIMO E IL MINIMO DEL RANGE

if(Hour()>=Orario_Fine)

{

BarStart=Hour()-Orario_Fine;

BarShift=BarStart+BarCount;

Minimo=iLow(NULL,PERIOD_H1,BarStart);

Massimo=0;

for(i=BarStart;i<=BarShift;i++)

{

Massimo=MathMax(Massimo,iHigh(NULL,PERIOD_H1,i));

Minimo=MathMin(Minimo,iLow(NULL,PERIOD_H1,i));

Range=(Massimo-Minimo)/Point;

}

}

else

{

Massimo=0;

Minimo=0;

return(0);

}

//CONTROLLA SE E' L'ORARIO PER POTER TRADARE

if(Hour()==Orario_Fine && OrdersTotal()<2)

{

//CONTROLLA SE IL MASSIMO E' STATO ROTTO. CONDIZIONE BUY

double OpenPriceBuy = NormalizeDouble((Massimo+BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lotti,OpenPriceBuy,0,OpenPriceBuy-StopLossPrice,OpenPriceBuy+TakeProfitPrice,NULL,Magic,0,Blue);

//CONTROLLA SE IL MINIMO E' STATO ROTTO. CONDIZIONE SELL

double OpenPriceSell = NormalizeDouble((Minimo-BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lotti,OpenPriceSell,0,OpenPriceSell+StopLossPrice,OpenPriceSell-TakeProfitPrice,NULL,Magic,0,Red);

if (ticket != -1)

return(0);

}

}