Procházet zdrojové kódy

Ticket: 4436 Few Corrections in code

Huzaifa-MQLDev před 9 měsíci
rodič
revize
4802ccc574
2 změnil soubory, kde provedl 46 přidání a 31 odebrání
  1. binární
      valFvgMt5.ex5
  2. 46 31
      valFvgMt5.mq5

binární
valFvgMt5.ex5


+ 46 - 31
valFvgMt5.mq5

@@ -30,6 +30,11 @@ enum sl_options
30
    zone_based_sl,       // Zone Based Sl
30
    zone_based_sl,       // Zone Based Sl
31
    fvg_third,           // FVG third candle high and low + buffer
31
    fvg_third,           // FVG third candle high and low + buffer
32
   };
32
   };
33
+enum max_trades_option
34
+  {
35
+   one_trade,      // One Trade
36
+   one_buy_sell,   // One Buy One Sell
37
+  };
33
 
38
 
34
 sinput       string                  string_0                   = "<><><><><><> General SETTINGS <><><><><><>";   //__
39
 sinput       string                  string_0                   = "<><><><><><> General SETTINGS <><><><><><>";   //__
35
 input        int                     magic_no                   = 333;             // Magic no
40
 input        int                     magic_no                   = 333;             // Magic no
@@ -37,6 +42,7 @@ input        tp_options              select_tp                  = zone_based;
37
 input        sl_options              select_sl                  = zone_based_sl;   // Select Sl
42
 input        sl_options              select_sl                  = zone_based_sl;   // Select Sl
38
 input        double                  stoploss                   = 4;               // FVG Third High/Low Stop Loss in Buffer
43
 input        double                  stoploss                   = 4;               // FVG Third High/Low Stop Loss in Buffer
39
 input        double                  tpMultiplier               = 2;               // Take Profit Multiplier Risk to Reward
44
 input        double                  tpMultiplier               = 2;               // Take Profit Multiplier Risk to Reward
45
+input        max_trades_option       selectTradeCountOption     = one_trade;       // Select Max Trades at a Time
40
 
46
 
41
 input        string                  string_0_3                 = "<><><><><><> Lot Management<><><><><><>";   //__
47
 input        string                  string_0_3                 = "<><><><><><> Lot Management<><><><><><>";   //__
42
 input        double                  lot_size                   = 0.1;             // Lot Size
48
 input        double                  lot_size                   = 0.1;             // Lot Size
@@ -48,13 +54,18 @@ input       bool                  EnableTimeFilter           = false;         //
48
 input       string                startTime                  = "03:00";       // Start Time Session
54
 input       string                startTime                  = "03:00";       // Start Time Session
49
 input       string                endTime                    = "09:00";       // End Time Session
55
 input       string                endTime                    = "09:00";       // End Time Session
50
 
56
 
57
+input       string                fvg_setting                = "<><><><><> FVG Color Setting <><><><><>";             //_
58
+input       color                 bullish_color              = clrAqua;     // Bullish FVG Color
59
+input       color                 bearish_color              = clrYellow;   // Bearish FVG Color
60
+
61
+
51
 sinput       string                  string_1                   = "<><><><><><> Sequential Volume Indicator SETTINGS <><><><><><>";   //__
62
 sinput       string                  string_1                   = "<><><><><><> Sequential Volume Indicator SETTINGS <><><><><><>";   //__
52
 input        int                     BinsCount                  = 100;              // Number of price bins
63
 input        int                     BinsCount                  = 100;              // Number of price bins
53
 input        double                  ValueAreaPercent           = 70;               // Value Area percentage (70% default)
64
 input        double                  ValueAreaPercent           = 70;               // Value Area percentage (70% default)
54
-input        color                   VALColor                   = clrDarkBlue;      // Value Area Low color
55
-input        color                   VAHColor                   = clrDarkBlue;      // Value Area High color
56
-input        color                   AbsLowColor                = clrBlack;         // Absolute Low color
57
-input        color                   AbsHighColor               = clrBlack;         // Absolute High color
65
+input        color                   VALColor                   = clrYellow;        // Value Area Low color
66
+input        color                   VAHColor                   = clrYellow;        // Value Area High color
67
+input        color                   AbsLowColor                = clrDarkOrange;    // Absolute Low color
68
+input        color                   AbsHighColor               = clrDarkOrange;    // Absolute High color
58
 input        color                   TimeLineColor              = clrRed;           // Time marker line color
69
 input        color                   TimeLineColor              = clrRed;           // Time marker line color
59
 input        int                     LineWidth                  = 2;                // Line width for all value lines
70
 input        int                     LineWidth                  = 2;                // Line width for all value lines
60
 input        int                     TimeLineWidth              = 2;                // Line width for time marker lines
71
 input        int                     TimeLineWidth              = 2;                // Line width for time marker lines
@@ -65,15 +76,12 @@ input        ENUM_LINE_STYLE         AbsLowStyle                = STYLE_SOLID;
65
 input        ENUM_LINE_STYLE         AbsHighStyle               = STYLE_SOLID;      // Absolute High line style
76
 input        ENUM_LINE_STYLE         AbsHighStyle               = STYLE_SOLID;      // Absolute High line style
66
 input        bool                    ShowLabels                 = true;             // Show price labels
77
 input        bool                    ShowLabels                 = true;             // Show price labels
67
 input        bool                    ShowComment                = true;             // Show comment with most recent levels
78
 input        bool                    ShowComment                = true;             // Show comment with most recent levels
68
-input        bool                    ShowFVG                    = true;             // Enable Fair Value Gap detection
79
+input        bool                    ShowFVG                    = false;            // Enable Fair Value Gap detection
69
 input        color                   BullishFVGColor            = clrLime;          // Bullish FVG color
80
 input        color                   BullishFVGColor            = clrLime;          // Bullish FVG color
70
 input        color                   BearishFVGColor            = clrDeepPink;      // Bearish FVG color
81
 input        color                   BearishFVGColor            = clrDeepPink;      // Bearish FVG color
71
 input        double                  MinFVGSize                 = 0.0;              // Minimum FVG size in points (0 = any size)
82
 input        double                  MinFVGSize                 = 0.0;              // Minimum FVG size in points (0 = any size)
72
 input        int                     MaxBarsBack                = 300;              // How many bars to look back for FVG
83
 input        int                     MaxBarsBack                = 300;              // How many bars to look back for FVG
73
 
84
 
74
-input       string                fvg_setting                = "<><><><><> FVG Color Setting <><><><><>";             //_
75
-input       color                 bullish_color              = clrAqua;     // Bullish FVG Color
76
-input       color                 bearish_color              = clrYellow;   // Bearish FVG Color
77
 
85
 
78
 
86
 
79
 // Global Variables
87
 // Global Variables
@@ -127,7 +135,8 @@ int OnInit()
127
 void OnDeinit(const int reason)
135
 void OnDeinit(const int reason)
128
   {
136
   {
129
 //---
137
 //---
130
-
138
+   Print(" DeInIt ");
139
+   ObjectsDeleteAll(0, 0, OBJ_RECTANGLE);
131
   }
140
   }
132
 //+------------------------------------------------------------------+
141
 //+------------------------------------------------------------------+
133
 //| Expert tick function                                             |
142
 //| Expert tick function                                             |
@@ -135,24 +144,26 @@ void OnDeinit(const int reason)
135
 void OnTick()
144
 void OnTick()
136
   {
145
   {
137
 //---
146
 //---
138
-   double values[];
139
-   CopyBuffer(sequential_handler,0,0,3,values);
140
-   double val = lines("VAL");
141
-   double vah = lines("VAH");
142
-   double absHigh = lines("AbsHigh");
143
-   double absLow = lines("AbsLow");
147
+//   double values[];
148
+// CopyBuffer(sequential_handler,0,0,3,values);
144
 
149
 
145
 // Print("Val: ", val, "  Vah: ", vah, "  AbsHigh: ", absHigh, "  AbsLow: ", absLow);
150
 // Print("Val: ", val, "  Vah: ", vah, "  AbsHigh: ", absHigh, "  AbsLow: ", absLow);
146
-   double Ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
147
-   double Bid = SymbolInfoDouble(Symbol(),SYMBOL_BID);
148
-   timeConversion();
151
+// double Ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
152
+// double Bid = SymbolInfoDouble(Symbol(),SYMBOL_BID);
149
 
153
 
150
-   if((EnableTimeFilter && TimeCurrent() >= startTradingTime && TimeCurrent() < endTradingTime) ||  !EnableTimeFilter)
154
+   if(newBar())
151
      {
155
      {
152
-      if(newBar())
156
+      timeConversion();
157
+
158
+      if((EnableTimeFilter && TimeCurrent() >= startTradingTime && TimeCurrent() < endTradingTime) ||  !EnableTimeFilter)
153
         {
159
         {
160
+         double val = lines("VAL");
161
+         double vah = lines("VAH");
162
+         double absHigh = lines("AbsHigh");
163
+         double absLow = lines("AbsLow");
164
+
154
          string gapCreated = fvg_gap();
165
          string gapCreated = fvg_gap();
155
-         if(todayTradesCount(DEAL_TYPE_BUY) == 0)
166
+         if((selectTradeCountOption == one_buy_sell && todayTradesCount(DEAL_TYPE_BUY) == 0) || (selectTradeCountOption == one_trade && todayTradesCount(DEAL_TYPE_BUY) == 0 && todayTradesCount(DEAL_TYPE_SELL) == 0))
156
            {
167
            {
157
             if(gapCreated == previousBullish)
168
             if(gapCreated == previousBullish)
158
               {
169
               {
@@ -160,24 +171,28 @@ void OnTick()
160
                double close_2 = iClose(Symbol(), PERIOD_CURRENT, 2);
171
                double close_2 = iClose(Symbol(), PERIOD_CURRENT, 2);
161
                double upper_price = MathMax(open_2, close_2);
172
                double upper_price = MathMax(open_2, close_2);
162
                double lower_price = MathMin(open_2, close_2);
173
                double lower_price = MathMin(open_2, close_2);
163
-               if(((upper_price > val) && (lower_price < val)) || ((upper_price < val) && (lower_price < val)))
164
-                 {
165
-                  placeBuyTrade();
166
-                 }
174
+               if(((upper_price < absHigh) && (lower_price < absHigh)))
175
+                  if(((upper_price > val) && (lower_price < val)) || ((upper_price < val) && (lower_price < val)))
176
+                    {
177
+                     Print("Buy Trade. Val: ", val, "  Vah: ", vah, "  AbsHigh: ", absHigh, "  AbsLow: ", absLow);
178
+                     placeBuyTrade();
179
+                    }
167
               }
180
               }
168
            }
181
            }
169
-         if(todayTradesCount(DEAL_TYPE_SELL) == 0)
182
+         if((selectTradeCountOption == one_buy_sell && todayTradesCount(DEAL_TYPE_SELL) == 0) || (selectTradeCountOption == one_trade && todayTradesCount(DEAL_TYPE_BUY) == 0 && todayTradesCount(DEAL_TYPE_SELL) == 0))
170
            {
183
            {
171
             if(gapCreated == previousBearish)
184
             if(gapCreated == previousBearish)
172
               {
185
               {
173
                double open_2 = iOpen(Symbol(), PERIOD_CURRENT, 2);
186
                double open_2 = iOpen(Symbol(), PERIOD_CURRENT, 2);
174
                double close_2 = iClose(Symbol(), PERIOD_CURRENT, 2);
187
                double close_2 = iClose(Symbol(), PERIOD_CURRENT, 2);
175
                double upper_price = MathMax(open_2, close_2);
188
                double upper_price = MathMax(open_2, close_2);
176
-               double lower_price = MathMin(open_2, close_2);  
177
-               if(((upper_price > vah) && (lower_price < vah)) || ((upper_price > vah) && (lower_price > vah)))
178
-                 {
179
-                  placeSellTrade();
180
-                 }
189
+               double lower_price = MathMin(open_2, close_2);
190
+               if(((upper_price > absLow) && (lower_price > absLow)))
191
+                  if(((upper_price > vah) && (lower_price < vah)) || ((upper_price > vah) && (lower_price > vah)))
192
+                    {
193
+                     Print("Sell Trade. Val: ", val, "  Vah: ", vah, "  AbsHigh: ", absHigh, "  AbsLow: ", absLow);
194
+                     placeSellTrade();
195
+                    }
181
               }
196
               }
182
            }
197
            }
183
         }
198
         }