Boa tarde. Gostaria de saber se é possível fazer para que o SL e TK identificasse valores em real. Por exemplo, quero digitar no parâmetro 50 reais de stop e nao 50 pontos.
Att,
Um código bem simples, fácil de converter para MQ5, e você pode escolher entre 3 formas de gerenciamento do capital: Percentagem, Montante (como você quer) ou Lote Fixo:
enum ENUM_RISK_BY { RiskPercentage, // Percentage RiskAmount, // Amount RiskFixedLot // Fixed Lot }; //=== Global input variables input ENUM_RISK_BY PosRiskBy = RiskPercentage; // Set Positions Risk By input double PosRisk = 0.5; // Positions Risk input int StopLoss = 300; // Stop Loss (Points) input int TakeProfit = 600; // Take Profit (Points) //+-----------------------------------------------------------------------------------------------------------------+ //| Calculate volume function | //+-----------------------------------------------------------------------------------------------------------------+ double CalculateVolume(int OpType, double SL) { //--- Local variables double TickValue, Risk, Lot; //--- Checks Set Positions Risk By if(PosRiskBy == RiskFixedLot) {return(PosRisk);} //--- Tick Value if(OpType == OP_BUY) { TickValue = ((Ask - SL) / Point) * MarketInfo(Symbol(), MODE_TICKVALUE); } else { TickValue = ((SL - Bid) / Point) * MarketInfo(Symbol(), MODE_TICKVALUE); } if(TickValue == 0.0) {return(0.0);} //--- Volume Size Risk = PosRisk; if(PosRiskBy == RiskPercentage) {Risk = (AccountBalance() + AccountCredit()) * (PosRisk / 100);} Lot = NormalizeDouble(Risk / TickValue, 2); return(Lot); }
Um código bem simples, fácil de converter para MQ5, e você pode escolher entre 3 formas de gerenciamento do capital: Percentagem, Montante (como você quer) ou Lote Fixo:
Essa função é do MQL4? Estou tentando coloca-la no MQL5 e não estou tendo sucesso. Mas entendi o calculo e vou tentar criar uma nova função aqui.
Sim, é MQL4. Essa função calcula o lote com duas casas decimais, ou seja, considera que a sua corretora aceita lotes a partir de 0.01.
Sugiro também que você acrescente a verificação a seguir (já serve para MQL5):
//--- Minimal and Maximal allowed volume for trade operations MinVolume = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN); MaxVolume = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MAX); //--- APÓS CALCULAR O VALOR DE Lot, VERIFICA: if(Lot < MinVolume) {Lot = MinVolume;} else if(Lot > MaxVolume) {Lot = MaxVolume;}

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Boa tarde. Gostaria de saber se é possível fazer para que o SL e TK identificasse valores em real. Por exemplo, quero digitar no parâmetro 50 reais de stop e nao 50 pontos.
Obs.: Isso operando no mini indice porque nos Ativos está funcionando como moeda real já.
Att,