Техническое задание

#define ExtBotName "AK-47 Scalper EA" //Bot Name
#define  Version "1.00"

//--- input parameters
extern string  EASettings        = "---------------------------------------------"; //-------- <EA Settings> --------
input int      InpMagicNumber    = 124656;   //Magic Number

extern string  TradingSettings   = "---------------------------------------------"; //-------- <Trading Settings> --------
input double   Inpuser_lot       = 0.01;     //Lots
input double   InpSL_Pips        = 3.5;      //Stoploss (in Pips)
input double   InpMax_spread     = 0.5;      //Maximum allowed spread (in Pips) (0 = floating)

extern string  MoneySettings     = "---------------------------------------------"; //-------- <Money Settings> --------
input bool     isVolume_Percent  = true;     //Allow Volume Percent
input double   InpRisk           = 3;        //Risk Percentage of Balance (%)

input string   TimeSettings      = "---------------------------------------------"; //-------- <Trading Time Settings> --------
input bool     InpTimeFilter     = true;      //Trading Time Filter
input int      InpStartHour      = 2;         //Start Hour
input int      InpStartMinute    = 30;        //Start Minute
input int      InpEndHour        = 21;        //End Hour
input int      InpEndMinute      = 0;         //End Minute

2. local variables initialization
//--- Variables
int      Pips2Points;               // slippage  3 pips    3=points    30=points
double   Pips2Double;               // Stoploss 15 pips    0.015      0.0150
int      InpMax_slippage   = 3;     // Maximum slippage allow_Pips.
bool     isOrder           = false; // just open 1 order
int      slippage;
string   strComment        = "";

3. Main Code

a/ Expert initialization function

int OnInit()
  {
//---   
   //3 or 5 digits detection
   //Pip and point
   if (Digits % 2 == 1)
   {
      Pips2Double  = _Point*10; 
      Pips2Points  = 10;
      slippage = 10* InpMax_slippage;
   } 
   else
   {    
      Pips2Double  = _Point;
      Pips2Points  =  1;
      slippage = InpMax_slippage;
   }
   
//---
   return(INIT_SUCCEEDED);
  }

b/ Expert tick function

void OnTick()
  {
//---
     if(IsTradeAllowed() == false)
     {
      Comment("AK-47 EA\nTrade not allowed.");
      return;
     }
     
       MqlDateTime structTime;
       TimeCurrent(structTime);
       structTime.sec = 0;
       
       //Set starting time
       structTime.hour = InpStartHour;
       structTime.min = InpStartMinute;       
       datetime timeStart = StructToTime(structTime);
       
       //Set Ending time
       structTime.hour = InpEndHour;
       structTime.min = InpEndMinute;
       datetime timeEnd = StructToTime(structTime);
       
       double acSpread = MarketInfo(Symbol(), MODE_SPREAD);
       StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);
      
      strComment = "\n" + ExtBotName + " - v." + (string)Version;
      strComment += "\nGMT time = " + TimeToString(TimeGMT(),TIME_DATE|TIME_SECONDS);
      strComment += "\nTrading time = [" + (string)InpStartHour + "h" + (string)InpStartMinute + " --> " +  (string)InpEndHour + "h" + (string)InpEndMinute + "]";
      
      strComment += "\nCurrent Spread = " + (string)acSpread + " Points";
      strComment += "\nCurrent stoplevel = " + (string)StopLevel + " Points";
      
      Comment(strComment);
   
      //Update Values
      UpdateOrders();
      
      TrailingStop();
      
      //Check Trading time
      if(InpTimeFilter)
      {
         if(TimeCurrent() >= timeStart && TimeCurrent() < timeEnd)
         {
            if(!isOrder) OpenOrder();
         }
      }
      else
      {
         if(!isOrder) OpenOrder();
      }
  }

3.1 Calculate signal in order to send orders

void OpenOrder(){
   
   //int OrdType = OP_SELL;//-1;

   double TP = 0;
   double SL = 0;
   string comment = ExtBotName;

   //Calculate Lots
   double lot1 = CalculateVolume();
   
   //if(OrdType == OP_SELL){
      double OpenPrice = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);
      SL = NormalizeDouble(Ask + StopLevel * _Point + InpSL_Pips/2 * Pips2Double, Digits);
         
      if(CheckSpreadAllow())                                    //Check Spread
      {
         if(!OrderSend(_Symbol, OP_SELLSTOP, lot1, OpenPrice, slippage, SL, TP, comment, InpMagicNumber, 0, clrRed))
         Print(__FUNCTION__,"--> OrderSend error ",GetLastError());
      }
   //}
}

3.2 Calculate Volume

double CalculateVolume()
  {
   double LotSize = 0;

   if(isVolume_Percent == false)
     {
      LotSize = Inpuser_lot;
     }
   else
     {

      LotSize = (InpRisk) * AccountFreeMargin();
      LotSize = LotSize /100000;
      double n = MathFloor(LotSize/Inpuser_lot);
      //Comment((string)n);
      LotSize = n * Inpuser_lot;

      if(LotSize < Inpuser_lot)
         LotSize = Inpuser_lot;

      if(LotSize > MarketInfo(Symbol(),MODE_MAXLOT))
         LotSize = MarketInfo(Symbol(),MODE_MAXLOT);

      if(LotSize < MarketInfo(Symbol(),MODE_MINLOT))
         LotSize = MarketInfo(Symbol(),MODE_MINLOT);
     }

   return(LotSize);
  }

3.3 EA has function "trailing Stop", SL will change every time price change (down)

void TrailingStop()
  {
   for(int i = OrdersTotal() - 1; i >= 0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if((OrderMagicNumber() == InpMagicNumber) && (OrderSymbol() == Symbol()))   //_Symbol))
           {

            //For Sell Order
            if(OrderType() == OP_SELL)
              {
                  //--Calculate SL when price changed
                  double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;
                  if(SL_in_Pip > InpSL_Pips){
                        double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + InpSL_Pips * Pips2Double, Digits);
                        if(!OrderModify(OrderTicket(), OrderOpenPrice(), newSL, OrderTakeProfit(), 0, clrRed))
                        {
                           Print(__FUNCTION__,"--> OrderModify error ",GetLastError());
                           continue;  
                        }
                    }
              }
             
            //For SellStop Order
            else if(OrderType() == OP_SELLSTOP)
              {
                  double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;
                  
                  if(SL_in_Pip < InpSL_Pips/2){
                     double newOP = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);
                     double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + (InpSL_Pips/2) * Pips2Double, Digits);
                     
                     if(!OrderModify(OrderTicket(), newOP, newSL, OrderTakeProfit(), 0, clrRed))
                     {
                        Print(__FUNCTION__,"--> Modify PendingOrder error!", GetLastError());
                        continue;  
                     }
                  
                  }
              }
              
           }
        }
     }
  }

Откликнулись

1
Разработчик 1
Оценка
(21)
Проекты
30
57%
Арбитраж
0
Просрочено
1
3%
Свободен
2
Разработчик 2
Оценка
(102)
Проекты
105
60%
Арбитраж
0
Просрочено
0
Свободен
3
Разработчик 3
Оценка
(27)
Проекты
36
25%
Арбитраж
1
0% / 0%
Просрочено
4
11%
Работает
4
Разработчик 4
Оценка
(511)
Проекты
585
38%
Арбитраж
2
100% / 0%
Просрочено
1
0%
Свободен
Опубликовал: 9 примеров
5
Разработчик 5
Оценка
(7)
Проекты
11
0%
Арбитраж
4
0% / 100%
Просрочено
2
18%
Работает
6
Разработчик 6
Оценка
(163)
Проекты
258
61%
Арбитраж
4
50% / 25%
Просрочено
10
4%
Свободен
7
Разработчик 7
Оценка
(164)
Проекты
211
19%
Арбитраж
19
42% / 16%
Просрочено
0
Работает
8
Разработчик 8
Оценка
(33)
Проекты
35
20%
Арбитраж
4
50% / 25%
Просрочено
0
Свободен
Опубликовал: 1 пример
9
Разработчик 9
Оценка
Проекты
0
0%
Арбитраж
0
Просрочено
0
Свободен
10
Разработчик 10
Оценка
(236)
Проекты
242
31%
Арбитраж
0
Просрочено
3
1%
Свободен
Опубликовал: 2 примера
11
Разработчик 11
Оценка
(535)
Проекты
613
34%
Арбитраж
34
38% / 47%
Просрочено
9
1%
Занят
12
Разработчик 12
Оценка
(77)
Проекты
232
73%
Арбитраж
6
100% / 0%
Просрочено
1
0%
Свободен
Похожие заказы
Shybossforex robot 30 - 50 USD
Shybossforex strategy full data continuation and reversal.The strategy of continuation and reversal is trading technique 5hat involves two different approach to trade execution.The continuation and reversal is based on assumption that current market trend will continuation in future and therefore inloves taking position in same direction as prevailing trending,I will wait for the pullback and continuation trade with
Hi, I’d like a bot to be made for Ninja Trader 8 to place and execute the trades but I want to use MT4 for the analysis and trade entry criteria. MT4 has different price data feeds so this strategy seems to work better when I use MT4 for the analysis to determine the entry. I’ve attached the strategy and rules and settings I want for the bot. Let me know if you think it will work to automate this strategy and do it
I’m seeking an experienced NinjaTrader / NinjaScript developer to help build a custom trading solution. The project includes: Creating a custom signal for NinjaTrader. Developing a separate indicator box showing green/red arrows based on direction. Using multiple timeframes: current chart, 5 min, 15 min, 30 min, and 1 hr. Automating the strategy with a reliable trading bot . Requirements: Proven experience with
I need a Expert Advisor based on 1H timeframe to open positions once fib levels are broken. 2 positions opened per trigger. First position closes at first TP level and the remaining open position moves stop loss to break even. Only one break out trigger allowed per day. Fib must be auto drawn in by EA according to time frames given. Time frames need to be adjustable too. 3 Moving averages needed. Two smaller MA for
i want to convert this RSI colored candle indicator from mt4 to mt5, with the following specifications . the parameters are included in the fiiles below and i also want to have the alert sent on the closing of the candles just lile it does in the mt4 platform
I am looking for a fully functional Expert Advisor that is optimized for Prop Firm Challenges (e.g. FTMO, etc.). Requirements: Stable algorithm designed to comply with typical challenge rules (drawdown limits, max daily loss, etc.) Strategy with strong risk management and consistent profitability Fully commented source code (MQ5/MQ4) Transparent performance proof (backtests or live results) Optional Features
I am looking for an experienced MQL5 developer to build a trading robot based on my personal strategy. The EA should be coded professionally, with efficiency, accuracy, and risk management in mind. Strategy Overview: The strategy is structure-based with Fibonacci retracement (0.618–0.79) as the primary Point of Interest (POI). Secondary confluences include order blocks, support/resistance, psychological levels, and
Hi, I’m looking for a NinjaTrader 8 developer. Please see my strategy on the video but right now I want to create only ATM as my PDF file showing please let me know how much would you charge me for the only ATM to work as my images showing thank you
Auto Cut Loss Tool 30 - 50 USD
I need a tool that will close a trade once price has breached a zone at the close of a candle. Please take look at the attached chart. There, I had a sell zone at 172.31 up to 172.60. I had a stop loss at 172.81. Price got into the zone and managed to hit 172.60 but the candle didn't close above it, so the Auto Cut Loss toll did not applied. Eventually, price hit and close above 172.60 at 172.63, at which the Auto
I am looking for an experienced MetaTrader 5 (MT5) developer to create a custom Retail Sentiment Index Indicator. The indicator will pull real-time sentiment data from multiple brokers via their APIs, calculate net sentiment (long – short), and plot each feed as a moving average line directly over the candlestick chart. The indicator must also display a weighted average line (thicker) when more than one broker feed

Информация о проекте

Бюджет
30 - 200 USD
Исполнителю
27 - 180 USD
Сроки выполнения
от 1 до 100 дн.