Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1695

 
MakarFX #:

Gracias Makar, voy a adjuntarlo al EA y a echarle un vistazo.

 
MakarFX #:

Makar gracias Todo funciona tal y como quería. ¡¡¡Gracias!!!

 
MakarFX #:

Me gustaría que las líneas innecesarias se borraran solas, digamos que después de 24 horas.

¡¡¡Gracias de antemano!!!

 
EVGENII SHELIPOV #:

Me gustaría que las líneas innecesarias se borraran solas, digamos que después de 24 horas.

¡¡¡Gracias de antemano!!!

int OnInit()
  {
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
     {
      ObjectCreate(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StartTime*3600),0);
      ObjectSetInteger(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
      ObjectCreate(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StopTime*3600),0);
      ObjectSetInteger(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
     }
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
     {
      if(ObjectFind(0,"Начало торговли"+TimeToString(Time[1],TIME_DATE))==0)
        {
         ObjectMove(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),0,Time[0]+(StartTime*3600),0)
         ObjectMove(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),0,Time[0]+(StopTime*3600),0)
        }
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }

   //-----
  }
 
Nerd Trader #:

De la ayuda:
"Para asegurarse de que obtiene una secuencia no repetitiva, utilice MathSrand(GetTickCount()), ya que GetTickCount() ha ido aumentando desde el inicio del sistema operativo y no se repetirá durante 49 días".

utilizar una calculadora para ver cuántos intentos se necesitan para obtener el primer valor repetido (cualquiera de los generados previamente) para rand()

 

Por mi experiencia, no escribas en cirílico

Apertura de ECN MT4

/+----------------------------------------------------------------------------+
//|    Функция открытия ордера  (c) BeerGod 2015                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                                                           |
//|    ll - лот                                                                |
//|    sl - уровень стоп                                                       |
//|    tp - уровень тейк                                                       |
//|    mn - MagicNumber                                                        |
//+----------------------------------------------------------------------------+
//  OpenPosition(string symbol,int operation,double volume,int slippage,double stoploss,double takeprofit,string comment,int magic,color);
int OpenPosition(string sy, int op, double ll, int Slippage, int sl, int tp, string comment, int mn,color Color)
  {
   if(op == 0)  // открытие BUY
     {
      // проверяем доступность свободных средств
      if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134))
        {
         Print(sy," ",ll," It is impossible to open the order Buy, not enough money.");
         return(0);
        }
      RefreshRates();

      // открываем ордер
      int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,comment,mn,0,Color);
      if(ticketbuy<0)
         Print(sy," OpenPosition. OrderSend Buy fail #",GetLastError());
      else
         Print(sy," OpenPosition. OrderSend Buy successfully");

      //      Sleep (Pause);

      // модифицируем ордер (выставляем тейпрофит и стоплосс)
      if(sl !=0 || tp !=0)
        {
         //--- вычисленные значения цен SL и TP должны быть нормализованы
         double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
         double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
         //--- если входящие значения ноль то заменяем цену модификации на ноль
         if(sl == 0)
            BSLoss = 0;
         if(tp == 0)
            BTProfit = 0;

         bool resbuy = OrderModify(ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,clrNONE);
         if(!resbuy)
            Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError());
         else
            Print(sy," OpenPosition. OrderModify Buy successfully");
        }
     }

   if(op == 1)   // открытие Sell
     {
      // проверяем доступность свободных средств
      if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134))
        {
         Print(sy," ",ll," It is impossible to open the order Sell, not enough money.");
         return(0);
        }
      RefreshRates();

      // открываем ордер
      int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,comment,mn,0,Color);
      if(ticketsell<0)
         Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError());
      else
         Print(sy," OpenPosition. OrderSend Sell successfully");

      //      Sleep (Pause);

      // модифицируем ордер (выставляем тейпрофит и стоплосс)
      if(sl !=0 || tp !=0)
        {
         //--- вычисленные значения цен SL и TP должны быть нормализованы
         double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
         double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
         //--- если входящие значения ноль то заменяем цену модификации на ноль
         if(sl == 0)
            SSLoss = 0;
         if(tp == 0)
            STProfit = 0;

         bool ressell = OrderModify(ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,clrNONE);
         if(!ressell)
            Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError());
         else
            Print(sy," OpenPosition. OrderModify Sell successfully");
        }
     }
   return (0);
  }
//--- End ---
 

¡Buenos días a todos!

Por favor, aconséjeme donde puede encontrar información básica sobre el array bidimensional dinámico en MQL4. En primer lugar, me interesa saber cómo se crea. ¿Cómo se utiliza? ¿Qué funciones se le pueden aplicar?
Gracias.

 
ANDREY #:

¡Buenos días a todos!

Por favor, indíqueme dónde puede encontrar la información básica sobre los arrays dinámicos bidimensionales en MQL4. En primer lugar, me interesa saber cómo se crea. ¿Cómo se utiliza? ¿Qué funciones se le pueden aplicar?
Gracias.

Documentación Matrices

Y la dinámica es sólo en la primera dimensión. Las demás dimensiones son estáticas.
Объект динамического массива - Типы данных - Основы языка - Справочник MQL4
Объект динамического массива - Типы данных - Основы языка - Справочник MQL4
  • docs.mql4.com
Объект динамического массива - Типы данных - Основы языка - Справочник MQL4
 
Valeriy Yastremskiy #:

Matrices de documentación

Y dinámicamente sólo en la primera dimensión. Las demás dimensiones son estáticas.

CArray, y similares - puedes hacer matrices dinámicas de cualquier dimensión, modificables en cualquier dimensión.

Документация по MQL5: Стандартная библиотека / Коллекции данных
Документация по MQL5: Стандартная библиотека / Коллекции данных
  • www.mql5.com
Коллекции данных - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin #:

CArray, y similares - puedes hacer matrices dinámicas de cualquier dimensión, modificables en cualquier dimensión.

Gracias por su ayuda. Pero me das un enlace a la información sobre arrays dinámicos en MQL5. Todavía estoy dominando MQL4, o el código de MQL5 también es adecuado paraMQL4 con respecto a las matrices dinámicas ?
Gracias
.