グラフィカルなオブジェクトを作成するにはどうしたらよいですか?MQL4です。 - ページ 6

 
         string   shortName="fraktalSDV"; 
         long   chart_ID=ChartID();        // ID графика
         int win_idx=ChartWindowFind(chart_ID,shortName);
         string nameobj=TimeToStr(Time[0]);
         string name=Time[0]+1; 
         Print("indikator=",win_idx);         
            //--- сбросим значение ошибки
            ResetLastError();
            //--- создадим трендовую линию по заданным координатам
           if(!ObjectCreate(chart_ID,nameobj,OBJ_TREND,win_idx,Time[index],maximum1,Time[1],TRENDmax[1]))
            {
            Print(__FUNCTION__,
                  ": не удалось создать линию тренда! Код ошибки = ",GetLastError());
            return(0);
            } 
           if(!ObjectCreate(chart_ID,name,OBJ_TREND,win_idx,Time[min1],minimum1,Time[1],Low_[1]))
            {
            Print(__FUNCTION__,
                  ": не удалось создать линию тренда! Код ошибки = ",GetLastError());
            return(0);
            }       
           ObjectSet(nameobj,OBJPROP_RAY,false); 
           ObjectSet(name,OBJPROP_RAY,false);
マイナス1も同じ。また、インジケーターの名前をすべて小さな文字にしてみましたが、これもダメでした。
 
forexman77:
マイナス1も同じ。また、インジケータ名をすべて小文字にしてみましたが、これもダメでした。
win_idx=1;を代入したのでしょうか?取るだけで、具体的にはサブウィンドウの番号を設定します。
 
Artyom Trishkin:
win_idx=1;を代入したのでしょうか?取るだけで、具体的にはサブウィンドウの番号を設定します。

試してみたが、役に立たなかった。インジケーターのせいかもしれませんが、トレードが正しく開かれているように見えるのですが?

続きは明日、就寝時間を過ぎてしまったので。

 

インジケータの名前はパラメータで作った方がいいとドキュメントに書いてありました。

インジケータで以下のようにしました。

IndicatorSetString(INDICATOR_SHORTNAME,"fraktalsdv("+Period_MA_1+","+ma_shift+","+price+","+Period_+")"); 

をExpert Advisorで表示します。

string   shortName="fraktalsdv("+Period_MA_1+","+ma_shift+","+price+","+Period_+")"; 

インジケーターのあるウィンドウは検出されません。

 
forexman77:

インジケータの名前はパラメータで作った方がいいとドキュメントに書いてありました。

インジケータで以下のようにしました。

をExpert Advisorで表示します。

インジケーターのあるウィンドウは検出されません。

テストスクリプトでは、サブウィンドウに表示される標準的なインジケータを簡単に見つけることができるため、明らかにコードに問題があると思われます。
 
Karputov Vladimir:
テストスクリプトでは、サブウィンドウに表示される標準的なインジケータを簡単に見つけることができるので、明らかにコードの問題である。

しかし、取引は開始され、それは指標に基づいて行われます。また、EAに出力する際、インジケータは正しい値を出力します。

なぜかインジケータに#property strictの行がないのが原因だと思います(これでは動作しません)。

 
forexman77:

しかし、取引は開始され、それは指標に基づいて行われます。また、EAに出力する際、インジケータは正しい値を出力します。

なんとなくですが、インジケータに#property strictの行がないような気がします(これでは動作しません)。

いいえ、そんなことはありません。関数 WindowFind()を試す
 
Artyom Trishkin:
いいえ、そんなことはありません。WindowFind()関数を試してみてください。
1を返します。
 
forexman77:
1を返します。

エラーを探す。指標は通常、以下の方法で検索します。

intChartWindowFind()
longchart_id,// チャートID
string indicator_shortname // 短いインジケータ名、INDICATOR_SHORTNAMEを 参照。

 
forexman77:

インジケータウィンドウは検出されませんでした。

EAが作成する計算用インジケータをチャート上で見つけたいのですか?頑張ってください。