Money manager 1.0

Author: Copyright 2023,Obunadike Chioma
0 Views
0 Downloads
0 Favorites
Money manager 1.0
//+------------------------------------------------------------------+
//|                                            Money manager 1.0.mq5 |
//|                                  Copyright 2023,Obunadike Chioma |
//|                                      https://wa.me/2349124641304 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023,Obunadike Chioma"
#property link      "https://wa.me/2349124641304"
#property version   "1.00"

#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\DealInfo.mqh>
CTrade trade;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+



enum opt
  {
   Enable,
   Disable
  };
input double lot = 0.1; //Lotsize
input opt ProfitDeal = Enable;
input opt LossDeal = Enable;
input double PD = 5;  //ProfitDeal%
input double  LD = 5;  //LossDeal%
input double LotComission = 7; //Lot Comission (in $)


void OnTick()
  {

 
  if(ProfitDeal==Enable)
     {ClosePosProfit();}
     
     if(LossDeal==Enable)
     {ClosePosLoss();}
  }

void ClosePosProfit()

{
 
  double Ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
  double Bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
  double Sp = Ask - Bid; 
  double Spread =  NormalizeDouble(Sp,5);
  double Acct_Bal = AccountInfoDouble(ACCOUNT_BALANCE); 
 
 for(int i = PositionsTotal()-1; i>=0; i--)
     
     {
     string symbols = PositionGetSymbol(i);   // get position symbol
    
     if (_Symbol == symbols)
   
     { //--Get position ticket--  
       ulong PositionTicket=PositionGetInteger(POSITION_TICKET);  
       
       double Profit =PositionGetDouble(POSITION_PROFIT);
       
       if (Profit >= ((PD/100)*Acct_Bal)+(LotComission*lot)+(Spread*lot)) 
    
       trade.PositionClose(PositionTicket,-1);
   
      }
         }  }
           
            
         
         void ClosePosLoss()

{
 
  double Ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
  double Bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
  double Sp = Bid - Ask; 
  double Spread =  NormalizeDouble(Sp,5);
   double Acct_Bal = AccountInfoDouble(ACCOUNT_BALANCE);

 for(int i = PositionsTotal()-1; i>=0; i--)
     {
   {
     string symbols = PositionGetSymbol(i);   // get position symbol
    
     if (_Symbol == symbols)
   
     {
      //--Get position ticket--  
       ulong PositionTicket=PositionGetInteger(POSITION_TICKET);  
     
       double Loss=PositionGetDouble(POSITION_PROFIT);
    
        Print (Loss);
        
    if (Loss <= (-(LD/100)*Acct_Bal)-(LotComission*lot)-(Spread*lot)) 
 trade.PositionClose(PositionTicket,-1);
   }
      }
          }   }
           

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---