//+------------------------------------------------------------------+ //| Margin_DrawDown_Tracker.mq4 | //| Copyright © 2007, P. Kubitzki | //| fxtogo4me@yahoo.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, P. Kubitzki. All Rights Reserved" #property link "http://www.SecretsFromTheHeart.com" double MaxAccountMargin = 0.0; double MaxDrawDown = 0.0; double MinMarginLevel = 100000.0; //default start value extern double MinMarginForAlert = 500.0; //(margin call if less than 100), if margin goes down to this number a message is sent to my cell phone extern double MaxDrawDownForAlert = -3000.00; double AccountMarginLevel = 0.0; extern string Subject = "FXDD - Demo"; extern string MarginLevelMessage = "MARGIN LEVEL GETTING TOO LOW!!!"; extern string DrawDownMessage = "Draw Down hitting limit!!!"; extern int MarginAlertTrigger = 1; //1 = no alert yet, 2 = alert triggered extern int DrawDownAlertTrigger = 1; //1 = no alert yet, 2 = alert triggered double MaxFloatingProfit = 0.0; int AcctLeverage = 0; int deinit() { return(0); } int init() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if( OrdersTotal() == 0) return; AccountMarginLevel = (AccountEquity() / AccountMargin()) * 100.0; ChartComment(); if (MinMarginLevel <= MinMarginForAlert && MarginAlertTrigger == 1) { Alert( "WARNING MARGIN GETTING TOO LOW!!!" ); SendMail( Subject, MarginLevelMessage ); MarginAlertTrigger = 2; } if ( AccountProfit() <= MaxDrawDownForAlert && DrawDownAlertTrigger == 1) { Alert( "Draw Down hitting limit!!!" ); SendMail( Subject, DrawDownMessage ); DrawDownAlertTrigger = 2; } return(0); } void ChartComment() { if (AccountMarginLevel < MinMarginLevel) MinMarginLevel = AccountMarginLevel; if (AccountMargin() > MaxAccountMargin) MaxAccountMargin = AccountMargin(); if (AccountProfit() < MaxDrawDown) MaxDrawDown = AccountProfit(); if (AccountProfit() > MaxFloatingProfit) MaxFloatingProfit = AccountProfit(); AcctLeverage = AccountLeverage(); Comment ("Copyright © 2007 P. Kubitzki, www.SecretsFromTheHeart.com","\nAccount Leverage is ",AcctLeverage,":1"," MaxFloatingProfit = ",MaxFloatingProfit,"\nMaxAccountMargin = ",MaxAccountMargin," MaxDrawdown = ",MaxDrawDown,"\nMinMarginForAlert = ",MinMarginForAlert," MaxDrawDownForAlert = ",MaxDrawDownForAlert,"\nAlertTriggers: 1 = No Alert, 2 = Alert Sent","\nMarginAlertTrigger =",MarginAlertTrigger," DrawDownAlertTrigger = ",DrawDownAlertTrigger); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
Other Features:
It issuies visual alerts to the screen
It sends emails