J'ai codé quelque chose qui semble me satisfaire pour le moment.
Code : Tout sélectionner
//+------------------------------------------------------------------+
//| spNormalizedLots.mq4 |
//| Copyright 2015, Pierre Rougier |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Pierre Rougier"
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
Print("Minimum permitted amount of a lot=",MarketInfo(Symbol(),MODE_MINLOT));
Print("Step for changing lots=",MarketInfo(Symbol(),MODE_LOTSTEP));
Print("NormalizeLots(Symbol(),0.0001) :",NormalizeLots(Symbol(),0.0001));
Print("NormalizeLots(Symbol(),0.001) :",NormalizeLots(Symbol(),0.001));
Print("NormalizeLots(Symbol(),0.01) :",NormalizeLots(Symbol(),0.01));
Print("NormalizeLots(Symbol(),0.014) :",NormalizeLots(Symbol(),0.014));
Print("NormalizeLots(Symbol(),0.016) :",NormalizeLots(Symbol(),0.016));
Print("NormalizeLots(Symbol(),0.01999) :",NormalizeLots(Symbol(),0.01999));
Print("NormalizeLots(Symbol(),0.02) :",NormalizeLots(Symbol(),0.02));
Print("NormalizeLots(Symbol(),0.1) :",NormalizeLots(Symbol(),0.1));
Print("NormalizeLots(Symbol(),1.0) :",NormalizeLots(Symbol(),1.0));
}
//+------------------------------------------------------------------+
double NormalizeLots(string symbol,double lots)
{
double LotStep=MarketInfo(symbol,MODE_LOTSTEP);
Print("lots :",lots,"-- LotStep :",LotStep,"-- (MathRound(lots/LotStep)) :",(MathRound(lots/LotStep)),"-- (MathRound(lots/LotStep))*LotStep :",(MathRound(lots/LotStep))*LotStep);
return((MathRound(lots/LotStep))*LotStep);
}
//+------------------------------------------------------------------+
2015.04.05 15:59:22.941 Script spNormalizedLots SILVER,H1: removed
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: uninit reason 0
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: NormalizeLots(Symbol(),1.0) :1.0
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: lots :1.0-- LotStep :0.01-- (MathRound(lots/LotStep)) :100.0-- (MathRound(lots/LotStep))*LotStep :1.0
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: NormalizeLots(Symbol(),0.1) :0.1
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: lots :0.1-- LotStep :0.01-- (MathRound(lots/LotStep)) :10.0-- (MathRound(lots/LotStep))*LotStep :0.1
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: NormalizeLots(Symbol(),0.02) :0.02
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: lots :0.02-- LotStep :0.01-- (MathRound(lots/LotStep)) :2.0-- (MathRound(lots/LotStep))*LotStep :0.02
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: NormalizeLots(Symbol(),0.01999) :0.02
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: lots :0.01999-- LotStep :0.01-- (MathRound(lots/LotStep)) :2.0-- (MathRound(lots/LotStep))*LotStep :0.02
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: NormalizeLots(Symbol(),0.016) :0.02
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: lots :0.016-- LotStep :0.01-- (MathRound(lots/LotStep)) :2.0-- (MathRound(lots/LotStep))*LotStep :0.02
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: NormalizeLots(Symbol(),0.014) :0.01
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: lots :0.014-- LotStep :0.01-- (MathRound(lots/LotStep)) :1.0-- (MathRound(lots/LotStep))*LotStep :0.01
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: NormalizeLots(Symbol(),0.01) :0.01
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: lots :0.01-- LotStep :0.01-- (MathRound(lots/LotStep)) :1.0-- (MathRound(lots/LotStep))*LotStep :0.01
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: NormalizeLots(Symbol(),0.001) :0.0
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: lots :0.001-- LotStep :0.01-- (MathRound(lots/LotStep)) :0.0-- (MathRound(lots/LotStep))*LotStep :0.0
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: NormalizeLots(Symbol(),0.0001) :0.0
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: lots :0.0001-- LotStep :0.01-- (MathRound(lots/LotStep)) :0.0-- (MathRound(lots/LotStep))*LotStep :0.0
2015.04.05 15:59:22.941 spNormalizedLots SILVER,H1: Step for changing lots=0.01
2015.04.05 15:59:22.931 spNormalizedLots SILVER,H1: Minimum permitted amount of a lot=0.01
2015.04.05 15:59:22.931 spNormalizedLots SILVER,H1: initialized
2015.04.05 15:59:22.931 Script Normalized\spNormalizedLots SILVER,H1: loaded successfully