AVPetrovich

 
Уровень 7

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Ищу поручителя Стратегия для МТ5

Ищу поручителя доделать советник. ТЗ тут zakaz.opentraders.ru/131740.html
Сделать если цена идет вниз то ставим ордер селл.

как на картинки. Первый ордер бай второй хеджирует ставит селл.
  • 0
  • Просмотров: 462
  • 30 августа 2024, 21:16
  • AVPetrovich
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Стратегия для МТ5
28 августа 2024
01 сентября 2024

Брокер для ваших роботов, 15 лет на рынке

Комментарии (2)

+
0
Готов стать поручителем.
avatar

  9  zanoza Сообщений: 44

  • 30 августа 2024, 21:30
+
+1
готово:


//+------------------------------------------------------------------+
//|                                                        Petro.mq5 |
//|                                             Copyright 2024, AM2. |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, AM2."
#property link      "http://www.forexsystems.biz"
#property version   "1.00"

#include <Trade\Trade.mqh>            // Подключаем торговый класс CTrade

//--- входные параметры группы 1
input double   Lot1      = 1;         // лот 1
input double   Lot2      = 0.5;       // лот 2
input double   Profit    = 11;        // Профит в валюте

input string   Symb1     = "EURUSD";  // 1-й символ
input string   Symb2     = "GBPUSD";  // 2-й символ

input int      Step      = 333;       // шаг
input int      Slip      = 30;        // Проскальзывание

CTrade trade;                         // Используем торговый класс CTrade
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(string symb="")
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb || PositionGetString(POSITION_SYMBOL)==NULL)
           {
            trade.PositionClose(PositionGetTicket(i),Slip);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|  Position Profit                                                 |
//+------------------------------------------------------------------+
double AllProfit(string symb="")
  {
   double p=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb || PositionGetString(POSITION_SYMBOL)==NULL)
           {
            p+=PositionGetDouble(POSITION_PROFIT)+PositionGetDouble(POSITION_SWAP);
           }
        }
     }

   return(p);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(string symb)
  {
   int count=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb || PositionGetString(POSITION_SYMBOL)==NULL)
           {
            if(OrderGetInteger(ORDER_TYPE)<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double FindLastBuyPrice(string symb)
  {
   double pr=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)) && PositionGetInteger(POSITION_TYPE)==0)
        {
         if(PositionGetString(POSITION_SYMBOL)==symb)
           {
            pr=PositionGetDouble(POSITION_PRICE_OPEN);
            break;
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|  Position Profit                                                 |
//+------------------------------------------------------------------+
int PositionType(string symb)
  {
   int type=8;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb)
           {
            type=(int)PositionGetInteger(POSITION_TYPE);
            break;
           }
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trade(string symb)
  {
   double pr=0;
   double ask=SymbolInfoDouble(symb,SYMBOL_ASK);
   double bid=SymbolInfoDouble(symb,SYMBOL_BID);
   int dg=(int)SymbolInfoInteger(symb,SYMBOL_DIGITS);
   double pp=SymbolInfoDouble(symb,SYMBOL_POINT);

   if(CountTrades(Symb1)<1)
     {
      pr=NormalizeDouble(ask,dg);
      trade.Buy(Lot1,Symb1,pr,0,0,"");
     }

   if(CountTrades(Symb2)<1 && CountTrades(Symb1)>1)
     {
      pr=NormalizeDouble(ask,dg);
      trade.Sell(Lot1,Symb2,pr,0,0,"");
     }

   if(CountTrades(symb)>0 && CountTrades(symb)<2)
     {
      if(PositionType(symb)==0 && (FindLastBuyPrice(symb)-ask)/pp>=Step)
        {
         trade.Sell(Lot2,symb,bid,0,0);
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Symb1!="")
      Trade(Symb1);

   if(Symb2!="")
      Trade(Symb2);

   if(AllProfit(NULL)>Profit)
      CloseAll(NULL);

   if(AllProfit(Symb1)>Profit)
      CloseAll(Symb1);

   if(AllProfit(Symb2)>Profit)
      CloseAll(Symb2);
  }
//+------------------------------------------------------------------+



avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 2 сентября 2024, 10:14

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий