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
Le code ci-dessous fonctionne parfaitement après que vous m'ayez aidé, merci mec.
Et j'ai renommé comme vous l'avez dit, cela fonctionne bien, mais je me demande si je fais quelque chose de mal ?
(je suis juste inquiet)
S'inquiéter de savoir si votre code va fonctionner est très normal (c'est même sain). Il est fréquent de voir du code qui se compile mais qui ne fait pas ce que l'on veut (à cause d'une erreur humaine et/ou d'un manque de connaissances).
Le meilleur moyen est de prendre l'habitude d'imprimer les variables et de vérifier les codes de retour. Une fois que vous avez testé, vous pouvez supprimer les instructions d'impression.
En utilisant votre extrait de code ci-dessus, vous pourriez ajouter une simple Print("Valeur SL : "+sl) et ensuite vérifier votre journal d'expert pour voir si les valeurs sont celles que vous attendez.
C'est simple, si ça marche comme prévu, vous ne faites rien de mal, sinon ça ne marche tout simplement pas.
#Checkmark - Fermé
Oui ! Je reconnais que cette étiquette bitmap m'a déjà pris beaucoup de temps. Finalement, j'ai obtenu ce que je voulais...
Bien sûr, grand homme, merci pour votre aide.
Je résous mon problème comme le code ci-dessous.
{
// Sell set Stop Loss with bitmap label
// when bitmap label shows - ON
if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == true )
{
sl = Bid + points_to_change( stoploss * 10 );
Print( " | TRUE : Active | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl );
}
// when bitmap label shows - OFF
if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == false )
{
sl = 0;
Print( " | FALSE : Inactive | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl );
}
// call your stop loss 'sl'
ticket = OrderSend( ..., sl, ... );
// sounds
if ( ticket > 0 )
{ PlaySound( "ok.wav" ); } else
{ PlaySound( "timeout.wav" ); }
return;
}
Le meilleur moyen est de prendre l'habitude d'imprimer les variables et de vérifier les codes de retour. Une fois que vous avez testé, vous pouvez supprimer les instructions d'impression.
En utilisant votre extrait de code ci-dessus, vous pourriez ajouter une simple Print("Valeur SL : "+sl) et ensuite vérifier votre journal Expert pour voir si les valeurs sont celles que vous attendez.
Je l'utilise déjà, mais parfois je doute de mon code car si vous vérifiez monproblème de#Checkmark , j'espère que vous me comprendrez mieux.
En tout cas, merci pour votre temps.
Pourquoi multipliez-vous par 10 ? Si le stoploss est en pips, convertissez-le via pips_to_change pour que cela fonctionne sur les brokers à 4 chiffres.
Oh ! Ouais mec, bonne question, j'ai déjà changé. Merci pour votre attention.
#Stop Loss /Take Profit- Fermé
Merci pour vos commentaires plus clairs Marco.
Merci spécial à @Marco vd HeijdenJe vous souhaite le meilleur.
#Ctrl + Bouton de la souris - Ouvrir
J'ai passé quelques heures, comment puis-je trouver une bonne documentation à ce sujet, et je ne peux pas obtenir de bonnes informations et la documentation pour elle.
J'ai juste besoin que lorsque je clique sur'Souris gauche + Ctrl', la taille du lot augmente de 0,1. (normalement, elle augmente de 0,01 ).
Je souhaite trouver de la documentation et des articles avec des exemples à ce sujet.
Merci d'avance.
#Ctrl + Bouton de la souris - Ouvrir
J'ai passé quelques heures à chercher comment trouver une bonne documentation à ce sujet, et je n'ai pas trouvé de bonnes informations ni de documentation.
J'ai juste besoin que lorsque je clique sur'Souris gauche + Ctrl', la taille du lot augmente de 0,1. (normalement, elle augmente de 0,01 ).
Je veux trouver de la documentation et des articles avec des exemples à ce sujet.
Merci d'avance.
Je ne connais pas de moyen facile de capturer les combinaisons de touches. Il serait préférable d'avoir un deuxième bouton à cliquer si vous voulez augmenter de 0,1 plutôt que de 0,01.
Néanmoins, vous pouvez essayer ce qui suit :
Vérifiez si le dernier événement était une frappe de touche CTRL.
Si c'est le cas, vérifiez si cet événement est un clic de souris.
Mais cette approche pose quelques problèmes :
1. Si un autre événement graphique se produit entre la frappe et le clic de la souris, elle échoue.
2. Vous obtiendrez un dépassement causé par le délai entre le clic de la souris et le relâchement de la touche CTRL. Les solutions de contournement introduisent leurs propres problèmes.
Peut-être d'autres personnes auront-elles de meilleures idées.
const long &lparam,
const double &dparam,
const string &sparam)
{
static bool wasCTRL=false;
if(wasCTRL && id==CHARTEVENT_CLICK) Print("CTRL+CLICK detected");
wasCTRL=(id==CHARTEVENT_KEYDOWN && lparam==CTRL);
}
//| keydown.mq4 |
//| Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
bool ctrl_click;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if(id==CHARTEVENT_CLICK)
{
//Print("CLICK");
ctrl_click=1;
}
if(id==CHARTEVENT_KEYDOWN)
{
//Print(lparam);// print to identify keycode
if(lparam==17) // ctrl key
{
if(ctrl_click==1)// if mouse click
{
//Do Something when CTRL (keycode 17) is pressed
Print("CTRL+CLICK");
ctrl_click=0; // reset
}
}
ctrl_click=0; // reset if not ctrl
}
}
//+------------------------------------------------------------------+
Je pense que oui.
C'est légèrement différent.