他の通貨ペアからbid/askをインポートする方法は? - ページ 5 123456 新しいコメント Seng Joo Thio 2019.05.14 05:07 #41 HosseinKOGO:以上、GBPAUD H4 2018.3.12丸一日でしたー。で、今回は最後まで飛ばさずにやりました。印刷 機能は、印刷するものが多すぎると、一部のレポートが失われるかも? もう一つの問題は、これら3つの楽器のティックが異なるミリ秒で出てくるので、GBPAUDでstart/OnTick関数を使うと、GBPAUDのティックが出るたびにstart関数が実行されるだけだからだと思います。もしそうなら、すべての商品のask/bid価格が正確に同じ時間に出てくるたびに、それは返されます。データは問題なさそうですが・・・。印刷機能についてはその通りです...。私のテストでも多くの欠落行が見られます。しかし、すべてをファイルに印刷すると、何も欠落していません。各GBPAUDティックの時間は、他のペアの最新のティックを取得するために使用されます(同じ時間まで)ので、それは常に何かを返すでしょう、ゼロではありません。私はこの関数をクラス内に置くことに決めました。添付ファイルを参照してください。EAと一緒にexpertフォルダに置いてください。自由に改造してください。 以下のサンプルは、その使い方の一例です(ハイライトされた行が重要です)。 #include "TicksInfo.mqh" CTicksInfo ticksInfo; string otherPairs[] = {"GBPUSD","EURUSD"}; string allPairs[] = {}; int tickCount = 0; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { ticksInfo.init(otherPairs); int numSym = ArraySize(otherPairs)+1; ArrayResize(allPairs,numSym); allPairs[0] = _Symbol; for (int i=1; i<numSym; i++) allPairs[i] = otherPairs[i-1]; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ticksInfo.deInit(); Print ("Total Ticks = ", tickCount); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { tickCount++; Print ("=== Now process tick ", tickCount); MqlTick myTick; for (int i=0; i<ArraySize(allPairs); i++) { if (ticksInfo.getTick(allPairs[i],myTick)) printTick (allPairs[i],myTick); else Print (allPairs[i], " Error"); } } //+------------------------------------------------------------------+ void printTicktoFile(string sym, MqlTick &tick) { int file = FileOpen("LogFile.log",FILE_WRITE|FILE_READ|FILE_TXT); FileSeek(file,0,SEEK_END); FileWrite(file, sym, " tick number ", tickCount, ", at ", tick.time, " ", IntegerToString(tick.time_msc-(tick.time*1000),3,'0'), " Ask = ", tick.ask, " Bid = ", tick.bid); FileClose(file); } void printTick(string sym, MqlTick &tick) { Print (sym, " tick number ", tickCount, ", at ", tick.time, " ", IntegerToString(tick.time_msc-(tick.time*1000),3,'0'), " Ask = ", tick.ask, " Bid = ", tick.bid); } ticksInfo.getTick(<SYMBOL String>,<MqlTick Struct>). この行がポイントです。もしこれがfalseを返したら、エラーメッセージをジャーナルで確認する必要があります。 ファイル: TicksInfo.mqh 5 kb HosseinKOGO 2019.05.14 11:27 #42 Seng Joo Thio:データは問題なさそうですが・・・。印刷機能についてはその通りです...。私のテストでも多くの欠落行が見られます。しかし、すべてをファイルに印刷すると、何も欠落していません。各GBPAUDティックの時間は、他のペアの最新のティックを取得するために使用されます(同じ時間まで)ので、それは常に何かを返すでしょう、ゼロではありません。私はこの関数をクラス内に置くことに決めました。添付ファイルを参照してください。EAと一緒にexpertフォルダに置いてください。自由に改造してください。 以下のサンプルは、その使い方の一例です(ハイライトされた行が重要です)。 ticksInfo.getTick(<SYMBOL String>,<MqlTick Struct>). この行がポイントです。falseを返した場合、エラーメッセージのジャーナルを確認する必要があります。ご協力ありがとうございました。 これらの行をすべて適切な場所にコピーしました。しかし、私はコードを理解していないので、SecondPairのAskとBidをAsk2,Bid2に入れ、同じことをThirdPairに入れる方法をアドバイスください。 これが私のグローバルエリアです。 #include "TicksInfo.mqh" CTicksInfo ticksInfo; extern string SecondPair; extern string ThirdPair; string otherPairs[] = {SecondPair,ThirdPair}; string allPairs[] = {}; int tickCount = 0; . . . そして、この部分は、コンパイル時に2つのエラーを返します。これらをどうすればいいのでしょうか?'SecondPair' - 定数式が必要 MyEA!.mq4 'ThirdPair' - 定数式が必要 MyEA!.mq4 Seng Joo Thio 2019.05.14 11:49 #43 HosseinKOGO:よろしくお願いします。 これらの行をすべて適切な場所にコピーしました。しかし、私はコードを理解していないので、SecondPairのAskとBidをAsk2、Bid2に入れ、ThirdPairにも同じことをする方法をアドバイスしてください。 これが私のグローバルエリアです。 そして、この部分は、コンパイル時に2つのエラーを返します。これらをどうすればいいのでしょうか?'SecondPair' - 定数式が必要 MyEA!.mq4 'ThirdPair' - 定数式が必要 MyEA!.mq4 次に、allPairsと同じようにotherPairsを宣言します。そして、OnInitで、こうします。 ArrayResize(otherPairs,2); otherPairs[0] = SecondPair; otherPairs[1] = ThirdPair; そして、Ask2, Bid2, Ask3, Bid3 に値を割り当てるには、OnTick で次のようにします。 MqlTick myTick; if (ticksInfo.getTick(SecondPair,myTick)) { Ask2 = myTick.ask; Bid2 = myTick.bid; } else Print (SecondPair, " Error"); if (ticksInfo.getTick(ThirdPair,myTick)) { Ask3 = myTick.ask; Bid3 = myTick.bid; } else Print (ThirdPair, " Error"); HosseinKOGO 2019.05.14 13:04 #44 Seng Joo Thio:そして、allPairsと同じようにotherPairsを宣言します。そして、OnInitで、こうします。 そして、Ask2, Bid2, Ask3, Bid3 に値を割り当てるには、OnTick で以下のようにします。 また、00が表示される :( 私のグローバルエリアです。 #include "TicksInfo.mqh" CTicksInfo ticksInfo; extern string SecondPair; extern string ThirdPair; string otherPairs[] = {}; string allPairs[] = {}; int tickCount = 0; . . . OnInit: ticksInfo.init(otherPairs); int numSym = ArraySize(otherPairs)+1; ArrayResize(allPairs,numSym); allPairs[0] = _Symbol; for (int i=1; i<numSym; i++) allPairs[i] = otherPairs[i-1]; ArrayResize(otherPairs,2); otherPairs[0] = SecondPair; otherPairs[1] = ThirdPair; . . . OnDeinit: ticksInfo.deInit(); Print ("Total Ticks = ", tickCount);OnTick: tickCount++; Print ("=== Now process tick ", tickCount); MqlTick myTick; for (int i=0; i<ArraySize(allPairs); i++) { if (ticksInfo.getTick(allPairs[i],myTick)) printTick (allPairs[i],myTick); else Print (allPairs[i], " Error"); } if (ticksInfo.getTick(SecondPair,myTick)) { Ask2 = myTick.ask; Bid2 = myTick.bid; } else Print (SecondPair, " Error"); if (ticksInfo.getTick(ThirdPair,myTick)) { Ask3 = myTick.ask; Bid3 = myTick.bid; } else Print (ThirdPair, " Error");ジャーナル 2019.05.14 17:37:14.686 2018.01.03 23:36:58 MyEA!GBPAUD,H4: GBPCADエラー 2019.05.14 17:37:14.686 2018.01.03 23:36:58 MyEA!GBPAUD,H4:GBPUSDエラー 2019.05.14 17:37:14.686 2018.01.03 23:36:58 MyEA!GBPAUD,H4: GBPAUD tick number 221179, at 2018.01.03 23:36:58 000 Ask = 1.72479 Bid = 1.72459 2019.05.14 17:37:14.686 2018.01.03 23:36:58 MyEA!GBPAUD,H4: === 現在、221179のティックを処理中です。 どこを間違えているのでしょうか? レベル0のスキルで申し訳ないです :D How to import bid/ask PREDICT time period MetaTrader 5 Strategy Tester! Seng Joo Thio 2019.05.14 13:08 #45 HosseinKOGO:また00が表示される :( 私のグローバルエリア OnInit: OnDeinit: OnTickです。 どこを間違えているのでしょうか? 私の技術レベルゼロで申し訳ないです :D OnInit - 新しい3行は、すべての行の前に置く必要があります。 Seng Joo Thio 2019.05.14 13:14 #46 HosseinKOGO:レベル0の技術で申し訳ないです :D 変数と関数、そして実験する意欲が大切です。 HosseinKOGO 2019.05.14 13:15 #47 Seng Joo Thio: OnInit - 新しい3行は、すべての行の前に置く必要があります。私はそれをやりました。しかし、非常に奇妙なことに、これらの2つの余分なペアのためのタイマーは動作しません...。 2019.05.14 17:41:55.469 2018.01.05 11:11:24 MyEA! GBPAUD,H4: GBPCAD tick number 370711, at 1970.01.01 00:00:00 000 Ask = 0.0 Bid = 0.0 2019.05.14 17:41:55.469 2018.01.05 11:11:24 MyEA! GBPAUD,H4: GBPUSD tick number 370711, at 1970.01.01 00:00:00 000 Ask = 0.0 Bid = 0.0 2019.05.14 17:41:55.469 2018.01.05 11:11:24 MyEA! GBPAUD,H4: GBPAUD tick number 370711, at 2018.01.05 11:11:24 000 Ask = 1.72644 Bid = 1.72624 2019.05.14 17:41:55.469 2018.01.05 11:11:24 MyEA! GBPAUD,H4: === Now process tick 370711 Seng Joo Thio 2019.05.14 13:35 #48 HosseinKOGO:やりましたよ。しかし、とても不思議なことに、その2組の余分なペアのタイマーが機能しないのです...。 実験が終わって、まだ原因がわからないようなら、eaの全体像を見せてください。今から8時間後くらいに見てみようかな :).あとは😴...。😂 William Roeder 2019.05.14 15:33 #49 Seng Joo Thio: OnInit - 3つの新しい行は、すべての行の前に置かれるべきです。OnInit(またはロード時) では、まだ接続やチャートがない可能性があるので、価格やサーバー関連の関数を使おうとしないでください。端末が起動します。インジケータ/EAをロード静的変数、グローバル変数が初期化される。(特定の順序に依存しないこと)。OnInitが 呼び出される。指標の場合、履歴があればOnCalculateが 呼び出されます。パスワードの入力が必要な場合があり、サーバとの接続が始まります。新しい履歴を受信すると、OnCalculateが 再び呼び出されます。新しいティックが受信され、OnCalculate/OnTickが 呼び出されます。今TickValue、TimeCurrent、アカウント情報と価格が有効である。 MT4では。MT4の場合:現在のチャートが特定のペア/TFを参照していない限り、価格にアクセスする前に 4066/4073 エラーを処理する必要が あります。MQL4 EAでのダウンロード履歴 - MQL4 and MetaTrader 4 - MQL4プログラミングフォーラム修正済み リンク先の関数は、問題のシンボル/TFの隠しチャートを開き(まだ開いていない場合)、履歴を更新し、シンボルを一時的にマーケットウォッチに置きます(まだそこにない場合)ので、SymbolInfoDouble(シンボル、SYMBOL_BID)またはMarketInfo(シンボル、MODE_BID)も最初の呼び出しではゼロを返さないようにします。 Seng Joo Thio 2019.05.14 21:22 #50 William Roeder:OnInit(またはロード時)には、まだ接続やチャートがない可能性があるので、価格やサーバー関連の関数を使用しようとしないでください。端末が起動します。インジケータ/EAをロード静的変数、グローバル変数が初期化される。(特定の順序に依存しないこと)。OnInitが 呼び出される。指標の場合、履歴があればOnCalculateが 呼び出されます。パスワードの入力が必要な場合があり、サーバとの接続が始まります。新しい履歴を受信すると、OnCalculateが 再び呼び出されます。新しいティックが受信され、OnCalculate/OnTickが 呼び出されます。今TickValue、TimeCurrent、アカウント情報と価格が有効である。 MT4では。MT4の場合:現在のチャートが特定のペア/TFを参照していない限り、価格にアクセスする前に 4066/4073 エラーを処理する必要が あります。MQL4 EAでのダウンロード履歴 - MQL4 and MetaTrader 4 - MQL4プログラミングフォーラム修正済み リンク先の関数は、問題のシンボル/TFの隠しチャートを開き(まだ開いていない場合)、履歴を更新し、シンボルを一時的にマーケットウォッチに配置します(まだそこにない場合)ので、SymbolInfoDouble(シンボル、SYMBOL_BID)またはMarketInfo(シンボル、MODE_BID)も最初の呼び出しではゼロを返さないでしょう。おっしゃるとおりです。でも、OnInitでやっていることは、シンボル名を格納するための配列の初期化と、独自のデータファイルを読み込むためのファイルハンドルの準備だけなので、心配はありません。MT4ストラテジーテスターは、他のシンボルのデータを照会すると常にゼロを返すからです(この動作は、人々がよく知っているOHLCデータの検索とは異なることに注意してください)。 123456 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
以上、GBPAUD H4 2018.3.12丸一日でしたー。で、今回は最後まで飛ばさずにやりました。
印刷 機能は、印刷するものが多すぎると、一部のレポートが失われるかも?
もう一つの問題は、これら3つの楽器のティックが異なるミリ秒で出てくるので、GBPAUDでstart/OnTick関数を使うと、GBPAUDのティックが出るたびにstart関数が実行されるだけだからだと思います。もしそうなら、すべての商品のask/bid価格が正確に同じ時間に出てくるたびに、それは返されます。
データは問題なさそうですが・・・。
印刷機能についてはその通りです...。私のテストでも多くの欠落行が見られます。しかし、すべてをファイルに印刷すると、何も欠落していません。
各GBPAUDティックの時間は、他のペアの最新のティックを取得するために使用されます(同じ時間まで)ので、それは常に何かを返すでしょう、ゼロではありません。
私はこの関数をクラス内に置くことに決めました。添付ファイルを参照してください。EAと一緒にexpertフォルダに置いてください。自由に改造してください。
以下のサンプルは、その使い方の一例です(ハイライトされた行が重要です)。
ticksInfo.getTick(<SYMBOL String>,<MqlTick Struct>). この行がポイントです。もしこれがfalseを返したら、エラーメッセージをジャーナルで確認する必要があります。
データは問題なさそうですが・・・。
印刷機能についてはその通りです...。私のテストでも多くの欠落行が見られます。しかし、すべてをファイルに印刷すると、何も欠落していません。
各GBPAUDティックの時間は、他のペアの最新のティックを取得するために使用されます(同じ時間まで)ので、それは常に何かを返すでしょう、ゼロではありません。
私はこの関数をクラス内に置くことに決めました。添付ファイルを参照してください。EAと一緒にexpertフォルダに置いてください。自由に改造してください。
以下のサンプルは、その使い方の一例です(ハイライトされた行が重要です)。
ticksInfo.getTick(<SYMBOL String>,<MqlTick Struct>). この行がポイントです。falseを返した場合、エラーメッセージのジャーナルを確認する必要があります。
ご協力ありがとうございました。
これらの行をすべて適切な場所にコピーしました。しかし、私はコードを理解していないので、SecondPairのAskとBidをAsk2,Bid2に入れ、同じことをThirdPairに入れる方法をアドバイスください。
これが私のグローバルエリアです。
そして、この部分は、コンパイル時に2つのエラーを返します。これらをどうすればいいのでしょうか?
'SecondPair' - 定数式が必要 MyEA!.mq4
'ThirdPair' - 定数式が必要 MyEA!.mq4
よろしくお願いします。
これらの行をすべて適切な場所にコピーしました。しかし、私はコードを理解していないので、SecondPairのAskとBidをAsk2、Bid2に入れ、ThirdPairにも同じことをする方法をアドバイスしてください。
これが私のグローバルエリアです。
そして、この部分は、コンパイル時に2つのエラーを返します。これらをどうすればいいのでしょうか?
'SecondPair' - 定数式が必要 MyEA!.mq4
'ThirdPair' - 定数式が必要 MyEA!.mq4
次に、allPairsと同じようにotherPairsを宣言します。そして、OnInitで、こうします。
そして、Ask2, Bid2, Ask3, Bid3 に値を割り当てるには、OnTick で次のようにします。
そして、allPairsと同じようにotherPairsを宣言します。そして、OnInitで、こうします。
そして、Ask2, Bid2, Ask3, Bid3 に値を割り当てるには、OnTick で以下のようにします。
また、00が表示される :(
私のグローバルエリアです。
OnInit:
OnDeinit:
OnTick:
ジャーナル
2019.05.14 17:37:14.686 2018.01.03 23:36:58 MyEA!GBPAUD,H4: GBPCADエラー
2019.05.14 17:37:14.686 2018.01.03 23:36:58 MyEA!GBPAUD,H4:GBPUSDエラー
2019.05.14 17:37:14.686 2018.01.03 23:36:58 MyEA!GBPAUD,H4: GBPAUD tick number 221179, at 2018.01.03 23:36:58 000 Ask = 1.72479 Bid = 1.72459
2019.05.14 17:37:14.686 2018.01.03 23:36:58 MyEA!GBPAUD,H4: === 現在、221179のティックを処理中です。
どこを間違えているのでしょうか?
レベル0のスキルで申し訳ないです :D
また00が表示される :(
私のグローバルエリア
OnInit:
OnDeinit:
OnTickです。
どこを間違えているのでしょうか?
私の技術レベルゼロで申し訳ないです :D
レベル0の技術で申し訳ないです :D
OnInit - 新しい3行は、すべての行の前に置く必要があります。
私はそれをやりました。しかし、非常に奇妙なことに、これらの2つの余分なペアのためのタイマーは動作しません...。
やりましたよ。しかし、とても不思議なことに、その2組の余分なペアのタイマーが機能しないのです...。
MQL4 EAでのダウンロード履歴 - MQL4 and MetaTrader 4 - MQL4プログラミングフォーラム
修正済み
リンク先の関数は、問題のシンボル/TFの隠しチャートを開き(まだ開いていない場合)、履歴を更新し、シンボルを一時的にマーケットウォッチに置きます(まだそこにない場合)ので、SymbolInfoDouble(シンボル、SYMBOL_BID)またはMarketInfo(シンボル、MODE_BID)も最初の呼び出しではゼロを返さないようにします。
MQL4 EAでのダウンロード履歴 - MQL4 and MetaTrader 4 - MQL4プログラミングフォーラム
修正済み
リンク先の関数は、問題のシンボル/TFの隠しチャートを開き(まだ開いていない場合)、履歴を更新し、シンボルを一時的にマーケットウォッチに配置します(まだそこにない場合)ので、SymbolInfoDouble(シンボル、SYMBOL_BID)またはMarketInfo(シンボル、MODE_BID)も最初の呼び出しではゼロを返さないでしょう。
おっしゃるとおりです。でも、OnInitでやっていることは、シンボル名を格納するための配列の初期化と、独自のデータファイルを読み込むためのファイルハンドルの準備だけなので、心配はありません。MT4ストラテジーテスターは、他のシンボルのデータを照会すると常にゼロを返すからです(この動作は、人々がよく知っているOHLCデータの検索とは異なることに注意してください)。