Author: Copyright 2020, Zakhvatkin Aleksandr
1 Views
0 Downloads
0 Favorites
grid_v2
//+------------------------------------------------------------------+
//|                                                         grid.mq5 |
//|                             Copyright 2020, Zakhvatkin Aleksandr |
//|                              https://www.mql5.com/ru/users/z.a.m |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, Zakhvatkin Aleksandr"
#property link      "https://www.mql5.com/ru/users/z.a.m"
#property version   "1.00"
#property script_show_inputs
//--- input parameters
input double   FixedLot=0.1;    // Fixed lot
input ushort   TakeProfit=200;  // Take profit
input ushort   Grid_step=100;   // Grid step
input ushort   N_orders=10;     // Number of orders in one direction
input ushort   Distance=50;     // Price offset
input bool     LimitGrid=false; // Set a grid of limit orders
//--- include
#include <Trade\Trade.mqh> 
CTrade trade;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for (int j=1; j<=N_orders; j++)
      {
      if (!LimitGrid)
         {
         double _pricebuy = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK)+Distance*_Point+Grid_step*j*_Point,_Digits);
         double _pricesell = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID)-Distance*_Point-Grid_step*j*_Point,_Digits);
         trade.BuyStop(FixedLot,_pricebuy,NULL,0,_pricebuy+TakeProfit*_Point,0,0,NULL);
         trade.SellStop(FixedLot,_pricesell,NULL,0,_pricesell-TakeProfit*_Point,0,0,NULL);
         }
      else
         {
         double _pricebuy = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK)-Distance*_Point-Grid_step*j*_Point,_Digits);
         double _pricesell = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID)+Distance*_Point+Grid_step*j*_Point,_Digits);
         trade.SellLimit(FixedLot,_pricesell,NULL,0,_pricesell-TakeProfit*_Point,0,0,NULL);
         trade.BuyLimit(FixedLot,_pricebuy,NULL,0,_pricebuy+TakeProfit*_Point,0,0,NULL);
         }
      }
  }
//+------------------------------------------------------------------+

Comments