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%
Свободен
Опубликовал: 1 статью, 6 примеров
3
Разработчик 3
Оценка
(4)
Проекты
8
13%
Арбитраж
1
0% / 0%
Просрочено
0
Свободен
Опубликовал: 2 примера
Похожие заказы
Ищу разработчика с опытом работы с нейросетями, который поможет реализовать проект по созданию советника на основе нейросети. Система будет включать взаимодействие между MQL5 и внешним Python-скриптом (для вычислений и/или обучения модели). Сейчас у меня есть общее представление о том, как всё должно работать, но финальное техническое задание будет составлено после обсуждения деталей с выбранным исполнителем
Добрый день. Нужен советник на нейросети. Советник должен использовать LSTM-нейросеть, обученную на исторических данных EURUSD H1 за последние 5 лет. Входные признаки: OHLC, RSI(14), MACD(12,26,9). Выход модели – вероятность движения цены вверх/вниз с порогом входа 0.7. Управление рисками: 2% от депозита на сделку" - Нужна GPU-оптимизация для обучения. - переобучение модели в процессе работы
Нужен советник на основе индикатора Extreme Spike Indikator только для таймфрейма XAUUSD Н1 1.Робот открывает торги по сигналу индикатора Extreme Spike Indikator 2.Возможность указать лот с какого робот будет открывать торги 3.Возможность установить SL и отключить вовсе 4. Возможность установить TP в pips или $ 5.Возможность включить или выключить Мартингейла Помогите пожалуйста
Range Breakout EA Inputs: <General Settings> Timeframe Range Calculation: Chart timeframe used for range calculation (always use PERIOD_M1 for live trading and only change in tester if you do not have enough M1 data) (Trading Volume Modes): VOLUME_FIXED > Uses a fixed lot size for every trade VOLUME_MANAGED > Uses "Fixed Lots" per each „Fixed Lots Per x Money“ amount of money in your trading account VOLUME_PERCENT >
Взять за основу доступный бесплатный советник Dark Venus, написать нового советника который будет работать точно так же как Dark Venus с моими дополнениями и пожеланиями. Дополнения: - фильтр новостей на основе доступного бесплатного индикатора FXSSI.Calendar; - модифицировать фильтр времени добавив расписание торговли согласно фильтру новостей;
Интересует робот для мт5 который будет отмечать на графике Н1 горизонтальными линиями хай и лоу предыдущего дня и выставлять отложенные ордера, типа бай стоп лимит и селл стоп лимит. С фиксированным тейком и стопом, выставленным заранее в настройках. Пример: Ночью в 00:05 по МСК робот отмечает горизонтальными линиями ХАЙ и ЛОУ предыдущего дня и устанавливает за ними отл ордера на расстоянии в определенное количество
Бот для закрытия прибыли. Принцип работы: Я вручную ставлю отложенные ордера, включается бот и производит подсчет потенциальной прибыли, далее ожидает открытия ордера и ведет сделку. Пошла в плюс - закрываемся по ТП в валюте депозита или на предпоследнем открытом ордере +- погрешность в пунктах
// ------------------------------------ // Входные параметры // ------------------------------------ // Глобальные параметры для групп магиков extern int GlobalTP_Group1 = 20, GlobalSL_Group1 = 10, GlobalTrailingStart_Group1 = 10, GlobalTrailingStop_Group1 = 5; extern int GlobalTP_Group2 = 20, GlobalSL_Group2 = 10, GlobalTrailingStart_Group2 = 10, GlobalTrailingStop_Group2 = 5; extern int GlobalTP_Group3 = 20

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

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