Mql4 to mql5 простой советник

Эксперты

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

Нужна конвертация простенького советника mql4 в mql5

#include <stdlib.mqh>

extern int Magic = 1;
extern double Lots = 0.1;

extern bool Tral = true;
extern int TrailingStopLoss = 30;
extern double Utral = 150;
extern bool Sound = true;

int slippage = 3;
static int prevtime = 0;

double FirstPositionPrice;

int order_MgcNum=0, err=0, ticket=0, res;
bool result = True;
double MyPoint;  

int init()
{
 if (Digits == 5 || Digits == 3)
  {
TrailingStopLoss=TrailingStopLoss*10;
  }
  return(0);
 }

int start() {
if (Tral) TrailingPositions(TrailingStopLoss, 1, Magic);

int total,cnt,pos,order;
string order_comment = Symbol()+", Period "+Period()+", ADX  "+Magic;

//if (Volume[0]>5) return(0);

double i1 = iADX(Symbol(),0,13,0,MODE_PLUSDI,0);
double i2 = iADX(Symbol(),0,13,0,MODE_MINUSDI,0);

if  (i1<i2) {
if(CheckExists(OP_SELL))   { 
    total=OrdersTotal(); pos=0;
    for (cnt=0;cnt<total;cnt++) {
        OrderSelect(cnt, SELECT_BY_POS);
        if ((OrderSymbol() == Symbol())&&(OrderMagicNumber()==Magic)) {
            order=OrderTicket(); pos=1;
            if (IsTradeAllowed() && (OrderType() == OP_BUY)) { 
               RefreshRates();// Новые Аск и Бид
               result = OrderClose(order,Lots,Bid,3);
               if (result)OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,order_comment,Magic,0,Red);
               if (!result) {
                  err=GetLastError();
                  } return(0);
               }
            }
        }
    if ((pos==0) && IsTradeAllowed()) {
        RefreshRates();// открытие с рынка
         res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,order_comment,Magic,0,Red);
         if (res<0) {Alert("Ошибка открытия ордера SELL #", GetLastError()); return (0);}              
         return(0);
        }
    }
   }
if  (i1>i2) {
if(CheckExists(OP_BUY))   { 
    total=OrdersTotal(); pos=0;
    for (cnt=0;cnt<total;cnt++) {
        OrderSelect(cnt, SELECT_BY_POS );
        if ((OrderSymbol() == Symbol()) && (OrderMagicNumber() == Magic)) {
            order=OrderTicket(); pos=1;
            if (IsTradeAllowed()&& (OrderType() == OP_SELL)) {
               RefreshRates();// Новые Аск и Бид
               result = OrderClose(order,Lots,Ask,3);
               if(result)OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,order_comment,Magic,0,Lime);
               if(!result){
                  err=GetLastError();
                  } return(0);
               }
            }
        }
    if ((pos==0) && IsTradeAllowed()) {
        RefreshRates();// открытие с рынка
         res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,order_comment,Magic,0,Lime);
         if (res<0) {Alert("Ошибка открытия ордера BUY #", GetLastError()); return (0);}              
         return(0);
        }
    }
   }
return(0);
}
//---------------------------------------------------------------------------------+
void TrailingPositions(int trailingStopLoss, int trailingStep, int MagicNumber) {
   double bid = 0;
   double ask = 0;
   double X=1;

   for (int i = 0; i < OrdersTotal(); i++) {
      if (!(OrderSelect(i, SELECT_BY_POS)) || OrderSymbol() != Symbol() ) {
         continue;
      }
      
      bid = MarketInfo(OrderSymbol(), MODE_BID);
      ask = MarketInfo(OrderSymbol(), MODE_ASK);
      
      
      if (OrderType() == OP_BUY&&Bid-OrderOpenPrice()<Utral*Point&&OrderMagicNumber() == MagicNumber) {
         if (bid - OrderOpenPrice() > X*trailingStopLoss * Point) {
            if (OrderStopLoss() < bid - (X*trailingStopLoss + trailingStep - 1) * Point || OrderStopLoss() == 0) {
               OrderModify(OrderTicket(), OrderOpenPrice(), bid - X*trailingStopLoss * Point, OrderTakeProfit(), OrderExpiration(),Aqua);
               if(Sound == true)PlaySound("ok.wav");
            }
         }
      } else if (OrderType() == OP_SELL&&OrderOpenPrice()-Ask<Utral*Point&&OrderMagicNumber() == MagicNumber) {
         if (OrderOpenPrice() - ask > X*trailingStopLoss * Point) {
            if (OrderStopLoss() > ask + (X*trailingStopLoss + trailingStep - 1) * Point || OrderStopLoss() == 0) {            
               OrderModify(OrderTicket(), OrderOpenPrice(), ask + X*trailingStopLoss * Point, OrderTakeProfit(), OrderExpiration(),Aqua);
               if(Sound == true)PlaySound("ok.wav");
            }
         }
      }
   }

}
  
bool CheckExists(int Type)
 {
  bool Result = True;
  for(int i = 0; i < OrdersTotal(); i++)
   if(OrderSelect(i, SELECT_BY_POS))
    if(OrderType() == Type && OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
     if(OrderOpenTime() >= Time[0])
      Result = False;
  for(i = 0; i < OrdersHistoryTotal(); i++)
   {
    if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
     if(OrderType() == Type && OrderOpenTime() >= Time[0] 
        && OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
      Result = False;
    }    
      
  return(Result);    
  }

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

1
Разработчик 1
Оценка
(111)
Проекты
327
55%
Арбитраж
17
12% / 47%
Просрочено
104
32%
Свободен
2
Разработчик 2
Оценка
(187)
Проекты
367
56%
Арбитраж
45
22% / 56%
Просрочено
188
51%
Свободен
3
Разработчик 3
Оценка
(4)
Проекты
8
13%
Арбитраж
1
0% / 0%
Просрочено
0
Свободен
Похожие заказы
Доброго дня, коллеги! Нужен хороший программист, имеющий достаточный опыт в реализации советника с использованием локирования. В советнике использовано усреднение, а при помощи тёх индикаторов из метатрейдер будет происходить измерение тренда и тенденции. Размещаю ссылку на статью про локирование ( https://equity.today/lokirovanie-v-trejdinge.html ) просьба изучить и если не понимаете как это отобразить в коде, лучше
Доброго дня, коллеги! Нужен хороший программист, имеющий достаточный опыт в реализации советника с использованием локирования. В советнике использовано усреднение, а при помощи тёх индикаторов из метатрейдер будет происходить измерение тренда и тенденции. Размещаю ссылку на статью про локирование ( https://equity.today/lokirovanie-v-trejdinge.html ) просьба изучить и если не понимаете как это отобразить в коде, лучше
Код советника для МТ4, создающего большой торговый оборот и имеющим небольшие просадки. Можно стратегии с замками, пирамидингом, усреднением, стопами, рассмотрим все варианты. Желательно, чтобы были тесты на истории и с демки
Торговый робот анализирующий уровни пробоев на график вью на форекс торгующий на прорыв уровней как на покупку так и на продажу с усреднением в нескольких таймфреймах (1час,2 часа, 3 часа, 4часа,1 день),выставлением тейк профит и стоп селл и заключающий сделки на мт5 ТЗ все фото отчёты всю информацию уже обсуждаем непосредственно при договорённости
Ищем разработчика для создания копира сигналов из Telegram в MT4 с функциями фильтрации сигналов и гибкими настройками ордеров, без использования DLL. Основные возможности должны включать фильтрацию сигналов по ключевым словам, настраиваемые уровни SL/TP, поддержку нескольких каналов и управление размером лота (фиксированный, на основе баланса или из сигнала). Решение должно обрабатывать различные форматы сигналов
Здравствуйте. Простыми словами суть проекта: 1. Есть формула и схема расчета ускорения цены. К этому есть индикатор Хейкен Аши. 2. Необходимо посчитать бары ускорения в трендовом цикле Хейден Аши и отобразить их в подокне индикатора в текущем ТФ относительно нулевой линии. С дискретностью свечей ТФ. 3. Необходимо далее применить эту схему расчета к историческим данным за период, на основании их построить сглаженные
Требуется создать торгового робота на трендовой торговли с реверсом (Long/short и обратно) TF от 1м до 1н Подробное ТЗ обсуждается отдельно, имею 7 лет опыта в маржинальной торговли по различным индикаторам. Ввиду профессиональной потери зрения затруднительно общение через переписку! Связь +79175859811 Анатолий
Здравствуйте друзья! Интересуют советники с историей торговли, хотя бы с результатами на демо счёте. Желательно, чтобы имелось положительное математическое ожидание у данной стратегии. Также необходима версия для тестера. Благодарю за ваши ответы
Здравствуйте, коллеги. Имеется базовый советник. В основе - двухстороння сетка, мартингейл. Сигнал входа в рынок на базе двух индикаторов, выход - TP, SL. В общем, все несложно. Присутствует визуализация: динамические TP, SL, маркеры линий открытия\закрытия торговых цикла. Что необходимо добавить: 1. Есть небольшие и бестолковые косяки, их не очень много. Например, переделать несколько переключателей во входных
Нужна программа копировщик сделок с одного счета deriv на другой при помощи API токена. Параметры: Можно выбрать по какому риск менеджменты копируются сделки (masaniello или Лабушер, мартингейл, антимартингейл, усреднение (усреднение это задаем количество колен по мартину, если плюс на первой серии, то возвращается к первоначальному лоту, если закрывается убыток, то лот рассчитывается по формуле –результат/количество

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

Бюджет
10- USD
Сроки выполнения
до 5 дн.