Hatalar, hatalar, sorular - sayfa 1793

 
fxsaber :

Böyle bir fonksiyon yazmak mümkün mü?

Evet, bir kurucu ve bir kopyalama operatörü uygulamanız gerekiyor
 
Slawa :

DRAW_CANDLES türünü güncelledikten sonra oluştururken bir hata var: Her şeyi burada söylendiği gibi yapıyorum: https://www.mql5.com/ru/forum/23/page19#comment_2891050

Giriş parametreleri üzerinden seçim yaparak yapı tipini (1-2-3) değiştirmek mümkün değildir. kod:

#property indicator_separate_window
#property indicator_plots 1
#property indicator_buffers 4                           
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- Перечисление - новые типы отрисовки DRAW_CANDLE
enum ENUM_DRAW_CANDLE_TYPE
  {
   DRAW_CANDLE_TYPE_1,             // Один цвет: #1 - контуры и тела
   DRAW_CANDLE_TYPE_2,             // Два цвета: #1 - контуры, #2 - тела
   DRAW_CANDLE_TYPE_3             // Три цвета: #1 - контуры, #2 - восход., #3 - нисход.
  };
//---
double bufopen[];
double bufhigh[];
double buflow[];
double bufclose[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
input ENUM_DRAW_CANDLE_TYPE inpDrawCandleStyle=DRAW_CANDLE_TYPE_1;
input color inpClr1 = clrWhite ;
input color inpClr2 = clrLime ;
input color inpClr3 = clrRed ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- Привязываем буферы
   SetIndexBuffer ( 0 ,bufopen, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,bufhigh, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,buflow, INDICATOR_DATA );
   SetIndexBuffer ( 3 ,bufclose, INDICATOR_DATA );
//--- Устанавливаем тип графического построения
   PlotIndexSetInteger ( 0 , PLOT_DRAW_TYPE , DRAW_CANDLES );
//--- Устанавливаем пустые значения в буферах
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
//--- Устанавливаем цвета индикатора
   switch (inpDrawCandleStyle) // В зависимости от типа построения свечей
     {
       case DRAW_CANDLE_TYPE_1:                                           // Если все свечи одним цветом
         ////--- Устанавливаем количество цветов стиля (не помогает)
         //PlotIndexGetInteger( 0, PLOT_COLOR_INDEXES, 1 );
         //---
         PlotIndexSetInteger ( 0 , PLOT_LINE_COLOR , 0 ,inpClr1);
         break ;
       case DRAW_CANDLE_TYPE_2:                                           // Если контуры цветом #1, а тела - цветом #2
         ////--- Устанавливаем количество цветов стиля (не помогает)
         //PlotIndexGetInteger( 0, PLOT_COLOR_INDEXES, 2 );
         //--- Устанавливаем цвет индикатора
         PlotIndexSetInteger ( 0 , PLOT_LINE_COLOR , 0 ,inpClr1);
         PlotIndexSetInteger ( 0 , PLOT_LINE_COLOR , 1 ,inpClr2);
         break ;
       case DRAW_CANDLE_TYPE_3:                                           // Если контуры цветом #1, восх - #2, нисх - #3
         ////--- Устанавливаем количество цветов стиля (не помогает)
         //PlotIndexGetInteger( 0, PLOT_COLOR_INDEXES, 3 );
         //--- Устанавливаем цвет индикатора
         PlotIndexSetInteger ( 0 , PLOT_LINE_COLOR , 0 ,inpClr1);
         PlotIndexSetInteger ( 0 , PLOT_LINE_COLOR , 1 ,inpClr2);
         PlotIndexSetInteger ( 0 , PLOT_LINE_COLOR , 2 ,inpClr3);
         break ;
       default :                                                         // Если тип построения не определен
         Print ( __FUNCTION__ , ": ОШИБКА! Неизвестный тип построения свечей '" + EnumToString (inpDrawCandleStyle)+ "'" );
         return ( INIT_FAILED );                                           // Выходим с ошибкой
     }
//---
   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[])
  {
//---
   if (prev_calculated<= 0 )
       for ( int i= 0 ; i<rates_total; i++)
        {
         bufopen[ i ] = open[ i ];
         bufhigh[ i ] = high[ i ];
         buflow[i]=low[i];
         bufclose[i]=close[i];
        }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+

Özellikle ilk tip (birinci renkte mumlar + kontürler) iyi çalışıyor, diğerlerine geçmiyor.

Katma:

Renkleri önişlemci yönergesi aracılığıyla ayarlarsanız, her şey yolundadır, ancak DRAW_CANDLES çizim türünü değiştirmek de imkansızdır.

Список изменений в билдах MetaTrader 5 Client Terminal
Список изменений в билдах MetaTrader 5 Client Terminal
  • www.mql5.com
Автоматическое обновление доступно через систему LiveUpdate:.
 
Комбинатор :
Evet, bir kurucu ve bir kopyalama operatörü uygulamanız gerekiyor
Ne yazık ki, bu çözüm yalnızca özel bir yapı için çalışır. MqlTradeRequest örneğinde.
 
Alexey Kozitsyn :

DRAW_CANDLES türünü güncelledikten sonra oluştururken bir hata var: Her şeyi burada söylendiği gibi yapıyorum: https://www.mql5.com/ru/forum/23/page19#comment_2891050

Giriş parametreleri üzerinden seçim yaparak yapı tipini (1-2-3) değiştirmek mümkün değildir. kod:

Kodunuzda bir hata var, PlotIndex Set Integer kullanmanız gerekiyor:

         ////--- Устанавливаем количество цветов стиля (не помогает)
         PlotIndex Set Integer ( 0 , PLOT_COLOR_INDEXES , 3 );
 
fxsaber :
Ne yazık ki, bu çözüm yalnızca özel bir yapı için çalışır. MqlTradeRequest örneğinde.
Ardından, parametrelerde referansa göre yapıyı iletin. Başka bir seçenek de yapının ve dökümün kendi kopyasını oluşturmaktır, ancak bunu nasıl güzelce yapacağınızı düşünmeniz gerekir.
 
Anton :
Kodunuzda bir hata var, PlotIndex Set Integer kullanmanız gerekiyor:

         ////--- Устанавливаем количество цветов стиля (не помогает)
         PlotIndex Set Integer ( 0 , PLOT_COLOR_INDEXES , 3 );
Haklısın, teşekkürler!
 
Комбинатор :
Ardından, parametrelerde referansa göre yapıyı iletin. Başka bir seçenek de yapının ve dökümün kendi kopyasını oluşturmaktır , ancak bunu nasıl güzelce yapacağınızı düşünmeniz gerekir.
anlamadım
 
fxsaber :
anlamadım
struct MyTradeRequest
{
   // копия MqlTradeRequest
   // + нужные операторы
};

// ...
MyTradeRequest request = Function();
MqlTradeResult = { 0 };
OrderSend (( MqlTradeRequest )request, result);
// ...
Bu sadece bir fikir hatalar olabilir direk tarayıcıdan yazdım
 
Комбинатор :
struct MyTradeRequest
{
   // копия MqlTradeRequest
   // + нужные операторы
};

// ...
MyTradeRequest request = Function();
MqlTradeResult = { 0 };
OrderSend ( ( MqlTradeRequest )request , result);
// ...
Bu sadece bir fikir hatalar olabilir direk tarayıcıdan yazdım
Fikri anladım. Ancak böyle bir döküm işe yaramaz.
 
fxsaber :
Fikri anladım. Ancak böyle bir döküm işe yaramaz.
niye ya?