Hatalar, hatalar, sorular - sayfa 1793
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Web sitesi politikasını ve 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.