Time()の問題点 - ページ 2

 

これもうまくいきません・・・。

Day() == 1 || Day() == 2 || Day() == 3 || Day() == 4 

RaptorUKはすでにTimeDayOfWeek()を参照している上であなたに返信しています。Day()TimeDayOfWeek()DayOfWeek() の違いは以下の通りです(よく読んでください)。

int Day() =現在の月日、つまり、最後に判明したサーバー時刻の月日を返します

int DayOfWeek( ) = 最後に判明したサーバ時刻における、ゼロ基準の曜日(0-日曜日,1,2,3,4,5,6) を返します。

int TimeDayOfWeek(datetime Time) =指定された日付のゼロ基準の曜日(0は日曜日,1,2,3,4,5,6) を返します。


つまり、Day() = 1は、月曜日から日曜日までのどの日 でもよいということです。

ちなみに、今日は5月31日、Day()関数は31(日付)を返し、DayOfWeek()は4(木曜日)を返します。

明日は6月1日、Day()関数は1(Date)を、DayOfWeek()関数は5(Friday)を返します。

これをスクリプトとして使用します。

Alert ("TimeDay of local time ",TimeDayOfWeek(TimeLocal())," and TimeDay of server time ",TimeDayOfWeek(TimeCurrent()));
Alert ("Day () is ",Day()," and DayOfWeek is ", DayOfWeek ());
 
toCFx:

MT4の「時間」ベースの機能の大半は、マジで欠陥があるんじゃないかと思い始めています。

つまり、私のポジションコントロールのロジックをすべてリセットして、次のような平凡なものにすればいいのです。TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59 のようなありふれたものにポジションコントロールのロジックを全てリセットして、一度もトレードを決済できない(EAが単にコードを無視する!)場合、私はMT4がこの種の関数に関して修正すべきいくつかの問題があると言うことになりますね。

もしMQL4の時間ベースの関数に 重大な欠陥があるのなら、他の誰かが今頃気づいていると思いませんか?

関数に欠陥があると主張する前に、まず自分の欠陥コードを修正してみてはどうでしょうか?

を変更してみてください。

TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59を変更してみてください。

に変更してみてください。

if(TimeHour(TimeCurrent()) == 23 && TimeMinute(TimeCurrent()) == 59)

toCFx です。

これ以上ないくらいシンプルなコードですね。00:00から00:05の間にクソ取引を開始するようにEAに指示しているんだ。これは決して難しいことではありません。6歳の子供でもコーディングできますよ。ここでもう一度。[b]TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05[/b].

これも修正してみてください(笑)

を変更してみてください。

TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05] に変更。

に変更します。

if(TimeHour(TimeCurrent()) == 0 && TimeMinute(TimeCurrent()) <= 5) に変更。

 

CFxさんへ。

もし私が暴言を吐いたら、申し訳ありません。今日は調子が悪いのです。私の返信を ちゃんと読んでいないため、PCを再インストールしなければならないかもしれない他の掲示板主がいると思います。

1.月曜日から木曜日までの間、23:57にすべての取引を終了し、金曜日の21:57に取引を終了 したい場合

   if (
       (DayOfWeek () >= 1 && DayOfWeek() <= 4 && TimeHour(TimeCurrent()) >= 23 && TimeMinute(TimeCurrent()) >= 57)
       || (DayOfWeek() == 5                   && TimeHour(TimeCurrent()) >= 21 && TimeMinute(TimeCurrent()) >= 57)
      )
      {
      // close it
      }

そして、同じコードをOpen Tradeのために修正することができます。

テストについてはこちらをお読みくださいhttps://www.mql5.com/en/articles/1512


2.これは重要です:あなたは "ツール "に言及した。 もしよろしければ、「ツール」の意味するところを詳しく教えてください。私たちはMetaEditorしか使っていません。ここには、オンラインツールを使っていて、私たちにエラーの修正をしてもらっているフォロワーがたくさんいます。例えば、ロジックは正しいが、間違った種類のmql4関数を使用している場合などです。

... who uses a tool for helping me build EAs. That tool allows the use of some MQL structure, but it does not execute on explicit MQL functions. It simply takes MQL code, evaluates whether the MQL based condition is true/false, and then executes a custom function such as OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell, etc. But, it does not run MQL code explicitly. For example, you can(not) use the Print or Comment function to get something to appear on the chart window of MT4 (just one example).


3.3. あなたは長いページを書くのが好きなようですが、それについて私ができることはありません。

これは私の最初の投稿です。まず、私はMQLの開発者ではないことをご了承ください。

特に、あなたが言った後に、恥をかかないように・・・。

私はMQLの開発者ではありませんが、論理的な構造を開発する のは得意ですし、システム的な 問題を感じたらそれを察知 することができます。

あなたの長いエッセイを読むことも含めて、私たちはいつでもお手伝いします。

これがあなたの-とても長い-最初の投稿です。

こんにちは、MQL4コミュニティです。

これは私の最初の投稿です。まず、私はMQLの開発者ではないことをご理解ください。 私はトレーダーであり、EAを構築するためのツールを使っています。 そのツールはMQL構造を使用することができますが、明示的なMQL関数を実行するわけではありません。単にMQLコードを受け取り、MQLベースの条件が真/偽であるかを評価し、OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell などのカスタム関数を実行するだけです。しかし、明示的にMQLコードを実行するわけではありません。例えば、Print関数やComment関数を使用して、MT4のチャートウィンドウに何かを表示させることができます(あくまで一例です)。

ですから、私はMQLについてほんの少し知っています。それは、私がEAを構築するのに使っているEA開発ツールを使えるようにするのに十分な程度です。これまで、このツールを使って10個のEAを作り、そのうち7個は採算が合わずに断念しました。これは、以前Excelでトレーディングシステムを作ったときの試作成功率より30%ほど良い数字です。私は通常、10個のアイデアのうち7-8個は期待したほど利益が上がらず、最適化プロセスを開始するのに十分な利益を生む2-3個のデザインが残ると予想しています。さて、私について、また私がどのように行動しているかについてはもう十分でしょう。

ここに私の問題があり、私は助けを求めて正しい場所に来たことを願っています!

私はこのコード[b]取引を閉じるために実行している:[/b]。

Day() == 1 || Day() == 2 || Day() == 3 || Day() == 4 && TimeHour(TimeCurrent() >=23 && TimeMinute(TimeCurrent()) >=57 || Day() == 5 && TimeHour(TimeCurrent() >=21 && TimeMinute(TimeCurrent()) >=57

注:問題は、月曜日から木曜日まで、23:57まですべてのトレードがオープンなままであることです。また、金曜日も21:57まですべてのトレードがオープンなままです。


また、このコードをMQLブロック[b]で実行して、トレードをオープンしています[/b]。

TimeHour(TimeCurrent()) == 00 && TimeMinute(TimeCurrent()) <= 05

注:00:00から00:05の間に開く唯一の取引は、テスター開始ボタンをクリックしたときの、バックテストの最初の取引です。この取引は00:00に正確にオープンしています。しかし、他の取引はどれも週明けの00:00と00:05の間にオープンしていません。

まとめると

- 00:00にテスター開始ボタンをクリックした後、1つの取引が開始されます。
- その後、23:57(月~木)または21:57(金)に取引がクローズされることはない。
- その後、00:00から00:05の間に取引が開始されることはありません。

上記のすべての時間帯は、十分なティックフローがあります。つまり、Testerが使用するデータには隙間がありませんでした。

何かご助言をお願いします。なぜこれらの取引はコード化された時間に決済されないのでしょうか?月曜日から金曜日の00:00から00:05の間は常にトレードシグナルが利用可能であるのに、なぜトレードが実行されないのでしょうか?

ありがとうございました。
cfx

 
   if( DayOfWeek()<1 || DayOfWeek()>5 || TimeMinute(TimeCurrent()) < 57 )
      return(0);
   else if( TimeHour(TimeCurrent()) >= 23  || ( DayOfWeek() == 5 && TimeHour(TimeCurrent()) >= 21) ){
     //Close
   }
 
CFx:

私は、このような目的のためにPrintステートメントを使用したことはありません。

MetaEditorでコードを開き、Print関数を 追加して、何が起こっているのかを教えてください。

MT4にはデバッガがないので、利用できるツールの1つがPrintです ... もう1つはCommentです ...そして、それはちょうどそれについてです。

 
RaptorUK:

MetaEditorでコードを開き、Print関数を追加して、何が起こっているのかを教えてください。

MT4にはデバッガがないので、利用できる唯一のツールはPrintです ... 他のツールはCommentです ...そして、それはちょうどそれについてです。


そのためにAlert() もよく使っています。
 

道具のこと道具について教えてください 恥ずかしがらないでください 先日のRaptorUKさん、dabblerさん、SDCさんのコメントで勉強になりました。というわけで、教えてください.

:D

 
SDC:

私はその目的のためにAlert() をかなり多く使用します。
私はそうではありません......それが私がそれを忘れた理由です......訂正ありがとうございます:-)
 
onewithzachy:

笑あなたは未実現の人です。あなたのこのコード....

...決して真実に戻ることはない。

あなたは、さらに「あなたの」論理構成を開発する必要がある人です。

そして、これを構築する...


OPを読んでみたらどうでしょう。 私がMQLの開発者でないことは、はっきり書いてありますよ。 さらに、プログラミング言語を論理的に構築できることと、常に利益をもたらすトレーディングシステムを論理的に構築できることは、大きく(大量に)区別されます。 残念ながら、このビジネスでは、どんな市場条件(強気、弱気、過渡期)でも実際に機能する知的取引システムを研究、設計、構築、エンジニア、統合、実装するために何が必要かを全く理解していないプログラマーがたくさんオンラインに存在します。 だから、私がどこから来たのか、あなたが理解できないのはわかります。 私はそのインテリジェントな取引システムを構築し、それを(よりによって)エクセルで行ったのです。

過去7年間、パートタイムで平均をはるかに上回る結果を出しながら、設計、構築、最適化を続けてきたのです。100%カスタムの指標フレームワークからの入力で設計された、完全に統合された、意思決定支援のトレーディングシステムです。 私のシステムには、50年以上前の標準的な指標はありません。システム全体で使用されているすべての指標は、私が長年の研究とテストを経て一から作り上げた新しいデザインと指標の概念に由来しています。 あとは、それを本に書くだけです。

ですから、機能するトレーディング・システムをデザインするという点では、おそらくこの掲示板で私のような人物をしばらく見ていないのではないかと思います(見たことがあるとしても)。 新しいクラスのインジケータをデザインした人を知っていますか? 既存のインジケーターのデザインに手を加えて、新しい名前をつけたということではありません。 これは、これまで公に議論されることのなかった市場理論に基づいた、全く新しいインジケーターのコンセプトです。 それらは[b]Delta Differential Class Indicators[/b]と呼ばれ、今までに見たことのない何から何まで従来の相場理論に基づいていない、その事実は断言します。

私のMQLへの興味は、D2クラスのインジケーターが低い時間軸で価値があるかどうかを発見することです。このプロトタイプシステムは、日足、週足、月足、年足のデータを使い、24時間に1つのトレードシグナルを出し、過去3年27年間、特定のターゲットに対して91%から99%の精度で推移してきました。 これは、24時間当たり17~67ピップス(中央値)の目標範囲において、91~99%の目標精度で約850以上の取引シグナルを生成していることになります。

現在のプロトタイプは自動化されておらず、MQLで扱うにはあまりにも複雑です。 OOPが最適な環境でしょうが、私は他のことに忙しく、CやC++をじっくりと学ぶことができません。

このテストは、私のデザインしたインジケータが、日足以下の時間枠でうまく機能するかどうかを調べるためのPOCです。 もし、私のデザインを使って、より低い時間枠を自動化する技術的な正当性を見つけることができれば、私がOOPを学び、プロトタイプをスタンドアローンの独自のWindows取引アプリケーション(いかなる状況でも販売しない)に変えるために必要な時間を正当化することができます。

トレーダーは取引をする。 プログラマーは、プログラミングをする。 私はプログラマーではない............まだ。

 
onewithzachy:

これもうまくいきません・・・。

RaptorUKはすでにTimeDayOfWeek()を参照している上であなたに返信しています。Day()TimeDayOfWeek()DayOfWeek() の違いは以下の通りです(よく読んでください)。

int Day() =現在の月日、つまり、最後に判明したサーバー時刻の月日を返します

int DayOfWeek( ) = 最後に判明したサーバ時刻における、ゼロ基準の曜日(0-日曜日,1,2,3,4,5,6) を返します。

int TimeDayOfWeek(datetime Time) =指定された日付のゼロ基準の曜日(0は日曜日,1,2,3,4,5,6) を返します。


つまり、Day() = 1は、月曜日から日曜日までのどの日 でもよいということです。

ちなみに、今日は5月31日、Day()関数は31(日付)を返し、DayOfWeek()は4(木曜日)を返します。

明日は6月1日、Day()関数は1(Date)を、DayOfWeek()関数は5(Friday)を返します。

これをスクリプトとして使用します。


ある投稿にあるようにDayOfWeek()を使ってみたのですが、やはりうまくいきませんでした。