Pourriez-vous me donner un code pour qu'un EA ferme une position après 5-6 heures ? Ou donnez-moi un lien.
Si vous êtes intéressé, essayez vous-même. Tout d'abord, à l'aide de la fonction PositionSelect(), vérifiez si une position est ouverte. Si c'est le cas, découvrez l'heure d'ouverture de la position en utilisant PositionGetInteger(POSITION_TIME) et vérifiez votre condition de 5-6 heures. Lorsqu'il est temps de fermer la position, vous découvrez le type de position (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) et son volume PositionGetDouble(POSITION_VOLUME ).Ensuite, vous passez un ordre opposé avec le même volume. Vous pouvez voir un exemple de la méthode de fermeture de position dans MQL5\Include\Trade\Trade .mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX).
joo: Merci, cela semble être ce dont nous avons besoin.
Pas vraiment.
Pour obtenir l'événement "clic de souris", il faut utiliser OnChartEvent(), mais il ne peut pas être utilisé dans les scripts, que dois-je faire ? Il n'y a donc pas de fonction universelle ?
Pour obtenir l'événement "clic de souris", il faut utiliser OnChartEvent(), mais il ne peut pas être utilisé dans les scripts, que dois-je faire ? Il n'y a donc pas de fonction universelle ?
Utilisez ensuite GetKeyState + GetPosition + les coordonnées connues des objets graphiques.
sergeev: Utilisez ensuite GetKeyState + GetPosition + les coordonnées connues des objets graphiques.
VinApi ?
C'est tout, j'ai perdu l'envie de faire une fonction universelle pour naviguer et sélectionner un fichier dans une liste (une sorte de mini gestionnaire de fichiers). :(
C'est tout, j'ai perdu l'envie de faire une fonction universelle pour naviguer et sélectionner un fichier dans une liste (une sorte de mini gestionnaire de fichiers). :(
pourquoi un script ? comment voulez-vous faire une fonction et attendre le choix de l'utilisateur pour plus d'un tick ?
Vous pouvez voir un exemple de méthode declôture d'une position dans MQL5\Include\Trade\Trade.mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX).
Merci.
Mais jusqu'à présent, je ne suis pas en mesure de comprendre les cours, bien que ce que j'ai soit généralement dû au fait que j'ai vu quelque part et que j'ai compris.
Mais avec les cours, je n'arrive pas encore à m'y retrouver, même si ce que j'obtiens est généralement au prix d'une vision quelque part et d'un effort de compréhension.
Eh bien, toute méthode de classe est juste du code ordinaire. Essayez d'analyser ce code ici :
MqlTradeRequest m_request={0}; // request data
MqlTradeResult m_result={0}; // result data
MqlTradeCheckResult m_check_result={0}; // result check data
bool partial_close=false;
int retry_count =10;
uint retcode =TRADE_RETCODE_REJECT;
do
{
//--- checkingif(PositionSelect(symbol))
{
if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
//--- prepare request for close BUY position
m_request.type =ORDER_TYPE_SELL;
m_request.price=SymbolInfoDouble(symbol,SYMBOL_BID);
}
else
{
//--- prepare request for close SELL position
m_request.type =ORDER_TYPE_BUY;
m_request.price=SymbolInfoDouble(symbol,SYMBOL_ASK);
}
}
else
{
//--- position not found
m_result.retcode=retcode;
return(false);
}
//--- setting request
m_request.action =TRADE_ACTION_DEAL;
m_request.symbol =symbol;
m_request.deviation =(deviation==ULONG_MAX) ? m_deviation : deviation;
m_request.type_filling=m_type_filling;
m_request.volume =PositionGetDouble(POSITION_VOLUME);
//--- check volumedouble max_volume=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);
if(m_request.volume>max_volume)
{
m_request.volume=max_volume;
partial_close=true;
}
else
partial_close=false;
//--- order checkif(!OrderCheck(m_request,m_check_result))
{
//--- copy return code
m_result.retcode=m_check_result.retcode;
return(false);
}
//--- order sendif(!OrderSend(m_request,m_result))
{
if(--retry_count!=0) continue;
if(retcode==TRADE_RETCODE_DONE_PARTIAL)
m_result.retcode=retcode;
return(false);
}
retcode=TRADE_RETCODE_DONE_PARTIAL;
if(partial_close) Sleep(1000);
}
while(partial_close);
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Pourriez-vous me donner un code pour qu'un EA ferme une position après 5-6 heures ? Ou donnez-moi un lien.
Si vous êtes intéressé, essayez vous-même. Tout d'abord, à l'aide de la fonction PositionSelect(), vérifiez si une position est ouverte. Si c'est le cas, découvrez l'heure d'ouverture de la position en utilisant PositionGetInteger(POSITION_TIME) et vérifiez votre condition de 5-6 heures. Lorsqu'il est temps de fermer la position, vous découvrez le type de position (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) et son volume PositionGetDouble(POSITION_VOLUME ). Ensuite, vous passez un ordre opposé avec le même volume. Vous pouvez voir un exemple de la méthode de fermeture de position dans MQL5\Include\Trade\Trade .mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX).
Merci, cela semble être ce dont nous avons besoin.
Pas vraiment.
Pour obtenir l'événement "clic de souris", il faut utiliser OnChartEvent(), mais il ne peut pas être utilisé dans les scripts, que dois-je faire ? Il n'y a donc pas de fonction universelle ?
Pas vraiment.
Pour obtenir l'événement "clic de souris", il faut utiliser OnChartEvent(), mais il ne peut pas être utilisé dans les scripts, que dois-je faire ? Il n'y a donc pas de fonction universelle ?
Utilisez ensuite GetKeyState + GetPosition + les coordonnées connues des objets graphiques.
VinApi ?
C'est tout, j'ai perdu l'envie de faire une fonction universelle pour naviguer et sélectionner un fichier dans une liste (une sorte de mini gestionnaire de fichiers). :(
WINAPI ?
C'est tout, j'ai perdu l'envie de faire une fonction universelle pour naviguer et sélectionner un fichier dans une liste (une sorte de mini gestionnaire de fichiers). :(
pourquoi le script alors ?
Vous pouvez voir un exemple de méthode de clôture d'une position dans MQL5\Include\Trade\Trade.mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX).
Merci.
Mais jusqu'à présent, je ne suis pas en mesure de comprendre les cours, bien que ce que j'ai soit généralement dû au fait que j'ai vu quelque part et que j'ai compris.
parce qu'il ne se soucie pas de savoir si les tiques font tic-tac ou pas.
Mais avec les cours, je n'arrive pas encore à m'y retrouver, même si ce que j'obtiens est généralement au prix d'une vision quelque part et d'un effort de compréhension.
Eh bien, toute méthode de classe est juste du code ordinaire. Essayez d'analyser ce code ici :
MqlTradeRequest m_request={0}; // request data MqlTradeResult m_result={0}; // result data MqlTradeCheckResult m_check_result={0}; // result check data bool partial_close=false; int retry_count =10; uint retcode =TRADE_RETCODE_REJECT; do { //--- checking if(PositionSelect(symbol)) { if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) { //--- prepare request for close BUY position m_request.type =ORDER_TYPE_SELL; m_request.price=SymbolInfoDouble(symbol,SYMBOL_BID); } else { //--- prepare request for close SELL position m_request.type =ORDER_TYPE_BUY; m_request.price=SymbolInfoDouble(symbol,SYMBOL_ASK); } } else { //--- position not found m_result.retcode=retcode; return(false); } //--- setting request m_request.action =TRADE_ACTION_DEAL; m_request.symbol =symbol; m_request.deviation =(deviation==ULONG_MAX) ? m_deviation : deviation; m_request.type_filling=m_type_filling; m_request.volume =PositionGetDouble(POSITION_VOLUME); //--- check volume double max_volume=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX); if(m_request.volume>max_volume) { m_request.volume=max_volume; partial_close=true; } else partial_close=false; //--- order check if(!OrderCheck(m_request,m_check_result)) { //--- copy return code m_result.retcode=m_check_result.retcode; return(false); } //--- order send if(!OrderSend(m_request,m_result)) { if(--retry_count!=0) continue; if(retcode==TRADE_RETCODE_DONE_PARTIAL) m_result.retcode=retcode; return(false); } retcode=TRADE_RETCODE_DONE_PARTIAL; if(partial_close) Sleep(1000); } while(partial_close);donc l'expert s'en moque. pourquoi un script ?