Heiken299_v1

Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt Closes Orders by itself It can change open orders parameters, due to possible stepping strategy
Indicators Used
Bill Williams Awesome oscillatorMoving average indicator
0 Views
0 Downloads
0 Favorites

Profitability Reports

AUD/USD Oct 2024 - Jan 2025
16.00 %
Total Trades 777
Won Trades 0
Lost trades 0
Win Rate 0.00 %
Expected payoff -12.29
Gross Profit 1882.00
Gross Loss -11433.00
Total Net Profit -9551.00
-100%
-50%
0%
50%
100%
GBP/USD Oct 2024 - Jan 2025
14.00 %
Total Trades 266
Won Trades 4
Lost trades 262
Win Rate 0.02 %
Expected payoff -34.72
Gross Profit 1508.00
Gross Loss -10743.00
Total Net Profit -9235.00
-100%
-50%
0%
50%
100%
NZD/USD Oct 2024 - Jan 2025
12.00 %
Total Trades 482
Won Trades 17
Lost trades 465
Win Rate 0.04 %
Expected payoff -19.93
Gross Profit 1284.00
Gross Loss -10892.00
Total Net Profit -9608.00
-100%
-50%
0%
50%
100%
Heiken299_v1
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                               Heiken200.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#define MAGICMA  20050000

extern double Lots               = 0.1;
extern double MaximumRisk        = 0.5;
extern double TakeProfit = 2000;
extern double TrailingStop = 0;
extern double Stoploss = 60;
extern double risk = 10;
double lotMM;
//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }
// =================================================================================
// PYRAMIDING - LINEAR
// Money Management risk exposure compounding
// =================================================================================
   
  
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   int    res;
//---- sell conditions
   if (iCustom(NULL,0,"Heiken Ashi",2,0) > iCustom(NULL,0,"Heiken Ashi",3,0) && iCustom(NULL,0,"Heiken Ashi",1,0) < 
       iCustom(NULL,0,"Heiken Ashi",0,0) && Close[1] < iMA(NULL,0,200,0,MODE_EMA,PRICE_CLOSE,0) && iAO(NULL,0,0) < 0)
     {
      res=OrderSend(Symbol(),OP_SELL,MathCeil(AccountBalance() * risk / 100000),Bid,1,Bid+Stoploss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red);
      return;
     }
//---- buy conditions
   if (iCustom(NULL,0,"Heiken Ashi",2,0) < iCustom(NULL,0,"Heiken Ashi",3,0) && iCustom(NULL,0,"Heiken Ashi",1,0) > 
       iCustom(NULL,0,"Heiken Ashi",0,0) && Close[1] > iMA(NULL,0,200,0,MODE_EMA,PRICE_CLOSE,0) && iAO(NULL,0,0) > 0)
     {
      res=OrderSend(Symbol(),OP_BUY,MathCeil(AccountBalance() * risk / 100000),Ask,1,Ask-Stoploss*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);
      return;
     }
//----
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
            if(iCustom(NULL,0,"Heiken Ashi",2,0) > iCustom(NULL,0,"Heiken Ashi",3,0) && iCustom(NULL,0,"Heiken Ashi",1,0) < 
               iCustom(NULL,0,"Heiken Ashi",0,0))
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,1,Violet); // close position
                 return(0); // exit
                }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
            // should it be closed?
            if (iCustom(NULL,0,"Heiken Ashi",2,0) < iCustom(NULL,0,"Heiken Ashi",3,0) && iCustom(NULL,0,"Heiken Ashi",1,0) > 
                iCustom(NULL,0,"Heiken Ashi",0,0))
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,1,Violet); // close position
               return(0); // exit
              }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
// the end.
//----

//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
//---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
//----
  }
//+--------------------------------------------------------------

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 ---