記事"トレードロボットのプロトタイプ"についてのディスカッション - ページ 2 123 新しいコメント Alexey Klenov 2010.08.30 13:10 #11 このデザインは避けることをお勧めする//------------------------------------------------------------------ CheckNewBar bool CExpertAdvisor::CheckNewBar() // 新しいバーが現れるかどうかをチェックする機能 { MqlRates rt[2]; if(CopyRates(m_smb,m_tf,0,2,rt)!=2) // バーをコピーする { Print("CopyRates of ",m_smb," failed, no history"); return(false); } if(rt[1].tick_volume>1) return(false); // 音量をチェックする return(true); } 前のティックの処理に時間がかかり、新しいバーの最初のティックの到着を見逃す可能性があるからです。それぞれ、オープニングを見逃す可能性があります。しかし、そのためには、たとえばゼロ・バーの前の時刻を保存しておき、ゼロ・バーの現在の時刻と比較する必要があります。もし同じなら、新しいバーはありません。異なる場合は、少なくとも新しい(次の)バーが開かれ、その後、保存されているゼロ・バーの時間をゼロ・バーの現在の時間で初期化します。この構文はより信頼性が高い。 Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций www.mql5.com Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5 Maximillion Propheet 2010.08.30 20:00 #12 今後の記事で取り上げる:*ネットワークやクライアントプログラムの停止(長時間のネットワーク切断、ネットワークラグによるスリッページ(および再クオート)、クライアントプログラムまたはオペレーティングシステムの終了、再起動、クラッシュ(クライアント側のソフトウェアの長期不在)など)に関連する問題を回避するために、これらは*必須*です;いわゆる "バーチャル "注文は、OCO以外の代用品も含め、それを使用することはできません。(堅牢性が要求される場合、損切り注文と利食い注文はサーバーサイドになければならず、一方がヒットした場合、もう一方も同時にサーバーによって削除されなければなりません。)*言い換えれば、クライアント/OSがクラッシュした場合(そして自動的に再起動した場合)、その間に未決済の個々の取引と注文がどうなったかをEAが正確に把握できるようにしたい:満了、クローズ、まだ有効、関連するS/L注文とT/P注文がどの取引/注文に属しているかなどです。(取引開始とディスクへの状態書き込みの間に競合条件があり、クライアントプログラムがまさに不適切なタイミングでクラッシュする可能性があるため、状態をディスクに書き込むことは*できません*。)私が知る限りでは、MT5は*1*(1つ)のサーバーサイドのs/lおよびt/p注文*商品ごと*(取引ごとではない)のみサポートしており、OCO注文はサポートしていません(OCO注文は取引ごとのs/lおよびt/p注文をシミュレートするために使用できますが、そこにも競合条件があります)。上記が解決されない限り、私はMT5(単純化された単一注文単一時間枠単一方向MAクロスタイプのEA)を介した取引に100ドル以上コミットしないでしょう。そして、100ドルについても確信が持てない。 Дмитрий Александрович 2010.09.04 12:05 #13 olyakish:このデザインは避けることをお勧めする前のティックの処理に時間がかかり、新しいバーの最初のティックの到着を見逃す可能性があるからです。それぞれ、オープニングを見逃す可能性があります。しかし、そのためには、たとえばゼロ・バーの前の時刻を保存しておき、ゼロ・バーの現在の時刻と比較する必要があります。もし同じなら、新しいバーはありません。異なる場合は、少なくとも新しい(次の)バーが開かれ、その後、保存されているゼロ・バーの時間をゼロ・バーの現在の時間で初期化します。この設計はより信頼性が高い。私はこのようにしました:bool CUniexp::checkNewBar(void) { static datetime prevTime[1]; datetime currentTime[0]; CopyTime(_Symbol,_Period,0,1,currentTime); if (currentTime[0]==prevTime[0]) {return (false);} else { prevTime[0] = currentTime[0]; return (true); } } Prival 2010.09.04 12:21 #14 https://www.mql5.com/ja/code/107 isNewBar 投票: 72010.05.07Privalwww.mql5.com Функция анализа появления нового бара на заданном таймфрейме. ORIONIS 2010.09.06 23:54 #15 Compiles but debugger fails. Loading of C:¥Program Files¥MetaTrader 5¥MQL5¥Experts¥Examples¥eMyEA.ex5 failed echostate 2010.09.16 00:38 #16 Rosh:新しい記事「貿易ロボットのプロトタイプ」が掲載されました:著者Алексей Сергеев素晴らしい記事をありがとうございます!私は初心者ですが、コードについて質問があります。関数void CExpertAdvisor::TrailingPosition(long dir,int TS)の中に1行あります:sl=NormalSL(dir,apr,apr,TS,StopLvl); // ストップロスの計算NormalSLを呼び出すとき、第2引数と第3引数の両方にaprを使うべきでしょうか?と思ったのですがsl=NormalSL(dir,op,apr,TS,StopLvl);なぜなら、第2引数は「逆」方向(すなわち変数apr)ではなく、「指定された」方向(すなわち変数op)のビッド/アスク価格であるべきだからです。ありがとう! --- 2010.09.16 11:01 #17 echostate: 関数 void CExpertAdvisor::TrailingPosition(long dir,int TS) の中に1行あります:sl=NormalSL(dir,apr,apr,TS,StopLvl); // ストップロスを計算する。 NormalSLを呼び出すとき、第2引数と第3引数の両方にaprを使うべきでしょうか?と思ったのですがsl=NormalSL(dir,op,apr,TS,StopLvl);第2引数と第3引数はaprでなければならない。なぜなら、tralの計算はポジションが決済される価格から導かれるからです。 買いの場合はビッド、売りの場合はアスクです。なぜなら、第2引数は、「逆」方向(すなわち、変数apr)ではなく、「指定された」方向(すなわち、変数op)のビッド/アスク価格でなければならないからです。 は「逆」方向から計算されるべきである 。この場合、apr. echostate 2010.09.17 03:22 #18 sergeev:第2引数と第3引数はprでなければならない。なぜなら、tralの計算はポジションが決済される価格から導かれるからです。 買いはビッド、売りはアスク。 は「逆」方向から計算されなければならない 。この場合、apr.素早いご回答ありがとうございます!私の勘違いかと思いました。関数の中でdouble CExpertAdvisor::CountLotByRisk(int dist,double risk,double lot) // リスクの大きさでロットを計算する { if(dist==0 || risk==0) return(lot); m_smbinf.Refresh(); return(NormalLot(AccountInfoDouble(ACCOUNT_BALANCE)*risk/(dist*10*m_smbinf.TickValue()))); } なぜ戻り値の "dist "と "m_smbinf.TickValue() "の間に "10 "があるのでしょうか?おそらく "dist "はストップロス(pips単位)で、"m_smbinf.TickValue() "は通貨ペアの 1ロットあたり1pipあたりの米ドル値だと思います。ですから、その間にもう一つ「10」を掛ける理由がよくわかりません。ありがとうございます! NFTrader 2011.04.10 16:18 #19 本当にありがとう。 Haitao Jiang 2011.04.10 17:41 #20 とても役に立つ記事だ。本当にありがとう! 123 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
このデザインは避けることをお勧めする
前のティックの処理に時間がかかり、新しいバーの最初のティックの到着を見逃す可能性があるからです。
それぞれ、オープニングを見逃す可能性があります。
しかし、そのためには、たとえばゼロ・バーの前の時刻を保存しておき、ゼロ・バーの現在の時刻と比較する必要があります。
もし同じなら、新しいバーはありません。
異なる場合は、少なくとも新しい(次の)バーが開かれ、その後、保存されているゼロ・バーの時間をゼロ・バーの現在の時間で初期化します。
この構文はより信頼性が高い。
今後の記事で取り上げる:
私が知る限りでは、MT5は*1*(1つ)のサーバーサイドのs/lおよびt/p注文*商品ごと*(取引ごとではない)のみサポートしており、OCO注文はサポートしていません(OCO注文は取引ごとのs/lおよびt/p注文をシミュレートするために使用できますが、そこにも競合条件があります)。上記が解決されない限り、私はMT5(単純化された単一注文単一時間枠単一方向MAクロスタイプのEA)を介した取引に100ドル以上コミットしないでしょう。そして、100ドルについても確信が持てない。
このデザインは避けることをお勧めする
前のティックの処理に時間がかかり、新しいバーの最初のティックの到着を見逃す可能性があるからです。
それぞれ、オープニングを見逃す可能性があります。
しかし、そのためには、たとえばゼロ・バーの前の時刻を保存しておき、ゼロ・バーの現在の時刻と比較する必要があります。
もし同じなら、新しいバーはありません。
異なる場合は、少なくとも新しい(次の)バーが開かれ、その後、保存されているゼロ・バーの時間をゼロ・バーの現在の時間で初期化します。
この設計はより信頼性が高い。
私はこのようにしました:
Compiles but debugger fails.
Loading of C:¥Program Files¥MetaTrader 5¥MQL5¥Experts¥Examples¥eMyEA.ex5 failed
新しい記事「貿易ロボットのプロトタイプ」が掲載されました:
著者Алексей Сергеев
素晴らしい記事をありがとうございます!私は初心者ですが、コードについて質問があります。
関数void CExpertAdvisor::TrailingPosition(long dir,int TS)の中に1行あります:
sl=NormalSL(dir,apr,apr,TS,StopLvl); // ストップロスの計算
NormalSLを呼び出すとき、第2引数と第3引数の両方にaprを使うべきでしょうか?と思ったのですが
sl=NormalSL(dir,op,apr,TS,StopLvl);
なぜなら、第2引数は「逆」方向(すなわち変数apr)ではなく、「指定された」方向(すなわち変数op)のビッド/アスク価格であるべきだからです。
ありがとう!
関数 void CExpertAdvisor::TrailingPosition(long dir,int TS) の中に1行あります:sl=NormalSL(dir,apr,apr,TS,StopLvl); // ストップロスを計算する。
NormalSLを呼び出すとき、第2引数と第3引数の両方にaprを使うべきでしょうか?と思ったのですが
sl=NormalSL(dir,op,apr,TS,StopLvl);
第2引数と第3引数はaprでなければならない。
なぜなら、tralの計算はポジションが決済される価格から導かれるからです。 買いの場合はビッド、売りの場合はアスクです。
なぜなら、第2引数は、「逆」方向(すなわち、変数apr)ではなく、「指定された」方向(すなわち、変数op)のビッド/アスク価格でなければならないからです。
第2引数と第3引数はprでなければならない。
なぜなら、tralの計算はポジションが決済される価格から導かれるからです。 買いはビッド、売りはアスク。
は「逆」方向から計算されなければならない 。この場合、apr.素早いご回答ありがとうございます!私の勘違いかと思いました。
関数の中で
なぜ戻り値の "dist "と "m_smbinf.TickValue() "の間に "10 "があるのでしょうか?おそらく "dist "はストップロス(pips単位)で、"m_smbinf.TickValue() "は通貨ペアの 1ロットあたり1pipあたりの米ドル値だと思います。ですから、その間にもう一つ「10」を掛ける理由がよくわかりません。
ありがとうございます!
とても役に立つ記事だ。本当にありがとう!