エラー、バグ、質問 - ページ 1793 1...178617871788178917901791179217931794179517961797179817991800...3185 新しいコメント TheXpert 2017.02.10 08:06 #17921 fxsaber:また、そのような関数を書くことは可能なのでしょうか? はい、コンストラクタとコピー演算子を実装する必要があります。 削除済み 2017.02.10 08:07 #17922 Slawa:アップデート後、DRAW_CANDLESの描画タイプでエラーが発生します: ここに記載されているようにすべて行います: https://www.mql5.com/ru/forum/23/page19#comment_2891050ビルドタイプ(1-2-3)を入力パラメータで選択しても変更できない。コード#property indicator_separate_window#property indicator_plots 1#property indicator_buffers 4 //+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+//--- Перечисление - новые типы отрисовки DRAW_CANDLEenum 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); }//+------------------------------------------------------------------+具体的には、最初のタイプ(キャンドル+輪郭の最初の色)は問題なく動作し、他のタイプに切り替わりません。追加されました。プリプロセッサー指令で 色を設定した場合、すべてOKですが、描画タイプDRAW_CANDLESを変更することも不可能です。 Список изменений в билдах MetaTrader 5 Client Terminal www.mql5.com Автоматическое обновление доступно через систему LiveUpdate:. Errors, bugs, questions 初心者の方からの質問 MQL5 MT5 MetaTrader 事前計算された fxsaber 2017.02.10 08:25 #17923 Комбинатор: はい、コンストラクタとコピー演算子を実装する必要があります。 残念ながら、この解決策はカスタム構造の場合のみ有効です。MqlTradeRequestの 例では。 Anton 2017.02.10 08:55 #17924 Alexey Kozitsyn:アップデート後、DRAW_CANDLESの描画タイプでエラーが発生します: ここに記載されているようにすべて行います: https://www.mql5.com/ru/forum/23/page19#comment_2891050ビルドタイプ(1-2-3)を入力パラメータで選択しても変更できない。コード コードに誤りがあります。PlotIndexSetIntegerを 使用する必要があります。 ////--- Устанавливаем количество цветов стиля (не помогает) PlotIndexSet Integer( 0, PLOT_COLOR_INDEXES, 3 ); TheXpert 2017.02.10 09:00 #17925 fxsaber: 残念ながら、この解決策はカスタム構造の場合のみ有効です。MqlTradeRequestの 例では。 そして、その構造体をパラメータで参照渡しする。また、構造のコピーを自作して鋳造するという方法もありますが、どうしたら素敵に仕上がるかを考えなければなりません。 削除済み 2017.02.10 09:00 #17926 Anton: コードに誤りがあります。PlotIndexSetIntegerを 使用する必要があります。 ////--- Устанавливаем количество цветов стиля (не помогает) PlotIndexSet Integer( 0, PLOT_COLOR_INDEXES, 3 ); げっ、そうか!ありがとうございます。 fxsaber 2017.02.10 09:04 #17927 Комбинатор: そして、その構造体をパラメータで参照渡しする。また、構成やキャストを自分でコピーして 作るという方法もありますが、どうすればきれいにできるかを考えなければなりません。 理解できない。 TheXpert 2017.02.10 09:17 #17928 fxsaber: 理解できない。struct MyTradeRequest{ // копия MqlTradeRequest // + нужные операторы};// ... MyTradeRequest request = Function();MqlTradeResult = {0};OrderSend((MqlTradeRequest)request, result);// ... ブラウザに直接書き込んだので、間違いがあるかもしれません。 fxsaber 2017.02.10 09:25 #17929 Комбинатор:struct MyTradeRequest{ // копия MqlTradeRequest // + нужные операторы};// ... MyTradeRequest request = Function();MqlTradeResult = {0};OrderSend((MqlTradeRequest)request, result);// ... ブラウザに直接書き込んだので、間違いがあるかもしれません。 なるほどと思いました。でも、そういうキャスティングではうまくいかないでしょう? TheXpert 2017.02.10 09:26 #17930 fxsaber: なるほどと思いました。でも、そんなキャスティングではうまくいきません。 なぜダメなのか? 1...178617871788178917901791179217931794179517961797179817991800...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
また、そのような関数を書くことは可能なのでしょうか?
アップデート後、DRAW_CANDLESの描画タイプでエラーが発生します: ここに記載されているようにすべて行います: https://www.mql5.com/ru/forum/23/page19#comment_2891050
ビルドタイプ(1-2-3)を入力パラメータで選択しても変更できない。コード
#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);
}
//+------------------------------------------------------------------+
具体的には、最初のタイプ(キャンドル+輪郭の最初の色)は問題なく動作し、他のタイプに切り替わりません。
追加されました。
プリプロセッサー指令で 色を設定した場合、すべてOKですが、描画タイプDRAW_CANDLESを変更することも不可能です。
はい、コンストラクタとコピー演算子を実装する必要があります。
アップデート後、DRAW_CANDLESの描画タイプでエラーが発生します: ここに記載されているようにすべて行います: https://www.mql5.com/ru/forum/23/page19#comment_2891050
ビルドタイプ(1-2-3)を入力パラメータで選択しても変更できない。コード
PlotIndexSet Integer( 0, PLOT_COLOR_INDEXES, 3 );
残念ながら、この解決策はカスタム構造の場合のみ有効です。MqlTradeRequestの 例では。
コードに誤りがあります。PlotIndexSetIntegerを 使用する必要があります。
PlotIndexSet Integer( 0, PLOT_COLOR_INDEXES, 3 );
そして、その構造体をパラメータで参照渡しする。また、構成やキャストを自分でコピーして 作るという方法もありますが、どうすればきれいにできるかを考えなければなりません。
理解できない。
{
// копия MqlTradeRequest
// + нужные операторы
};
// ...
MyTradeRequest request = Function();
MqlTradeResult = {0};
OrderSend((MqlTradeRequest)request, result);
// ...
{
// копия MqlTradeRequest
// + нужные операторы
};
// ...
MyTradeRequest request = Function();
MqlTradeResult = {0};
OrderSend((MqlTradeRequest)request, result);
// ...
なるほどと思いました。でも、そんなキャスティングではうまくいきません。