Hatalar, hatalar, sorular - sayfa 1793
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Böyle bir fonksiyon yazmak mümkün mü?
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_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.
Evet, bir kurucu ve bir kopyalama operatörü uygulamanız gerekiyor
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:
PlotIndex Set Integer ( 0 , PLOT_COLOR_INDEXES , 3 );
Ne yazık ki, bu çözüm yalnızca özel bir yapı için çalışır. MqlTradeRequest örneğinde.
Kodunuzda bir hata var, PlotIndex Set Integer kullanmanız gerekiyor:
PlotIndex Set Integer ( 0 , PLOT_COLOR_INDEXES , 3 );
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
{
// копия MqlTradeRequest
// + нужные операторы
};
// ...
MyTradeRequest request = Function();
MqlTradeResult = { 0 };
OrderSend (( MqlTradeRequest )request, result);
// ...
{
// копия MqlTradeRequest
// + нужные операторы
};
// ...
MyTradeRequest request = Function();
MqlTradeResult = { 0 };
OrderSend ( ( MqlTradeRequest )request , result);
// ...
Fikri anladım. Ancak böyle bir döküm işe yaramaz.