LUA или MQ5 - что перспективнее? - страница 3

 

mavar:

Дайте, пожалуйста, ссылку на готового но простого (элементарного) робота. Желательно по болленжеру или скользящей средней.

https://www.mql5.com/ru/code/1921
Moving Average
Moving Average
  • голосов: 27
  • 2013.10.28
  • MetaQuotes Software Corp.
  • www.mql5.com
Советник Moving Average торгует по пересечению ценой скользящей средней.
 
Renat:


И главное, MQL4 и MQL5 - это физически один язык (и один компилятор), просто для четверки есть поддержка старых функций.


Когда же будет обещанный Вами класс CTrade в MT4?
 
vicmos:
Когда же будет обещанный Вами класс CTrade в MT4?

Неужели не в состоянии написать написать сами?

У нас большая загрузка, не успеваем.

 
mavar:

Всю ночь глаз не сомкнул.

Очень много информации, потерялся!


Дайте, пожалуйста, ссылку на готового но простого (элементарного) робота. Желательно по болленжеру или скользящей средней.

Есть поиск на сайте и выбор категории сайта. В разделе кодов нужная вам информация.
 

"Когда же будет обещанный Вами класс CTrade в MT4?"

Я вот так сделал не знаю на сколько это идеально но вроде работает


//+------------------------------------------------------------------+
//| Voldemar https://www.mql5.com/ru/users/voldemar                |
//+------------------------------------------------------------------+
struct SendOrders
  {
   string            symbol;
   int               type;
   double            lots;
   double            price;
   int               slippage;
   double            stoploss;
   double            takeprofit;
   string            comment;
   int               magic;
   datetime          expiration;
   color             arcolor;
   int               ticket;
   int               rezult;
   int               digits;
   double            point;
   double            breakeven;
   double            breakstep;
   double            trailing;
   double            trailstep;

   void              F_SendOrder(SendOrders  &str);
   void              F_ModifyOrder_SL_TP(SendOrders  &str);
   void              F_ModifyOrder_BR_TR(SendOrders  &str);
   void              F_Counter(const int type,int  &cc);
                     SendOrders();
                    ~SendOrders();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
SendOrders ::  SendOrders()
  {
   symbol      = _Symbol;
   slippage    = 0;
   stoploss    = 0;
   takeprofit  = 0;
   expiration  = 0;
   arcolor=clrNONE;
   digits      =_Digits;
   point       =_Point;
   breakeven   = 0;
   breakstep   = 0;
   trailing    = 0;
   trailstep   = 0;
   ticket      = 0;
  }
SendOrders :: ~SendOrders(){  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SendOrders :: F_Counter(const int typ,int  &cc)
  {
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         if(OrderMagicNumber()==magic || magic==-1)
            if(OrderSymbol()==symbol || symbol==NULL)
               if(OrderType()==typ || typ==-1)cc++;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SendOrders :: F_SendOrder(SendOrders  &str)
  {
   int p=0;
   if(str.type==OP_BUY ) str.price=NormalizeDouble(MarketInfo(str.symbol,MODE_ASK),str.digits);
   if(str.type==OP_SELL) str.price=NormalizeDouble(MarketInfo(str.symbol,MODE_BID),str.digits);

   if(str.lots<MarketInfo(str.symbol,MODE_MINLOT))str.lots =MarketInfo(str.symbol,MODE_MINLOT);
   if(str.lots>MarketInfo(str.symbol,MODE_MAXLOT))str.lots =MarketInfo(str.symbol,MODE_MAXLOT);

   while(!IsTradeContextBusy() && p<5)
     {
      str.ticket=OrderSend(
                           str.symbol,
                           str.type,
                           str.lots,
                           str.price,
                           str.slippage,
                           str.stoploss,
                           str.takeprofit,
                           str.comment,
                           str.magic,
                           str.expiration,
                           str.arcolor );
      if(str.ticket>=0)
        {
         str.rezult=str.ticket;
         return;
        }
      else
        {
         p++;
         str.rezult=str.ticket;
         str.comment=(string)GetLastError();
         Sleep(500);
        }
     }
  }

Хотел возврат результата сделать через другую копию структуры, но копировать структуры в структуры нельзя, во всяком случае если в структуре есть тип стринг, поэтому реализовал немного иначе, 

моя структура содержит еще переменные для трала и безубытка , но над методом я еще не работал.