エラー、バグ、質問 - ページ 111 1...104105106107108109110111112113114115116117118...3185 新しいコメント Sergey Gritsay 2010.08.28 22:08 #1101 sergeev:がすべて一致した。 2010.08.28 20:57:09 Servis (EURUSD,H1) L1=6653490000 L2=6653490000 L3=6653490000 M1=6653490000 2010.08.28 20:57:09 サーヴィス(EURUSD,H1) A=665349 B=665349 C=665349 2010.08.28 20:57:09 Servis (EURUSD,H1) --- OnInit() --- 1 --- !と私のM1が合わなかったのです。PQ 0 Servis (EURUSD,H8) 22:06:24 --- OnInit() --- 1 --- !!! Старт подготовки начальных параметров !!! LE 0 Servis (EURUSD,H8) 22:06:24 A=100652 B=100652 C=100652 CP 0 Servis (EURUSD,H8) 22:06:24 L1=1006520000 L2=1006520000 L3=1006520000 M1=4294966006 Дмитрий 2010.08.28 22:21 #1102 sergey1294: 最初の数字を何に使うかにもよりますが、次のようにしてみてください。 ええ、その方が簡単です。最後に余計な逆カンマを 付ける必要もありませんし。return(StringToTime((string)str.year+"."+(string)str.mon+".01 00:00")); Yedelkin 2010.08.28 22:29 #1103 SHOOTER777: もう一度、このことを問いかけたいと思います。 そのコードを添付します。 プログラミングを理解すれば、L1 = L2 = L3 = M1 となるはずです。 あなたはどうでしょうか? 当初、コンパイラは "#import "lbS7N_Servis.ex5 "がないことに文句を言った。 この行を削除したら、ギブアップしました。 2010.08.28 22:19:51 サービス[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=6617010000 M1=1016990000 2010.08.28 22:19:51 サービス[1] (EURUSD,H1) A=101699 B=101699 C=661701 2010.08.28 22:19:51 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- ! コードの口座 番号を自分のものに置き換えると、こうなりました。 2010.08.28 22:26:46 サービス[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=1016990000 M1=1016990000 2010.08.28 22:26:46 サービス[1] (EURUSD,H1) A=101699 B=101699 C=101699 2010.08.28 22:26:46 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- ! MQサーバー、ビルド316。 Errors, bugs, questions MQL5におけるOOPに関する質問 BUG - Notifications: not --- 2010.08.28 23:40 #1104 sergey1294:と私のM1がマッチしなかった 特殊事情:( Ruslan Khasanov 2010.08.29 02:18 #1105 SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT), がゼロを返すのはなぜですか? Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте www.mql5.com Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5 削除済み 2010.08.29 02:22 #1106 sergeev: ユニークな状況...:( そして、3つものユニークなシチュエーションがあるのです。これが検出されたものです。また、未検出のものはどれくらいあるのでしょうか?そんな中、MetaQuotesは1ヶ月後にChampionship 2010を スタートさせるわけですね。ああ、MetaTrader 5は驚きに満ちている...。 削除済み 2010.08.29 02:48 #1107 Kos: SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT) がゼロを返すのはなぜですか?さらに、成功表示を返すバージョン(ヘルプでは2. と指定されています。関数の成功に応じて、true または false を返す。成功すれば、最後のパラメータで参照渡しされた先の変数に、プロパティの値が格納される。) 通話が成功したことを報告する。void OnStart() { double SymbolVolumeLimit1 = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_LIMIT); double SymbolVolumeLimit2 = DBL_MAX; Print("Symbol() = ", Symbol(), ", bool SymbolInfoDouble() = ", SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_LIMIT, SymbolVolumeLimit2)); Print("SymbolVolumeLimit1 = ", SymbolVolumeLimit1, ", SymbolVolumeLimit2 = ", SymbolVolumeLimit2); } /* Вывод в лог (хронология - сверху вниз): JN 0 1 (EURUSD,M15) 02:41:18 Symbol() = EURUSD, bool SymbolInfoDouble() = true JJ 0 1 (EURUSD,M15) 02:41:18 SymbolVolumeLimit1 = 0, SymbolVolumeLimit2 = 0 */SymbolInfoDouble()の2番目のバージョンはtrueを返し、すなわち正常に実行されました。また、最初はDBL_MAXで初期化されていたSymbolVolumeLimit2変数が、SymbolInfoDouble()を呼び出した後に0を受け取ったことも確認できます。また、メタクォーツ社の見解では、そのような状況において、エキスパート・アドバイザーはハードコードされた値を使用するのではなく、そのような関数が返す値に基づいて行うべきでしょうか。 Alexander Bereznyak 2010.08.29 09:23 #1108 OrderCheck 機能を使用したことがある人。これは建前です。 MqlTradeRequest request; request.action=TRADE_ACTION_DEAL; request.symbol=_Symbol; request.volume=volume_exe; request.price=SymbolInfoDouble(_Symbol, SYMBOL_ASK); request.sl=0; request.tp=0; request.deviation=SymbolInfoInteger(_Symbol, SYMBOL_SPREAD)*2; request.type=ORDER_TYPE_BUY; request.type_filling=ORDER_FILLING_CANCEL; MqlTradeResult result; OrderCheck(request, result); if(OrderSend(request, result)==false)コンパイル時に、'result' - parameter conversion is not allowed.というエラーが発生します。OrderCheckを削除すると、すべてが正常にコンパイルされ、テスターでポジションが 開きます。 Errors, bugs, questions OrderSend(Request,Result) How to add a Дмитрий 2010.08.29 09:33 #1109 その内容はというと...。Alert(" прибыль=",ПросчетПрибылизаПериод(D'2010.08.01 00:00:00')); double ПросчетПрибылизаПериод(datetime датаначалапросчетаприбыли) { int i; double прибыльзапериод; ulong тикет; HistorySelect(датаначалапросчетаприбыли,TimeCurrent()); //HistorySelect(D'2010.08.20 00:00:00',D'2010.08.20 23:59:00'); for(i=1;i<=HistoryDealsTotal();i=i+1) { тикет=HistoryDealGetTicket(i); if(HistoryDealGetInteger(тикет,DEAL_TYPE)==DEAL_ENTRY_IN || HistoryDealGetInteger(тикет,DEAL_TYPE)==DEAL_ENTRY_STATE) continue; прибыльзапериод=прибыльзапериод+HistoryDealGetDouble(тикет,DEAL_PROFIT)+HistoryDealGetDouble(тикет,DEAL_COMMISSION)+HistoryDealGetDouble(тикет,DEAL_SWAP); } return(прибыльзапериод); } 指定された日付からの取引の利益をカウントする必要があります。実際とはまったく違う結果を出してしまうのです。例えば、私は約2000という結果ではなく、611という結果を得ました。1日あたりのチェックをするようになりました(コメント行)。同じ結果の日もある(!!)のですが、大抵はあるべき姿ではありません...(規則性は見つけられませんでした)。 そしてデバッガーは、取引量 全体に対して全く同じサイクルを生成しています。int変数以外は値が表示されない(Expressionが評価できない)ので、この件数だけしかトレースできないのですが。 このコードは正しいのか、デバッガの使い方は正しいのか...? Alexander 2010.08.29 09:45 #1110 SHOOTER777: ありがとうございます。その時は、開発者に連絡します。 こんにちは!ビルド番号、OS、ビットレートを指定し、コードを添付して、サービスデスクに状況を詳細に記述してください。 Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала www.mql5.com Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - Документация по MQL5 1...104105106107108109110111112113114115116117118...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
がすべて一致した。
2010.08.28 20:57:09 Servis (EURUSD,H1) L1=6653490000 L2=6653490000 L3=6653490000 M1=6653490000
2010.08.28 20:57:09 サーヴィス(EURUSD,H1) A=665349 B=665349 C=665349
2010.08.28 20:57:09 Servis (EURUSD,H1) --- OnInit() --- 1 --- !
と私のM1が合わなかったのです。
最初の数字を何に使うかにもよりますが、次のようにしてみてください。
もう一度、このことを問いかけたいと思います。
そのコードを添付します。
プログラミングを理解すれば、L1 = L2 = L3 = M1 となるはずです。 あなたはどうでしょうか?
当初、コンパイラは "#import "lbS7N_Servis.ex5 "がないことに文句を言った。
この行を削除したら、ギブアップしました。
2010.08.28 22:19:51 サービス[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=6617010000 M1=1016990000
2010.08.28 22:19:51 サービス[1] (EURUSD,H1) A=101699 B=101699 C=661701
2010.08.28 22:19:51 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !
コードの口座 番号を自分のものに置き換えると、こうなりました。
2010.08.28 22:26:46 サービス[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=1016990000 M1=1016990000
2010.08.28 22:26:46 サービス[1] (EURUSD,H1) A=101699 B=101699 C=101699
2010.08.28 22:26:46 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !
MQサーバー、ビルド316。
と私のM1がマッチしなかった
ユニークな状況...:(
そして、3つものユニークなシチュエーションがあるのです。これが検出されたものです。また、未検出のものはどれくらいあるのでしょうか?
そんな中、MetaQuotesは1ヶ月後にChampionship 2010を スタートさせるわけですね。
ああ、MetaTrader 5は驚きに満ちている...。
SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT) がゼロを返すのはなぜですか?
さらに、成功表示を返すバージョン(ヘルプでは2. と指定されています。関数の成功に応じて、true または false を返す。成功すれば、最後のパラメータで参照渡しされた先の変数に、プロパティの値が格納される。) 通話が成功したことを報告する。
SymbolInfoDouble()の2番目のバージョンはtrueを返し、すなわち正常に実行されました。また、最初はDBL_MAXで初期化されていたSymbolVolumeLimit2変数が、SymbolInfoDouble()を呼び出した後に0を受け取ったことも確認できます。
また、メタクォーツ社の見解では、そのような状況において、エキスパート・アドバイザーはハードコードされた値を使用するのではなく、そのような関数が返す値に基づいて行うべきでしょうか。
OrderCheck 機能を使用したことがある人。
これは建前です。
request.action=TRADE_ACTION_DEAL;
request.symbol=_Symbol;
request.volume=volume_exe;
request.price=SymbolInfoDouble(_Symbol, SYMBOL_ASK);
request.sl=0;
request.tp=0;
request.deviation=SymbolInfoInteger(_Symbol, SYMBOL_SPREAD)*2;
request.type=ORDER_TYPE_BUY;
request.type_filling=ORDER_FILLING_CANCEL;
MqlTradeResult result;
OrderCheck(request, result);
if(OrderSend(request, result)==false)
コンパイル時に、'result' - parameter conversion is not allowed.というエラーが発生します。
OrderCheckを削除すると、すべてが正常にコンパイルされ、テスターでポジションが 開きます。
その内容はというと...。
指定された日付からの取引の利益をカウントする必要があります。実際とはまったく違う結果を出してしまうのです。例えば、私は約2000という結果ではなく、611という結果を得ました。1日あたりのチェックをするようになりました(コメント行)。同じ結果の日もある(!!)のですが、大抵はあるべき姿ではありません...(規則性は見つけられませんでした)。 そしてデバッガーは、取引量 全体に対して全く同じサイクルを生成しています。int変数以外は値が表示されない(Expressionが評価できない)ので、この件数だけしかトレースできないのですが。
このコードは正しいのか、デバッガの使い方は正しいのか...?
ありがとうございます。その時は、開発者に連絡します。