Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Avalie seu funcionamento no terminal MetaTrader 5
Percentual máximo de Risco de Capital - biblioteca para MetaTrader 5
- Visualizações:
- 1869
- Avaliação:
- Publicado:
- 2015.04.07 17:31
- Atualizado:
- 2016.11.22 07:33
- Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Este código permite que você defina um percentual máximo de risco de capital.
Ele verifica se o lote de oferta de compra/venda estão ajustados ao risco. Se não, os lotes são ajustadas automaticamente para se encaixar no risco que foi definido.
Código:
bool UseMaximumPercentageRisk=true; double MaximumPercentageRisk=25; #include <Trade\SymbolInfo.mqh> //+------------------------------------------------------------------+ //| GetLotSize RPTrade | //+------------------------------------------------------------------+ double GetLotSize(double lotsize) { //--- Gets pair specs CSymbolInfo symInfo; int digits_bn=symInfo.Digits(); double points_bn=symInfo.Point(); string symbol_bn=_Symbol; //--- adjust lot int tmpdecimal=1; double old_lot=lotsize; //--- if((NormalizeDouble(AccountInfoDouble(ACCOUNT_FREEMARGIN)*(MaximumPercentageRisk/100)/1000.0,tmpdecimal)<lotsize) && UseMaximumPercentageRisk) //is lot fitting risk ? { lotsize=NormalizeDouble(AccountInfoDouble(ACCOUNT_FREEMARGIN)*(MaximumPercentageRisk/100)/1000.0,tmpdecimal); //Claculates new Lotsize if(lotsize<SymbolInfoDouble(symbol_bn,SYMBOL_VOLUME_MIN)) //is LotSize fitting minimum broker LotSize ? { lotsize=SymbolInfoDouble(symbol_bn,SYMBOL_VOLUME_MIN); //No! Setting LotSize to minimum's broker LS Print(_Symbol," Lot adjusted from ",old_lot," to minimum size allowed by the server of ",lotsize); } else { Print(_Symbol," Lot adjusted from ",old_lot," to ",lotsize," to comply with Maximum Risk condition. Cada negócio pode arriscar somente ", MaximumPercentageRisk,"% da margem livre."); // Sim! if(MathAbs(lotsize/SymbolInfoDouble(symbol_bn,SYMBOL_VOLUME_STEP)-MathRound(lotsize/SymbolInfoDouble(symbol_bn,SYMBOL_VOLUME_STEP)))>1.0E-10) //Is LotSize fitting Broker's allowed step ? { lotsize=SymbolInfoDouble(symbol_bn,SYMBOL_VOLUME_STEP)*NormalizeDouble(lotsize/SymbolInfoDouble(symbol_bn,SYMBOL_VOLUME_STEP),0); //NO! recalculates LotSize. Print("M-",_Symbol," Warning: Your calculated percentage at risk lot size of was not a multiple of minimal step",SymbolInfoDouble(symbol_bn,SYMBOL_VOLUME_STEP),". Lot size changed to",lotsize); } } } return(lotsize); }
Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/2142
Tally para vitórias e derrotas
Caminho para manter um registro de ganhos e perdas.
Setting ChartDefinir vários gráficos em um clique.