HedgeHog
Download scriptThis automated trading script is designed to manage specific buy and sell positions on a trading platform based on a pre-defined starting time, profit targets, and volume rules. It functions as a systematic "set-and-forget" tool that handles the opening, monitoring, and closing of trades independently.
Core Trading Logic
1. Scheduled Entry Window The script operates within a specific 5-minute window starting at a user-defined time. During this period, it scans the current market to determine if any active positions are already open for the specific currency pair.
2. Automated Position Opening If the script detects that there are no active "Buy" or "Sell" orders currently open:
- Buying: It automatically places a "Buy" order at the current market price.
- Selling: It automatically places a "Sell" order at the current market price.
- Profit Targets: Every trade is automatically assigned a take-profit level based on the user's preferred point distance.
- Dynamic Volume Scaling: The script includes a smart volume logic. If a previous position was closed, it checks a memory variable to determine if it should double the trading volume for the next trade or stick to the standard amount.
3. Order Identification To ensure it only manages its own trades and doesn't interfere with other manual trades, the script applies a unique "comment" (label) to every position it opens. It specifically looks for these labels before making any decisions.
Trade Management & Exit Strategy
4. Time-Based Exits The script acts as a safety monitor for open positions. It continuously checks how long each trade has been running. If a position remains open for 2 days without hitting the profit target, the script will automatically close that position to free up capital and reduce risk.
5. Feedback & Notifications For every major action taken—whether it is opening a new trade or closing an old one—the script triggers an audible alert (a sound file) to notify the user of the activity. It also includes a brief "sleep" period after actions to ensure the platform processes the data correctly before moving to the next step.
Summary of User Controls
The system allows the user to define:
- Start Time: When the script should begin looking for opportunities.
- Take Profit: How many points in profit are required to close a trade automatically.
- Lot Size: The base volume of the trades to be executed.
/*-----------------------------+
| |
| Shared by www.Aptrafx.com |
| |
+------------------------------*/
//+------------------------------------------------------------------+
//| Hans123 testing version.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//---- input parameters
extern int Start=0;
extern int TakeProfit=14;
extern double Lots=1;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int i,j,Ticket,StartTime,Bought=0,Sold=0,Closed;
double Vol;
string Text;
//Count time
StartTime= StrToTime(Start+":00");
//Setup comment
Text="HH"+Symbol();
//Set orders
if(CurTime()>= StartTime && CurTime()<StartTime+300){
//Check Orders
for (i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==Text && OrderType()==OP_BUY && OrderOpenTime()>CurTime()-3600) Bought++;
if(OrderComment()==Text && OrderType()==OP_SELL && OrderOpenTime()>CurTime()-3600) Sold++;
}
if(Bought==0){ //no buy order
if(GlobalVariableGet("Closed")==1) Vol=2*Lots; else Vol=Lots;
Ticket=OrderSend(Symbol(),OP_BUY,Vol,Ask,3,0,Ask+TakeProfit*Point,Text,0,0,Green);
PlaySound("expert.wav");
Sleep(10000);
}
if(Sold==0){ //no sell order
if(GlobalVariableGet("Closed")==2) Vol=2*Lots; else Vol=Lots;
Ticket=OrderSend(Symbol(),OP_SELL,Vol,Bid,3,0,Bid-TakeProfit*Point,Text,0,0,Green);
PlaySound("expert.wav");
Sleep(10000);
}
if(GlobalVariableCheck("Closed")) GlobalVariableDel("Closed");
}
//Manage opened orders
for (i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
//close open position after 2 days
if(OrderComment()==Text && CurTime()>=OrderOpenTime()+2*24*3600-300){
if(OrderType()==OP_BUY){
OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
PlaySound("expert.wav");
GlobalVariableSet("Closed",1);
Sleep(10000);
}
if(OrderType()==OP_SELL){
OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
PlaySound("expert.wav");
GlobalVariableSet("Closed",2);
Sleep(10000);
}
}
}
return(0);
}
//+------------------------------------------------------------------+
Profitability Reports
Expected payoff
Average expected payoff across the available backtests for each symbol.
Comments