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

Esperti

Specifiche

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

Con risposta

1
Sviluppatore 1
Valutazioni
(111)
Progetti
327
55%
Arbitraggio
17
12% / 47%
In ritardo
104
32%
Gratuito
2
Sviluppatore 2
Valutazioni
(187)
Progetti
367
56%
Arbitraggio
45
22% / 56%
In ritardo
188
51%
Gratuito
Pubblicati: 1 articolo, 6 codici
3
Sviluppatore 3
Valutazioni
(4)
Progetti
8
13%
Arbitraggio
1
0% / 0%
In ritardo
0
Gratuito
Pubblicati: 2 codici
Ordini simili
Имеется защищенный от копирования счет на МТ5, обычные копировщики не копируют его. Сделки только по eurusd.f c суффиксом .f Сделок не много, только сделка 1 в день. Доступ и пароль инвестора к счету предоставлю. Необходимо решение для копирования с этого счета, предполагаю, что система должна увидеть сделку визуально, например через BAS и дальше передать данные для открытия сделки в МТ5. Другие рабочие решения от
1. Загальна логіка Треба створити ЕА для MetaTrader 5 на основі індикатора Zig Zag (параметри індикатора стандартні: Depth, Deviation, Backstep) та рівнів Фібоначчі. Детально логіка входу описана в додатку до ТЗ. 2. Відкриття сету ордерів ЕА відкриває сет відкладених ордерів (кількість ордерів від 1 до 5) Для кожного ордеру задається - рівень входу (значення рівня Фібоначчі) - рівень SL
Суть ТС:Приход в POI старшего тф, вход в позицию на младшем тф Анализ графика начинается всегда со старшего тф. Должен быть понятный контекст для работы. Активы: EURUSD, XAUUSD POI старшего таймфрейма: Liquidity (1M, 1W, 1D, 4H, 1H) Imbalance (1M, 1W, 1D, 4H, 1H) Order Block (1M, 1W, 1D, 4H, 1H) HTF Fractals (1M, 1W, 1D, 4H, 1H) Всегда дожидаться цену в POI старшего таймфрейма. Вход в позицию: Слом LTF структуры на

Informazioni sul progetto

Budget
10- USD
Scadenze
a 5 giorno(i)