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

Experts

Spécifications

Нужна конвертация простенького советника 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);    
  }

Répondu

1
Développeur 1
Évaluation
(111)
Projets
327
55%
Arbitrage
17
12% / 47%
En retard
104
32%
Gratuit
2
Développeur 2
Évaluation
(187)
Projets
367
56%
Arbitrage
45
22% / 56%
En retard
188
51%
Gratuit
Publié : 1 article, 6 codes
3
Développeur 3
Évaluation
(4)
Projets
8
13%
Arbitrage
1
0% / 0%
En retard
0
Gratuit
Publié : 2 codes
Commandes similaires
Здравствуйте. Нужен такой вот советник. На одном счёте планируется торговать несколько советников. Советник, перед тем как войти в позицию сравнивает количество лотов на покупку и на продажу и открывает в ту сторону, где лотов меньше. Далее будут идти блоки. Как пирамида. Количество регулируется. До 30. Суть. Начинаем с первого блока. Это обычная настраиваемся сделка. Количество лотов. Стоп профит. Если проигрывает
Добрый день! Уважаемые программисты нужно модифицировать один советник. Советник работает по разворотной стратегии согласно сигналам индикатора. Нужно добавить три Take_Profit (в пунктах) и три Lot_size для каждого Take_Profit в основные настройки советника, при достижении которых будет частичное закрытие ордера. Советник должен работать как с брокером с неттингом, так и с брокером с хеджированием
Робот пипсовщик на свечном или тиковом графике. Только скорость. Написать робота пипсовщика (скальпера), который бы на минутном таймфрейме отслеживал скорость движения по тиковому графику или скорости движения свечи или свечей пипсов в секунду( миллисекундах). И момент волатильности входил в рынок. Важно все волатильные движения на рынке брать в плюс. Сегодня минутная свеча на GBPUSD была 108 пипсов. Но робот должен
Описание задачи: Нужен опытный разработчик на MQL4, который поможет другому программисту (работает через нейросеть, но слабо знаком с MQL4) разобраться в логике и корректно реализовать советника. Цель проекта: Создать стабильного советника, который будет принимать сигналы с мастер-счёта (счёт трейдера у брокера N) и синхронизировать их на клиентском счёте. ✅ Основной функционал: Синхронизация сделок между счётами
Создание торговой панели ( для торговли на бирже bybit ) подключение через API Торговля фьючами Имеется простая торговая панель для мт5 ( возможности панели : открытие ордеров сопровождения ордеров. мартингейл . закрытие ордеров . статистика по открытым ордерам. выбор торгового инструмента ) Нужно переделать данную панель для торговли на бире с полным переносом всех функций Все нюансы обсуждаются Интересует
Есть торговый советник , работающий на графиках рендж-баров, формируемых советником рендж-баров через пользовательский символ. Процесс формирования отдельных графиков (чартов) происходит нормально. Однако при торговле сделки открываются с ценами вне тела свечи. Кроме того сами рендж-бары также могут формироваться с ошибками, не отражая прошедшее движение цены. Более подробно описано в техзадании
1. Помощник трейдера Мы ищем талантливого и мотивированного помощника трейдера для нашей команды. Если Вы увлечены финансовыми рынками и обладаете навыками программирования, мы будем рады видеть Вас в нашей команде! Основные обязанности: Разработка скриптов для платформы MetaTrader 5 (MT5). Тестирование параметров торговых алгоритмов. Выставление лимитов по алгоритмам в соответствии с установленными стратегиями

Informations sur le projet

Budget
10- USD
Délais
à 5 jour(s)