エラー、バグ、質問 - ページ 53 1...464748495051525354555657585960...3185 新しいコメント Renat Fatkhullin 2010.07.18 12:27 #521 Kos:取引依頼結果の MqlTradeCheckResult構造体の応答コード(Retcode)についての記述がドキュメントにありません。あるのでしょうか?すべての記述はドキュメントに記載されています。OrderSend関数、MqlTradeResult 構造体、取引応答コード 一覧をご覧ください。 Anatoliy Ivanov 2010.07.18 12:39 #522 Renat: Told - サイズを指定しない空の配列 Tnew[1] - out of arrayはTnew[1]と記述されているため、インデックスが0から始まるため、その要素にはTnew[0]としてしかアクセスできない。 出力はどのようなものですか?この場合、Tnew[1]は不正確な表現ですが、有効なのでしょうか?Tnew[0] , Tnew[]は有効な式なのか、それとも別のものなのか?Tnew[1]、Tnew[0]、Tnew[]を使用してもExpert Advisorの結果に変化はないようです。 Ruslan Khasanov 2010.07.18 12:59 #523 Renat:すべての記述はドキュメントに記載されています。 OrderSend関数、MqlTradeResult 構造体、取引応答コード 一覧をご覧ください。 Renat、私が正しく理解しているなら、MqlTradeResult 構造体のENUM_TRADE_RETURN_CODESリターンコード は、MqlTradeCheckResult構造体にも適用されるはずです。 削除済み 2010.07.18 13:08 #524 ias: 出力はどのようなものですか?Tnew[1]はこの場合、誤った表現ですが、有効なのでしょうか?Tnew[0] , Tnew[]は有効な式なのか、それとも別のものなのか?Tnew[1],Tnew[0],Tnew[]を使用してもエキスパートの結果は変わらないようです。少なくとも、存在しないインデックスで配列からデータを読み込んだ場合は、同じ結果になることはあり得ません。Tnew[1]には何が入っているのでしょうか?書かれていることがよくわからないのですが、EAがレンジから外れたら、エラーを 報告して先に進むことができます。 しかし、この場合、Tnew[0]には何が入るのでしょうか? Общайтесь с разработчиками через Сервисдеск! www.mql5.com Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы. Renat Fatkhullin 2010.07.18 15:53 #525 Kos: Renat、私が正しく理解しているなら、MqlTradeResult 構造体のENUM_TRADE_RETURN_CODESリターンコード は、MqlTradeCheckResult構造体にも適用されるはずです。はい、トレードエラーコードのベースは、トレード機能空間全体で同じです。新しい機能の説明文は、すぐに修正する時間がなかっただけで、修正する予定です。 Anatoliy Ivanov 2010.07.18 16:10 #526 Interesting: 少なくとも、存在しないインデックスで配列からデータを読み込んだ場合は、同じ結果になることはあり得ません。Tnew[1]には何が入っているのでしょうか? 書き方がよくわからないのですが、Expert Advisorは範囲から外れるとエラーを 報告して先に進むことができますが、この場合Tnew[0]には何が入るのでしょうか? datetime Tnew[1];Tnew[0];Tnew[]; を使用してもエキスパートワークの結果は変わりません。「異なるシンボルで取引するエキスパートアドバイザーの作成」の記事のExp_TEMA.mq5で、次のようになりますか。 は、関数//+X================================================================X+ //| IsNewBar() function | //+X================================================================X+ bool IsNewBar(int Number, string symbol, ENUM_TIMEFRAMES timeframe) { //----+ static datetime Told[]; datetime Tnew[1]; //----+ Объвление переменной для хранения размеров массивов переменных static int Size_ = 0; //----+ Изменение размеров массивов переменных if (Number + 1 > Size_) { uint size = Number + 1; //---- if (ArrayResize(Told, size) == -1) { string word = ""; StringConcatenate(word, "IsNewBar( ", Number, " ): Ошибка!!! Не удалось изменить размеры массивов переменных!!!"); Print(word); //---- int error = GetLastError(); ResetLastError(); if (error > 4000) { StringConcatenate(word, "IsNewBar( ", Number, " ): Код ошибки ", error); Print(word); } //---- Size_ = -2; return(false); } } CopyTime(symbol, timeframe, 0, 1, Tnew); if (Tnew[0] != Told[Number]) { Told[Number] = Tnew[0]; return(true); } //----+ return(false); } //+X================================================================X+ が効かない? Tnew[1]は何だと思いますか? CopyTime(symbol, timeframe, 0, 1, Tnew) の後、アドレス Tnew[1] は前のバーの開始時刻を含む必要があります。 削除済み 2010.07.18 18:28 #527 ias: datetime Tnew[1];Tnew[0];Tnew[]; を使用してもエキスパートワークの結果は変わりません。「異なるシンボルで取引するExpert Advisorの作成」の記事からExpert Advisor Exp_TEMA.mq5 が存在するということでよいでしょうか。 は、関数 が効かない? Tnew[1]は何だと思いますか? CopyTime(symbol, timeframe, 0, 1, Tnew) の後、アドレス Tnew[1] は前のバーの開始時刻を含む必要があります。それでは、順番に分析していきましょう。これらの2つの文字列は配列を宣言しており,一方は動的で,もう一方( Tnew) は1つのレコードだけを含む.static datetime Told[]; datetime Tnew[1]; これは、動的配列の サイズを変更しようとするものである。配列のレコード数は、サイズと 同じになることを想定しています。 if (ArrayResize(Told, size) == -1)この行では、小節番号0から 始まる1レコード(小節日)をTnew 配列にコピーしています。そして、この日付はTnew[0]として利用できるようになります(配列の番号がZERO であるため)。 CopyTime(symbol, timeframe, 0, 1, Tnew);ここでは、配列Tnewの 唯一のレコードと配列Toldの セル内のレコード番号Number- 1を比較します(配列は0から番号が付けられていることを思い出してください)。これらの日付が一致しない場合、Tnew 配列の値をTold 配列のセルに書き込む。if (Tnew[0] != Told[Number]) { Told[Number] = Tnew[0]; return(true); } Валерий 2010.07.18 21:06 #528 Kos: MqlTradeCheckResultの取引要求 チェック結果の構造に対する応答コード(Retcode)の記述がドキュメントに見当たりません。発売されるのでしょうか? In MetaTrader 5MQL5 Include/ErrorDescription.mqh ファイル: errordescription.mqh 16 kb Ruslan Khasanov 2010.07.18 22:14 #529 Valmars: In file MetaTrader 5 ↪MQL5↩Include゙ErrorDescription.mqh ヴァレリー ありがとうございます。でも、これは私が求めていたものではありません:) Prival 2010.07.19 00:32 #530 質問があります。穴のないグラフィックの問題は考慮されていないのでしょうか?https://www.mql5.com/ru/forum/100491すべてを同期させるのは非常に難しい。私はインジケーターですべてを考慮しようとしたようだが、この穴は非常に扱いにくい。2010.07.19 02:20:12 穴の確認 (EURUSD,M1) 2010.07.09 21:35:00 から履歴260の穴の数 2010.07.19 02:20:12 穴の確認 (EURUSD,M1) GBPUSDの穴 2010.07.19 00:20:00 2010.07.19 02:20:12 穴の確認 (EURUSD,M1) 穴の確認 USDJPY 2010.07.19 00:15:00 2010.07.19 02:20:12 穴の確認 (EURUSD,M1) 穴 EURGBP 2010.07.16 22:43:00 2010.07.19 02:20:12 穴の確認 (EURUSD,M1) GBPUSDの穴 2010.07.16 22:43:00 2010.07.19 02:20:12 穴の確認 (EURUSD,M1) GBPUSDの穴 2010.07.16 22:38:00 2010.07.19 02:20:12 穴の確認 (EURUSD,M1) AUDUSDの穴 2010.07.16 22:21:00などなど......。 //+------------------------------------------------------------------+ //| Проверка дыр.mq5 | //| Привалов С.В. | //| https://www.mql5.com/ru/users/Prival | //+------------------------------------------------------------------+ #property copyright "Привалов С.В." #property link "https://www.mql5.com/ru/users/Prival" #property version "1.00" #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 #property indicator_color1 Blue int MaxBars=7200; // точка старта string mas_0[]={"USDCHF","GBPUSD","EURUSD","USDJPY","USDCAD","AUDUSD","EURGBP","EURAUD","EURCHF","EURJPY","GBPJPY","GBPCHF"}; int count_symbol=12; double Buffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { SetIndexBuffer(0,Buffer,INDICATOR_DATA); PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_HISTOGRAM); //--- на старте сразу же пошлем асинхронные запросы на поднятие таймфреймов в память for(int i=0; i<count_symbol; i++) CheckOtherSymbol(mas_0[i],MaxBars); return(0); } //+------------------------------------------------------------------+ //| 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(rates_total<MaxBars) return(0); // ничего не считаем и ничего не рисуем на графике int start_pos=rates_total-MaxBars-1; // точка старта if(close[start_pos]==0) return(0); // ничего не считаем и ничего не рисуем на графике //--- снова пошлем асинхронные запросы на поднятие таймфреймов в память for(int i=0; i<count_symbol; i++) { if(!CheckOtherSymbol(mas_0[i],MaxBars)) return(0); } if(prev_calculated==0) { Print("Дата начала тестирования ",time[start_pos]); Print("Символ ",_Symbol," приод ",_Period); } else start_pos=prev_calculated-1; int sum=0; //--- расчет индикатора for(int i=start_pos;i<rates_total;i++) { Buffer[i]=0; for(int j=0; j<count_symbol; j++) { if(!CheckTimeOtherSymbol(mas_0[j],time[i])) { Print("Дыра ",mas_0[j]," ",time[i]); sum++; } } } Print("Количество дыр в истории ",sum, " от даты ",time[start_pos]); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Проверка символов с асинхронным возбуждением | //+------------------------------------------------------------------+ //| вход | //| symbol - символ | //| count_Bars - необходимое количество баров | //+------------------------------------------------------------------+ bool CheckOtherSymbol(string symbol,int bars) { datetime ctm[1]; datetime checktime=TimeCurrent()-bars*PeriodSeconds(_Period); // требуемое время bool res=true; // скопируем время требуемого бара if(CopyTime(symbol,_Period,checktime,1,ctm)!=1) res=false; if(!res) Print("Нет данных по символу ",symbol); //--- вернем результат return(res); } //+------------------------------------------------------------------+ //| Проверка синхронности символов | //+------------------------------------------------------------------+ bool CheckTimeOtherSymbol(string symbol,datetime time) { datetime ctm[1]; bool res=false; //--- скопируем время бара if(CopyTime(symbol,_Period,time,1,ctm)==1) { // сравним его с требуемым if(ctm[0]==time) res=true; } // if(!res) Print("Нет синхронизации по символу ",symbol," time[0]=",ctm[0]," нужно ",time); //--- вернем результат return(res); } //+------------------------------------------------------------------+ と2つ目の質問ですが、この多通貨インジケーターには、私が確認していない他の落とし穴があるのでしょうか? Всем, кто хотел видеть графики без пропущенных баров - сюда =) - MQL4 форум www.mql5.com Всем, кто хотел видеть графики без пропущенных баров - сюда =) - MQL4 форум ファイル: 1a89u1et_aaj.mq5 5 kb Errors, bugs, questions Flexible Time Charts for Toys from Vinin 1...464748495051525354555657585960...3185 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
取引依頼結果の MqlTradeCheckResult構造体の応答コード(Retcode)についての記述がドキュメントにありません。あるのでしょうか?
すべての記述はドキュメントに記載されています。
OrderSend関数、MqlTradeResult 構造体、取引応答コード 一覧をご覧ください。
Told - サイズを指定しない空の配列
Tnew[1] - out of arrayはTnew[1]と記述されているため、インデックスが0から始まるため、その要素にはTnew[0]としてしかアクセスできない。
すべての記述はドキュメントに記載されています。
OrderSend関数、MqlTradeResult 構造体、取引応答コード 一覧をご覧ください。
出力はどのようなものですか?Tnew[1]はこの場合、誤った表現ですが、有効なのでしょうか?Tnew[0] , Tnew[]は有効な式なのか、それとも別のものなのか?Tnew[1],Tnew[0],Tnew[]を使用してもエキスパートの結果は変わらないようです。
少なくとも、存在しないインデックスで配列からデータを読み込んだ場合は、同じ結果になることはあり得ません。Tnew[1]には何が入っているのでしょうか?
書かれていることがよくわからないのですが、EAがレンジから外れたら、エラーを 報告して先に進むことができます。 しかし、この場合、Tnew[0]には何が入るのでしょうか?
Renat、私が正しく理解しているなら、MqlTradeResult 構造体のENUM_TRADE_RETURN_CODESリターンコード は、MqlTradeCheckResult構造体にも適用されるはずです。
はい、トレードエラーコードのベースは、トレード機能空間全体で同じです。
新しい機能の説明文は、すぐに修正する時間がなかっただけで、修正する予定です。
少なくとも、存在しないインデックスで配列からデータを読み込んだ場合は、同じ結果になることはあり得ません。Tnew[1]には何が入っているのでしょうか?
書き方がよくわからないのですが、Expert Advisorは範囲から外れるとエラーを 報告して先に進むことができますが、この場合Tnew[0]には何が入るのでしょうか?
datetime Tnew[1];Tnew[0];Tnew[]; を使用してもエキスパートワークの結果は変わりません。「異なるシンボルで取引するエキスパートアドバイザーの作成」の記事のExp_TEMA.mq5で、次のようになりますか。 は、関数
が効かない?
Tnew[1]は何だと思いますか?
CopyTime(symbol, timeframe, 0, 1, Tnew) の後、アドレス Tnew[1] は前のバーの開始時刻を含む必要があります。
datetime Tnew[1];Tnew[0];Tnew[]; を使用してもエキスパートワークの結果は変わりません。「異なるシンボルで取引するExpert Advisorの作成」の記事からExpert Advisor Exp_TEMA.mq5 が存在するということでよいでしょうか。 は、関数
が効かない?
Tnew[1]は何だと思いますか?
CopyTime(symbol, timeframe, 0, 1, Tnew) の後、アドレス Tnew[1] は前のバーの開始時刻を含む必要があります。
それでは、順番に分析していきましょう。
これらの2つの文字列は配列を宣言しており,一方は動的で,もう一方( Tnew) は1つのレコードだけを含む.
これは、動的配列の サイズを変更しようとするものである。配列のレコード数は、サイズと 同じになることを想定しています。
この行では、小節番号0から 始まる1レコード(小節日)をTnew 配列にコピーしています。そして、この日付はTnew[0]として利用できるようになります(配列の番号がZERO であるため)。
ここでは、配列Tnewの 唯一のレコードと配列Toldの セル内のレコード番号Number- 1を比較します(配列は0から番号が付けられていることを思い出してください)。
これらの日付が一致しない場合、Tnew 配列の値をTold 配列のセルに書き込む。
MqlTradeCheckResultの取引要求 チェック結果の構造に対する応答コード(Retcode)の記述がドキュメントに見当たりません。発売されるのでしょうか?
In file MetaTrader 5 ↪MQL5↩Include゙ErrorDescription.mqh
質問があります。穴のないグラフィックの問題は考慮されていないのでしょうか?https://www.mql5.com/ru/forum/100491
すべてを同期させるのは非常に難しい。私はインジケーターですべてを考慮しようとしたようだが、この穴は非常に扱いにくい。
2010.07.19 02:20:12 穴の確認 (EURUSD,M1) 2010.07.09 21:35:00 から履歴260の穴の数
2010.07.19 02:20:12 穴の確認 (EURUSD,M1) GBPUSDの穴 2010.07.19 00:20:00
2010.07.19 02:20:12 穴の確認 (EURUSD,M1) 穴の確認 USDJPY 2010.07.19 00:15:00
2010.07.19 02:20:12 穴の確認 (EURUSD,M1) 穴 EURGBP 2010.07.16 22:43:00
2010.07.19 02:20:12 穴の確認 (EURUSD,M1) GBPUSDの穴 2010.07.16 22:43:00
2010.07.19 02:20:12 穴の確認 (EURUSD,M1) GBPUSDの穴 2010.07.16 22:38:00
2010.07.19 02:20:12 穴の確認 (EURUSD,M1) AUDUSDの穴 2010.07.16 22:21:00
などなど......。
と2つ目の質問ですが、この多通貨インジケーターには、私が確認していない他の落とし穴があるのでしょうか?