Ищу напарника! с торговой системой, а я бесплатно напишу код советника MQL 4 - страница 2

 
Serhiy Dotsenko:

оно то да... только почему-то это понимание есть только в программерской прослойке... среди трейдеров эта платформа будет жыть веечно )

почти все заказы под МТ4... хотя ооч. хоцца писать под мт5 ) но что поделать... кто деньги платит... тот...

Фик знает, я специально начал с 5, т.к. продукт развивается и два языка программирования изучать очень лень... я использую мт - как терминал и тестер, стратегии посчитать на каких-то хитрых индикаторах- можно сказать что только с++ точно справится при наличии boost'a... встроенные языки трейдерского по - они не "из разряда мощьных балидов"... но то, что есть терминал и тестер в мт бесплатный  уже очень нормально для меня...
 
Serhiy Dotsenko:

оно то да... только почему-то это понимание есть только в программерской прослойке... среди трейдеров эта платформа будет жыть веечно )

почти все заказы под МТ4... хотя ооч. хоцца писать под мт5 ) но что поделать... кто деньги платит... тот...

А я вот не вполне понимаю, какая разница для программиста-то ?

Даже напрямую, сходу - код для МТ4 и МТ5 очень близок.

Если же немного повозиться, и написать классы-обертки для всех объектов, работающих на МТ4 и МТ5 по-разному, можно писать на 100% переносимый код, который абсолютно одинаково будет компилироваться и работать как в МТ4, так и в МТ5 

 
George Merts:

Если же немного повозиться, и написать классы-обертки для всех объектов, работающих на МТ4 и МТ5 по-разному, можно писать на 100% переносимый код, который абсолютно одинаково будет компилироваться и работать как в МТ4, так и в МТ5 

вот именно в этом и разница ), что всё уже написано за нас )

но это если поверхносно... а если по глубже и по сути.... то в мт5 больше событий на которые можно реагировать и настоящий биржевой стакан... но для форекс-трейдеров.... это всё конечно пустой звук... ооч. далёкий от того что им нужно )) 

 
Dmitro:
Фик знает, я специально начал с 5, т.к. продукт развивается и два языка программирования изучать очень лень... я использую мт - как терминал и тестер, стратегии посчитать на каких-то хитрых индикаторах- можно сказать что только с++ точно справится при наличии boost'a... встроенные языки трейдерского по - они не "из разряда мощьных балидов"... но то, что есть терминал и тестер в мт бесплатный  уже очень нормально для меня...
по моему, Вы слишком глубоко копаете ) не думаю, что можно придумать какой-то индикатор, который без Boost никак не запрограммировать.... Boost, всего-навсего... это набор уже написанных велосипедов, не более )
 
Serhiy Dotsenko:
по моему, Вы слишком глубоко копаете ) не думаю, что можно придумать какой-то индикатор, который без Boost никак не запрограммировать.... Boost, всего-навсего... это набор уже написанных велосипедов, не более )
Serhiy Dotsenko:
по моему, Вы слишком глубоко копаете ) не думаю, что можно придумать какой-то индикатор, который без Boost никак не запрограммировать.... Boost, всего-навсего... это набор уже написанных велосипедов, не более )
С точки зрения программиста начала 60-х годов, программирующего в машинных кодах (даже еще не на ассемблере), MQL4/5 и С++ тоже набор велосипедов :))) Boost, STL и другие библиотеки просто сокращают время разработки. Так же, как о ООП-языки в сравнении с чисто процедурными.
 
самый низкоуровневый язык в моей практике это Си, мож когда-нибудь и до ассемблера руки дойдут )
 
Нужна функция изменения сдвига скользящих.Буду благодарен
Файлы:
 

У меня есть советник,который нужно доработать( он не закрывает самостоятельно сделки, при разрешенной торговли и не выполнены два параметра: указание области закрытия и указание размера объема частичного закрытия) )Описание ТЗ находится в этой теме:https://www.mql5.com/ru/forum/35071/page38#comment_2019585 . Программист,который писал этот советник интересовался прежде всего написанием любого советника на основе линий боллинджера и дальше его дорабатывать не планирует. Во вложении статистика стратегии на истории, на которой основан советник и стейтменты полуторонедельного прогона советника на VPS( запущены три термниала с разным манименеджментом ). Ниже приведен код:


#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input int      BBPeriod=20;
input double   BBdeviation=2.0;
input int      ADX=14;
input double   AdxLevel=25;
input double      SL=2000;
input double      TP=0;
input int      Obuy=5;
input int      Osell=5;
input double   Lot=0.1;
input bool     CloseMiddle=true;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
bool buyOpen=false;
bool sellOpen=false;
double _Obuy;
double _OSell;
int TryShots= 3;
int Slippage=50;                         // Slippage
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   _Obuy=Obuy/100;
   _OSell=Osell/100;

   if(!IsTradeAllowed())
     {
      string message="You must allow trading!";
      Print(message);
      Comment(message);
      return INIT_FAILED;
     }

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

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime prevTime;
   datetime currentTime=iTime(Symbol(),0,0);
   if(prevTime==currentTime)
     {
      return;
     }
   else
     {
      prevTime=currentTime;
     }

   double adx=iADX(NULL,0,ADX,PRICE_CLOSE,0,2);

   if(adx<AdxLevel)
     {
      double bbMain1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,2);
      double close=iClose(NULL,0,2);
      if(!buyOpen)
        {
         double bbDown1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,2,2);
         BuyPosition(bbDown1,bbMain1,close);
        }
      else
        {
         double currentClose=iClose(NULL,0,0);
         double currentBB=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,0);
         if(CloseMiddle && currentClose>currentBB)
           {
            CloseOpenPos(OP_BUY);
            buyOpen=false;
           }
        }

      if(!sellOpen)
        {
         double bbUp1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,1,2);
         SellPosition(bbUp1,bbMain1,close);
        }
      else
        {
         double currentClose=iClose(NULL,0,0);
         double currentBB=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,0);
         if(CloseMiddle && currentClose<currentBB)
           {
            CloseOpenPos(OP_SELL);
            sellOpen=false;
           }
        }
     }

  }
//+------------------------------------------------------------------+

void BuyPosition(double bbDown,double bbMain,double close)
  {
   double dif=bbMain-bbDown;
   double proc=dif *_Obuy;
   double DownProc=bbDown+proc;

   if(close<DownProc)
     {
      double openCurrent=iOpen(NULL,0,1);
      double closeCurrent=iClose(NULL,0,1);
      if(closeCurrent>openCurrent)
        {

         for(int it=0; it<TryShots; it++)
           {
            ResetLastError();
            RefreshRates();
            double sl,tp;
            if(SL!=0)
               sl=NormalizeDouble(Bid-SL*Point,Digits);
            if(TP!=0)
               tp=NormalizeDouble(Bid+TP*Point,Digits);
            Print(Ask+" sl"+sl+" tp"+tp);
            if(!OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),Slippage,sl,tp))
              {
               if(it>=TryShots) { Print("Failed OP_BUY !"); break; }
               int err=GetLastError();
               if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*it);
               else { Print("Failed OP_BUY !"); break; }
              }
            else
              {
               buyOpen=true;
               break;
              }

           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SellPosition(double bbUp,double bbMain,double close)
  {
   double dif=bbUp-bbMain;
   double proc=dif*_OSell;
   double UpProc=bbUp-proc;

   if(close>UpProc)
     {
      double openCurrent=iOpen(NULL,0,1);
      double closeCurrent=iClose(NULL,0,1);
      if(closeCurrent<openCurrent)
        {
         for(int it=0; it<TryShots; it++)
           {
            ResetLastError();
            RefreshRates();
            double sl,tp;
            if(SL!=0)
               sl=NormalizeDouble(Ask+SL*Point,Digits);
            if(TP!=0)
               tp=NormalizeDouble(Ask-TP*Point,Digits);
            Print(Bid+" sl"+sl+" tp"+tp);
            if(!OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,sl,tp))
              {
               if(it>=TryShots) { Print("Failed OP_SELL !"); break; }
               int err=GetLastError();
               if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*it);
               else { Print("Failed OP_SELL !"); break; }
              }
            else
              {
               sellOpen=true;
               break;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Close open position                                              |
//+------------------------------------------------------------------+
void CloseOpenPos(int or_tp)
  {
   int i,err,k=OrdersTotal();
//---
   for(i=k-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(or_tp==OrderType())
              {
               for(int it=0; it<TryShots; it++)
                 {
                  ResetLastError();
                  RefreshRates();
                  double _price=Ask; if(or_tp==OP_BUY) _price=Bid;
                  //---
                  if(!OrderClose(OrderTicket(),OrderLots(),_price,Slippage))
                    {
                     if(it>=TryShots) { Print("Failed to close the order ",OrderTicket(),"!"); break; }
                     err=GetLastError();
                     if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*100);
                     else { Print("Failed to close the order ",OrderTicket(),"!"); break; }
                    }
                  else break;

                 }
              }
           }
        }
     }
  }

//+------------------------------------------------------------------+
Напишу советник бесплатно
Напишу советник бесплатно
  • www.mql5.com
Если у вас есть хороая стратегия, и вы готовы ей поделиться,могу написать советника. - Страница 38 - Категория: эксперты форекс, торговые роботы и советники
 
Adelaur:


Пожалуйста исправьте сообщение и вставьте код правильно: (Правильно вставляем код на форуме) и перед вставкой желательно пользоваться стилизатором кода.
 
Alexey Kozitsyn:

Вы меня конечно извините, но я повторю вопрос: где-то в правилах написано, что нельзя так сотрудничать?  

А правил форума не существует ))) Я в течении года пытался узнать об этих правилах - тщетно, только Условия использования сайта (в подвале)
Причина обращения: