Comment coder ? - page 46

 
antone:
Quelqu'un peut-il m'aider ? Par exemple, il ne négocie qu'un seul ordre entre 5 et 10 heures du matin, mais il peut en négocier un autre à un autre moment.

C'est très simple, vous devez vérifier l'heure d'ouverture du dernier ordre dans l'historique et ensuite vérifier le jour avec la fonction TimeDay. Si c'est aujourd'hui, il ne faut pas négocier.

 
Kalenzo:
C'est très simple, vous devez vérifier l'heure d'ouverture du dernier ordre dans l'historique et ensuite vérifier le jour avec la fonction TimeDay. S'il s'agit d'aujourd'hui, n'effectuez pas de transactions.

pouvez-vous me donner un script simple sur la façon de les utiliser ? je ne suis pas un programmeur, désolé

merci !

 

1 trailing stop / plusieurs ordres

J'essaie de créer un EA qui modifiera le stoploss de tous les ordres ouverts pour qu'il soit le même que le stoploss actuel, afin que tous les ordres soient fermés au même niveau.

extern int profit = 100;

extern int stop = 20;

int start()

{

int i, HstTotal=OrdersHistoryTotal();

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

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;

OrderModify(i,OrderOpenPrice(),Bid-Point*stop,profit,0,Green);

}

}

 

Utilisez plutôtOrdersTotal() et MODE_TRADES

 
 
Kalenzo:
C'est très simple, vous devez vérifier l'heure d'ouverture du dernier ordre dans l'historique et ensuite vérifier le jour avec la fonction TimeDay. Si c'est aujourd'hui, n'effectuez pas de transaction.

for(int k=0;k<OrdersTotal();k++)

{

OrderSelect(k,SELECT_BY_POS,MODE_TRADES ;

if(OrderSymbol()== "GBPUSD" && OrderMagicNumber()== Magic_Number)

{

if(OrderOpenTime() != TimeCurrent ()) {Trade = true;}

if(OrderOpenTime() == TimeCurrent ()) {Trade = false;}

}

}

Qu'est-ce que j'ai fait de mal ?

 

Corrections en rouge ci-dessous.

Robert

antone:

for(int k=0;k<OrdersTotal();k++)

{

OrderSelect(k,SELECT_BY_POS,MODE_TRADES)

if(OrderSymbol()== Symbol() && OrderMagicNumber()== Magic_Number)

{

if(TimeDay(OrderOpenTime())!= Day()) {Trade = true;}

if(TimeDay(OrderOpenTime()) == Day() ) {Trade = false;}

}

}

Le même type de code peut être utilisé pour vérifier si l'heure d'ouverture se situe entre deux heures ou même à la minute près comme 11:45 pour empêcher une nouvelle transaction.

int openHour = TimeHour(OrderOpenTime()) ;

si (openHour > 10 && openHour < 13) Trade = false ;

si (openHour = 13) Trade = true ;

Qu'est-ce que j'ai fait de mal ? Aidez-moi s'il vous plaît.
 

ATTN Programmateurs - Problème avec les nouveaux prix à 6 chiffres

À tous les programmeurs.

Il a été porté à mon attention qu'il y a un problème avec certains courtiers utilisant une décimale supplémentaire pour les prix. Cela pose un problème partout où le point est utilisé dans un calcul pour des choses comme StopLoss, TakeProfit ou Breakout Levels.

Il existe une solution simple.

J'utilise maintenant la fonction suivante et je remplace toutes les références à Point par myPoint.

Je déclare une variable au début de l'EA.

double myPoint ;

puis dans init j'utilise la fonction pour définir la valeur.

init()

{

myPoint = SetPoint() ;

}

Puis la fonction.

// Fixe la valeur du Point à 2 ou 4 décimales

// pour gérer les courtiers qui utilisent 3 et 5 décimales

double SetPoint()

{

double mPoint ;

si (Chiffres < 4)

mPoint = 0,01 ;

sinon

mPoint = 0,0001 ;

retour(mPoint) ;

}

Il y aurait également un problème avec certains indicateurs qui utilisent Point pour déterminer où tracer les lignes ou la taille des histogrammes.

Veuillez transmettre ce message à tout forum ou groupe où les programmeurs ont besoin de cette information.

J'ai déjà envoyé un message au groupe Yahoo MTE & I.

J'espère que cela vous aidera.

Robert

 

Bonjour

J'ai besoin d'aide, je n'arrive pas à trouver comment sortir d'une position après un certain nombre de barres/jours. Par exemple, je suis long le lundi et le système sort à la clôture 5 barres/jours plus tard.

Toute aide serait la bienvenue.

Merci

Beno

 

Beno,

Vous pouvez utiliser un code similaire à celui du post ci-dessus pour ne pas négocier. Il suffit de vérifier si le jour actuel est le nombre de jours plus tard pour la fermeture à partir du jour d'ouverture. Le code peut être modifié pour utiliser les heures ou les minutes également.

Une autre solution serait de calculer l'heure de clôture de la transaction comme exit_time lorsque la transaction est ouverte. Ensuite, pour sortir, il suffit de vérifier l'exit_time dans votre code check exit.

Vous devez utiliser la formule appropriée pour ajouter la valeur correcte à l'heure d'ouverture afin d'obtenir l'heure de clôture. Il s'agit du nombre de minutes par barre * le nombre de barres ultérieures à la clôture ajouté à l'OrderOpenTime().

J'espère que cela vous aidera.

Robert

Beno:
Bonne journée

J'ai besoin d'aide, je n'arrive pas à trouver comment sortir d'une position après un certain nombre de barres/jours. Par exemple, je suis long le lundi et le système sort à la clôture 5 barres/jours plus tard.

Toute aide serait la bienvenue.

Merci

Beno