Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Idée
OK les gars et les filles
J'ai caressé l'idée de créer simplement une CUF (Commonly used functions) - d'après ce que j'ai lu, il n'est pas possible d'appeler des scripts depuis une EA.
Néanmoins, j'ai pensé à une solution de contournement parce que je n'aime pas être obligé de redessiner la roue à chaque fois, et je suis sûr que les choses fonctionneraient mieux de cette façon.
Les scripts, comme tout le monde le sait, se chargent, font leur travail, puis se déchargent et ne se chargent plus jamais, sauf si vous appuyez sur vos touches de raccourci.
C'est un problème majeur que je vois avec tous les EA, ils semblent rester bloqués en attendant qu'une condition de temps ou une condition de "sommeil" soit passée avant de continuer. Cela rend l'annulation et la vente en une fraction de seconde peu probable ce qui est un échec majeur dans des conditions extrêmement volatiles dont vous pourriez tirer une fortune en quelques secondes.
La solution ? Fabriquer un indicateur CUFF qui fonctionne sur des variables globales ? ?? Quelqu'un a-t-il essayé ceci ? L'indicateur fonctionne à chaque tick, donc c'est parfait.
Comment coder une alerte qui enverra des alertes sonores ou électroniques lorsque plusieurs indicateurs et conditions de barre sont remplis ?
Bonjour,
étant un débutant, je voudrais savoir si les fonctions intégrées de metastock : ref() et stochmomentum() sont implémentées par certaines fonctions de metatrader.
thnx
Darian, voir mon exemple de globales ci-dessus. trouvez un script qui envoie des emails / sifflets / fait ce que vous voulez et codez-le dedans. attention, vous devrez prendre en compte le fait qu'ils ne se déclencheront pas tous précisément au même moment, donc vous devrez mettre un délai de quelques secondes / minutes avant de remettre les variables à 0.
avec Global
Puis-je ajouter un GlobalVarible à un indicateur comme ceci ?
if ( trend[2]0 && Volume[0]>1 && !UpTrendAlert)
{
GlobalVariableSet("trend "+Symbol(),1) ;
// Print("UP" + GlobalVariableGet("trend "+Symbol()) ;)
Message = " Buy "+Symbol()+" M "+Period()+" : Signal pour BUY" ;
if ( AlertMode>0 ) Alert (Message) ;
UpTrendAlert=true ; DownTrendAlert=false ;
puis appeler cette GlobalVariable dans un EA avec
int init() {
GlobalVariableDel("trend "+Symbol()) ;
trend = GlobalVariableGet("trend "+Symbol()) ;
Buy = (trend == 1) ;
Vendre = (trend == 2) ;
Toute aide est appréciée
Vous pourriez cependant, si vous négociez plus d'une devise, cela ne fonctionnera pas.
Problèmes avec les tableaux, besoin d'aide !
Bonjour,
J'essaie de créer une fonction qui détermine si un ordre ouvert perd plus d'argent qu'un point de coupure (disons, $-1000).
La fonction est censée stocker le OrderTicket() et le OrderProfit() dans deux tableaux séparés, et sortir avec un retour (1) pour signifier que le seuil a été atteint.
Avant de stocker les valeurs dans ces tableaux, il doit vérifier le tableau OrderTicket() pour voir si cet ordre est déjà déposé.
Si le numéro de l'OrderTicket est déjà stocké dans le tableau, il est censé déterminer si l'ordre a perdu 1000 $ SUPPLÉMENTAIRES, et si c'est le cas : remplacer la valeur dans le tableau OrderProfit() par une nouvelle valeur, et sortir avec return(1) pour signifier qu'un NOUVEAU seuil a été atteint. Si l'ordre n'a pas perdu 1000$ supplémentaires (appelé Cutoff) alors il devrait retourner(0) pour signifier qu'aucun ordre n'a perdu 1000$ supplémentaires.
Je pense avoir réussi à le faire fonctionner (je n'en suis pas sûr ??), mais pour une raison quelconque, le tableau se remplit de beaucoup de valeurs '0' avec les valeurs légitimes. La sortie du tableau est la suivante :
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 431 ResumeArrayPrices[k] = -3042
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 425 ResumeArrayPrices[k] = -3042
ResumeArrayTickets[k] = 386 ResumeArrayPrices[k] = -1008
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 371 ResumeArrayPrices[k] = -12933
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 320 ResumeArrayPrices[k] = -6057
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 249 ResumeArrayPrices[k] = -5076
ResumeArrayTickets[k] = 241 ResumeArrayPrices[k] = -1017
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 230 ResumeArrayPrices[k] = -13122
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 186 ResumeArrayPrices[k] = -4068
ResumeArrayTickets[k] = 128 ResumeArrayPrices[k] = -1008
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
[/code]
The following is my actual code:
[code]
int CheckForResume()
{
ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;
}
int arraycount1 =1;
int arraycount2 =1;
bool found = false;
int k;
for (int i = 0; i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))
{
if (OrderProfit()< Cutoff)
{
for (k=0; k<ArraySize(ResumeArrayTickets); k++)
{
if ((ResumeArrayTickets[k] == OrderTicket()) && ResumeArrayTickets[k] !=0)
{
found = true;
if (ResumeArrayPrices[k] + Cutoff < OrderProfit())
{
return (0);
}
else
{
Print ("ELSE");
arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1);
arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1);
ResumeArrayTickets[k] = OrderTicket();
ResumeArrayPrices[k] = OrderProfit();
return (1);
}
}
}
if (found == false)
{
arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1)'
arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1);
ResumeArrayTickets[k] = OrderTicket();
ResumeArrayPrices[k] = OrderProfit();
return (1);
}
}
}
return (0);
}
}
Rafraîchir un EA une fois par barre
Bonjour, existe-t-il un moyen de rafraîchir une EA afin qu'elle réagisse comme la première fois qu'elle est initialisée ? (Comme un redémarrage) Cela doit être fait une fois par barre. Par exemple, une fois toutes les 30 minutes.
RefreshRates() et WindowRedraw() ne le font pas correctement.
J'aimerais également conserver quelques variables et ne pas perdre les données.
Existe-t-il un moyen de le faire ?
J'aimerais également pouvoir le faire pour un indicateur.
Merci beaucoup.
Aide à la programmation
Bonjour à tous,
Je travaille sur la modification d'un compteur de force de devise pour montrer la force de la devise basée sur le temps du graphique. Actuellement, le code utilisé est le suivant :
aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today
aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid
aAsk = MarketInfo(mySymbol,MODE_ASK);Je comprends que MODE_HIGH et MODE_LOW obtiennent les hauts et bas du jour. Comment pourrais-je obtenir le haut et le bas de l'intervalle de temps actuel du graphique à la place ?
Merci !
P.S. Je ne suis pas un programmeur, alors utilisez des mots courts s'il vous plaît :)
Consultez le manuel d'aide pour les fonctions iHigh et iLow.
bonne chance
Lux