MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1124

 
Vladimir Karputov :

ENUM_TRADE_REQUEST_ACTIONS

tanımlayıcı

Tanım

TRADE_ACTION_DEAL

Belirtilen parametrelerle (piyasa emri) anında icra için bir ticaret emri verin

TRADE_ACTION_PENDING

Belirtilen koşullar altında yürütülmesi için bir ticaret emri verin (bekleyen emir)

Bekleyen bir emir vermek için TRADE_ACTION_PENDING ticaret işlemi örneği:

 #property description "Example of placing pending orders"
#property script_show_inputs
#define EXPERT_MAGIC 123456                              // MagicNumber of the expert
input ENUM_ORDER_TYPE orderType= ORDER_TYPE_BUY_LIMIT ;   // order type
//+------------------------------------------------------------------+
//| Placing pending orders                                           |
//+------------------------------------------------------------------+
void OnStart ()
  {
//--- declare and initialize the trade request and result of trade request
   MqlTradeRequest request={ 0 };
   MqlTradeResult   result={ 0 };
//--- parameters to place a pending order
   request.action   = TRADE_ACTION_PENDING ;                             // type of trade operation
   request.symbol   = Symbol ();                                         // symbol
   request.volume   = 0.1 ;                                               // volume of 0.1 lot
   request.deviation= 2 ;                                                 // allowed deviation from the price
   request.magic    =EXPERT_MAGIC;                                     // MagicNumber of the order
   int offset = 50 ;                                                     // offset from the current price to place the order, in points
   double price;                                                       // order triggering price
   double point= SymbolInfoDouble ( _Symbol , SYMBOL_POINT );                 // value of point
   int digits= SymbolInfoInteger ( _Symbol , SYMBOL_DIGITS );                 // number of decimal places (precision)
   //--- checking the type of operation
   if (orderType== ORDER_TYPE_BUY_LIMIT )
     {
      request.type     = ORDER_TYPE_BUY_LIMIT ;                           // order type
      price= SymbolInfoDouble ( Symbol (), SYMBOL_ASK )-offset*point;         // price for opening 
      request.price    = NormalizeDouble (price,digits);                 // normalized opening price 
     }
   else if (orderType== ORDER_TYPE_SELL_LIMIT )
     {
      request.type     = ORDER_TYPE_SELL_LIMIT ;                           // order type
      price= SymbolInfoDouble ( Symbol (), SYMBOL_ASK )+offset*point;         // price for opening 
      request.price    = NormalizeDouble (price,digits);                   // normalized opening price 
     }
   else if (orderType== ORDER_TYPE_BUY_STOP )
     {
      request.type = ORDER_TYPE_BUY_STOP ;                                 // order type
      price        = SymbolInfoDouble ( Symbol (), SYMBOL_ASK )+offset*point; // price for opening 
      request.price= NormalizeDouble (price,digits);                       // normalized opening price 
     }
   else if (orderType== ORDER_TYPE_SELL_STOP )
     {
      request.type     = ORDER_TYPE_SELL_STOP ;                           // order type
      price= SymbolInfoDouble ( Symbol (), SYMBOL_ASK )-offset*point;         // price for opening 
      request.price    = NormalizeDouble (price,digits);                   // normalized opening price 
     }
   else Alert ( "This example is only for placing pending orders" );   // if not pending order is selected
//--- send the request
   if (! OrderSend (request,result))
       PrintFormat ( "OrderSend error %d" , GetLastError ());                 // if unable to send the request, output the error code
//--- information about the operation
   PrintFormat ( "retcode=%u  deal=%I64u  order=%I64u" ,result.retcode,result.deal,result.order);
  }
//+------------------------------------------------------------------+
 
Vladimir Karputov :

ENUM_TRADE_REQUEST_ACTIONS

tanımlayıcı

Tanım

TRADE_ACTION_DEAL

Belirtilen parametrelerle (piyasa emri) anında icra için bir ticaret emri verin

TRADE_ACTION_PENDING

Belirtilen koşullar altında yürütülmesi için bir ticaret emri verin (bekleyen emir)

Teşekkür ederim!

 
Vladimir Karputov :

Bekleyen bir emir vermek için TRADE_ACTION_PENDING ticaret işlemi örneği:

Vladimir, Rusça yazamaz mısın?
 
Artyom Trishkin :
Vladimir, Rusça yazamaz mısın?

Yasaktır. Tamamen yardımdan alıntı yaptığımdan beri. Ve sonra ormanda biri, yakacak odun için biri: herkesin bir "bileti" var, bazılarının "bileti" var. Bu nedenle, işlevler, yardım ve yardımdan alıntılar İngilizce'dir.

 
Vladimir Karputov :

Yasaktır. Tamamen yardımdan alıntı yaptığımdan beri. Ve sonra ormanda biri, yakacak odun için biri: herkesin bir "bileti" var, bazılarının "bileti" var. Bu nedenle, işlevler, yardım ve yardımdan alıntılar İngilizce'dir.

Ve sırf Google ile çevirmeye başladıkları için "biletleri" var :)
Rus resmi referansında "biletler".
Ormanda-yakacak odun için evet, sadece ücretsiz çevirilerden.
 

Herkese merhaba! Bence soru öncelikle profesyoneller için olacak (görünüşe göre). Bir haftadır, kodla ilgili bir soru musallat oldu.

Örneğin - M5 mumunun 5 M1 mum içerdiğini biliyoruz (örneğin, 00:00, 00:01, 00:02, 00:03 ve 00:04). Ayrıca, yalnızca bu paketi ele alacağız - yani. göstergeyi M1'de başlatıyoruz ve M5'ten gösterge okumalarını görmek istiyoruz.

Onlar. st.TF'nin verilerini genç olanda doğru bir şekilde görüntülemek için, alt TF'nin 5 çubuğunun tümünü göründükleri gibi bir döngüde geçmem gerekiyor. Onlar. önce 00:00 çubuğu görünür, ardından 00:01 vb. 00:04'e kadar ve bundan sonra bir sonraki çubuk TF 00:05'te başlar. onlar. döngü 0'dan 4'e kadar olmalıdır - bu maksimumdur, geçmişteki delikler dikkate alınmazken ... Sorun şu ki 0'dan 5'e bir döngü alıyorum ve bunu telafi etmek için yeterli mantık yok 4'e !!! İnanın bana, bir haftadır bununla mücadele ediyorum ve gerçekten yardımınızı istiyorum. Aşağıda, döngünün 4'e kadar değil 5'e kadar çıktığı, çok kısaltılmış bir kod var. 4'e kadar istiyorum!!!!!

 #property copyright ""
#property link        ""
#property version    ""
#property indicator_chart_window

//+----------------------------------------------+
//| Входные параметры индикатора                 |
//+----------------------------------------------+
input ENUM_TIMEFRAMES TF= PERIOD_M5 ;
int LastCountBar;
datetime tt;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,     // количество истории в барах на текущем тике
                 const int prev_calculated, // количество истории в барах на предыдущем тике
                 const datetime &time[],
                 const double &open[],
                 const double & high[],     // ценовой массив максимумов цены для расчёта индикатора
                 const double & low[],       // ценовой массив минимумов цены  для расчёта индикатора
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   datetime IndTime[ 1 ];
//--- объявления локальных переменных
   int limit,bar;
//--- индексация элементов в массивах как в таймсериях
   ArraySetAsSeries (time, true );
//--- расчёт стартового номера first для цикла пересчёта баров
   if (prev_calculated>rates_total || prev_calculated<= 0 ) // проверка на первый старт расчёта индикатора
     {
      limit= 100 ; // стартовый номер для расчёта всех баров
      LastCountBar=limit;
     }
   else
      limit=LastCountBar+rates_total-prev_calculated; // стартовый номер для расчёта новых баров

//--- основной цикл расчёта индикатора
   for (bar=limit; bar>= 0 ; bar--)
     {
       //--- копируем вновь появившиеся данные в массив IndTime
       if ( CopyTime ( Symbol (),TF,time[bar], 1 ,IndTime)<= 0 )
         return ( 0 );
         
       if (time[bar]>=IndTime[ 0 ] && time[bar+ 1 ]<IndTime[ 0 ])
        {
         LastCountBar=bar;
         //--- Далее проводим вычисления индикатора МТФ ...............
         Print (bar, " " ,IndTime[ 0 ]);
         //---
        }
     }
   return (rates_total);
  }
//+------------------------------------------------------------------+
 

Liste olarak bir düzenleme penceresi nasıl eklenir?

https://www.mql5.com/en/docs/standardlibrary/controls/clistview

Yukarıda kitaplığım var. Bu liste kutusunun içine etiketli bir düzenleme kutusu eklemek istiyorum. Söyle bana nasıl yapabilirim? Denedim ama işe yaramadı.

Documentation on MQL5: Standard Library / Panels and Dialogs / CListView
Documentation on MQL5: Standard Library / Panels and Dialogs / CListView
  • www.mql5.com
//|                                             ControlsListView.mq5 | //|                        Copyright 2017, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| defines                                                          |  INDENT_LEFT                         (11)      ...
 
Artyom Trishkin :
Ve sırf Google ile çevirmeye başladıkları için "biletleri" var :)
Rus resmi referansında "biletler".
Ormanda-yakacak odun için evet, sadece ücretsiz çevirilerden.
Tamam, itiraf ediyorum: beni yakaladı. Hızlı yanıt verdi ve yardım dilini değiştirmedi 😎
 
Soru. Tüm monitörü eşit şekilde kaplayacak şekilde dikey olarak düzenlenmeleri için bir düğmeyi tıklatarak 2 (veya daha fazla) tablo açabilir miyim?
 
Vladimir Karputov :
Tamam, itiraf ediyorum: beni yakaladı. Hızlı yanıt verdi ve yardım dilini değiştirmedi 😎

Kabul edilmiş ;)