Demandez ! - page 98

 

Encore de l'aide

Bonjour à tous,

Je travaille sur un EA depuis ce qui me semble être une éternité. Merci à tous ceux qui ont participé à ce fil de discussion pour toute l'aide qu'ils m'ont apportée.

Je suis maintenant de nouveau bloqué et je cherche plus d'aide. Comme nous le savons tous, la plupart des signaux de type croisement entre les MA et les Stoch ne fonctionnent pas très bien, car ils se croisent souvent à la fin du mouvement.

Ce que j'essaie de faire, c'est d'utiliser le RSI stochastique lorsqu'il franchit la ligne 50, mais seulement sur la barre suivante, une fois que le prix a dépassé le haut ou le bas d'un certain nombre de pips (MinPips). Mon principal problème est que lorsque je suis le croisement, si le prix n'atteint les MinPips que sur les barres suivantes après le croisement, le croisement reste dans la même direction.

J'essaie de joindre une image pour montrer ce que j'essaie de faire.

Le point 1 se trouve à un croisement de vente, mais comme le prix ne dépasse jamais le niveau le plus bas de cette barre, aucune transaction n'est effectuée (en fait, je voudrais que toute transaction précédente reste active).

Le point n°2 est sur un croisement d'achat mais le prix ne dépasse le haut de la barre que sur la 4ème barre après le croisement et doit être pris à ce moment-là. Tous les ordres de vente précédents doivent être fermés à ce moment-là.

J'espère que cela fonctionne car c'est la première fois que je joins une image. Je m'excuse d'avance si je me suis trompé.

Putz

Dossiers :
 

Plus d'informations

Voici ma programmation où CurrDir est la direction actuelle et PrevDir est la direction précédente, donc s'ils ne sont pas égaux, il y a eu un croisement.

Le problème est que s'il n'y a pas de croisement sur la barre actuelle, alors CurrDir et PrevDir deviennent égaux et il ne va jamais au-delà de cette barre pour voir s'il atteint le ValHigh ou le ValLow.

Toute aide sera appréciée.

Putz

if(CurrDir != PrevDir)

{

if(CurrDir == 1)

{

ValHigh = iHigh(Symbol(),Timeframe2,1) + MinPips*Point;

if(Bid >= ValHigh)

{

return(1); //up

}

return (2);

}

if(CurrDir == 2)

{

ValLow = iLow(Symbol(),Timeframe2,1) - MinPips*Point;

if(Ask <= ValLow)

{

return(2);//down

}

return (1);

}

 

J'ai compris... je crois

Je crois que j'ai enfin trouvé la solution à mon problème. Il est maintenant presque 2h30 du matin et je suis épuisé alors je vais vérifier demain...

Putz

 

Existe-t-il un moyen de modifier le format des données du fichier d'exportation MT4 ?

Je cherche le fichier ASCII.csv mais j'ai besoin que les données soient dans le format suivant ;

1) colonnes séparées (seulement besoin de : time, high, low et close)

2) seulement pour les 1000 dernières barres

3) inverser l'ordre (le dernier en haut)

4) le sauvegarder dans un dossier que j'ai déjà sur mon bureau (peut-être une fonction de navigation pour choisir lequel ?)

Merci d'avance à toute personne qui pourrait m'aider.

 

Ajout et suppression d'indicateurs

Est-il possible d'écrire un code dans un EA pour ajouter ou supprimer un indicateur sur la plateforme de trading???

Dave

 

J'ai un gros problème sur la gestion des ordres.....

Mon EA simple entre à X:59...... mais j'ai plusieurs entrées sur le même croisement. Ma question : Est-il possible de vérifier le temps d'entrée des ordres et de le comparer avec le nouvel ordre ?

Je veux une entrée à x:59 seulement avec 1 ordre pour le cross.....

Quelqu'un peut m'aider ?

 
metastock:
J'ai un gros problème sur la gestion des ordres....

Mon entrée EA simple à X:59......mais j'ai plusieurs entrées sur le même croisement. Ma question : Est-il possible de vérifier le temps d'entrée des ordres et de le comparer avec le nouvel ordre ?

Je veux une entrée à x:59 seulement avec 1 ordre pour le cross.....

Quelqu'un peut m'aider ?

Voici ma solution, j'espère que cela pourra aider quelqu'un......

//+------------------------------------------------------------------+

//| Signal Begin(Entry) |

//+------------------------------------------------------------------+

if (Buy1_1 58 && check_buy==0) Order = SIGNAL_BUY ;

si (Sell1_1 > Sell1_2 && Minute()>58 && check_sell==0) Ordre = SIGNAL_VENTE ;

si (Minute()==00) {check_buy=0;}

si (Minute()==00) {check_sell=0;}

//+------------------------------------------------------------------+

//| Fin du signal |

//+------------------------------------------------------------------+

//Achat

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

//if(!IsTrade) {

//Vérifier la marge libre

if (AccountFreeMargin() < (1000 * Lots)) {

Print("Nous n'avons pas d'argent. Marge libre = ", AccountFreeMargin()) ;

return(0) ;

}

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point ; sinon StopLossLevel = 0.0 ;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point ; sinon TakeProfitLevel = 0.0 ;

check_buy=1 ;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy %W(#" + Magic_Number + ")", Magic_Number, 0, DodgerBlue) ;

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Ordre BUY ouvert : ", OrderOpenPrice()) ;

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy") ;

} else {

Print("Erreur lors de l'ouverture de l'ordre BUY : ", GetLastError()) ;

}

}

if (EachTickMode) TickCheck = True ;

if (!EachTickMode) BarCount = Bars ;

retour(0) ;

// }

}

//Vente

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) | (!EachTickMode && (Bars != BarCount)))) {

//if(!IsTrade) {

//Vérifier la marge libre

if (AccountFreeMargin() < (1000 * Lots)) {

Print("Nous n'avons pas d'argent. Marge libre = ", AccountFreeMargin()) ;

return(0) ;

}

if (StopLossMode) StopLossLevel = Bid + StopLoss * Point ; sinon StopLossLevel = 0.0 ;

if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point ; sinon TakeProfitLevel = 0.0 ;

check_sell=1 ;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell %W(#" + Magic_Number + ")", Magic_Number, 0, DeepPink) ;

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Ordre SELL ouvert : ", OrderOpenPrice()) ;

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell") ;

} else {

Print("Erreur lors de l'ouverture d'un ordre de vente : ", GetLastError()) ;

}

}

if (EachTickMode) TickCheck = True ;

if (!EachTickMode) BarCount = Bars ;

return(0) ;

//}

}

if (!EachTickMode) BarCount = Bars ;

return(0) ;

}

//+------------------------------------------------------------------+

 

À Metastock

Je ne peux pas dire ce qui fait que check_buy est vrai.

Pour limiter à un seul ordre ouvert, vous pouvez utiliser, avant l'entrée :

if (OrdersTotal()==0)

Big Be

 

Questions sur les connaissances en matière de codage

QUAND voulez-vous utiliser une variable STATIQUE - quels problèmes peut-elle résoudre ?

QUAND voulez-vous mettre quelque chose dans la section INIT() - quels problèmes cela résout-il ?

Big Be

 

Je ne sais pas si cette question a déjà été posée, mais existe-t-il un moyen de tracer une ligne à l'heure actuelle +1 heure avant et après à un certain prix dans un EA ?