"ダミー "からの質問 - ページ 148

 
Yedelkin:
では、あなたのコードをご覧ください。if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) という条件は、今のままでは意味がないのです。なぜなら、どんな結果が出ても、あなたのbool 関数timeOntrade()は常にtrueを返すからです。
論理的な話ですね、そこに興味があります。余計なことを書いてしまい、必要なことを見落としていたかもしれません。
 
Interesting:

alph、これがイエデルキンの言っていることです。

これらの関数のバリエーションは、私たちの頭の中では同一である

なるほど、そうだったのか。
 
alph:
論理的な響き、それが興味を持った理由です。余計なことを書いてしまったようで、必要なものを見落としている可能性があります。


もう一つ、まだはっきりしないことがあります。

   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);

つまり、私の理解が正しければ、まずクロックを0に割り当てて、それから比較するのです。

論理はどこにあるのか?
 
Interesting:


もう一点、まだよくわからないのですが

つまり、私の理解が正しければ、まずクロックを0に割り当てて、それから比較するのです。

論理はどこにあるのか?
まだtrueの行を削除していませんが、これを削除すると、すでにontikでは、特定の値やパラメータとしてのクロックとの比較はできなくなるようです。
 
alph:
まだtrueとの行を削除していませんが、これを取るとontikの具体的な値やパラメータとしてのclockとの比較ができなくなるような気がしています。

現時点では、これらのオプションは同じだと私は思います。

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);
   return(true);
   }

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   return(true);
   }

一般的に、なぜ値を割り当てる必要があるのか理解できない。

つまり、私が理解する限り、最良の選択肢は

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.hour!=TradeHour) return(false);
   return(true);
   }
この場合、現在の サーバーの時刻(時計のみ)が設定された時刻と等しくない場合はfalseを、そうでない場合はtrueを返す。
 
Interesting:

現時点では、これらのオプションは同一です。

実は、なぜ値を割り当てる必要があるのか、理解できていないのです。

これを書くために

void OnTick()

{...

//-----------------------------------------------------------------------------------------+

//Openへの切り替えのベース

MqlRates rt[1]です。

if(CopyRates(Symbol(),MyTframe,0,1,rt)<0)を返す。

if(rt[0].tick_volume>1) return;

if(!PositionSelect(_Symbol) && (timeOntrade(4) || ((timeOntrade(15) || timeOntrade(16))&& timeOntrade2(0))))Open();//ポジションオープンへ

timeOntrade.min =0;

この文脈では明らかに不要です


   timeOntrade.min = 0;
   timeOntrade.sec = 1;
 

alph:

これを入れること。

void OnTick()

このオプションを試してみてください。 そうでない場合は、あなたが何を得ようとしているのか理解できません...

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.hour!=TradeHour) return(false);
   return(true);
   }
 
Interesting:

このオプションを試してみてください。 そうでない場合は、あなたが何を得ようとしているのか理解できません...

はい、はい、で。

 bool timeOntrade2(int TradeMin)  
   {
   MqlDateTime timetrade2;
   TimeTradeServer(timetrade);
   if(timetrade.min!=TradeMin) return(false);
   return(true);
   }
 
alph:

はい、はい、で。

では、すでにそうです(念のため)。しかし、原則的には、あなたは私を正しく理解しました

 bool timeOntrade2(int TradeMin)  
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.min!=TradeMin) return(false);
   return(true);
   }
 
Interesting:

そうすると、(念のため)こんな感じです。しかし、原則的には、あなたは私を正しく理解しました

ありがとうございました。残りのコードは正しいですか?