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

 
alph:

価格が移動平均の下にあり、モメンタムが平均の下に ある場合、売りの取引を開始 します。買い取引では、その逆です。

条件を満たさない場合は、何もする必要がないことが判明しました。もしそうなら、関数の最後の行にreturn(false)と書いて、あなたの戦術を満たすかどうか一歩ずつ見ていってください。
 
Yedelkin:
では、条件を満たさない場合は何もしなくていいのですか?もしそうなら、関数の最後の行にreturn(false)と書いて、あなたの戦術を満たすかどうか、一歩ずつ確かめてください。
void OnTick()の中でしょうか?
 
alph:
void OnTick()の中でしょうか?

そろそろオンデレードのようです。

ただ、個人的には、遅かれ早かれ目的の形に変換される、返せない結果に戸惑っています。

私が困惑するのは、この点です。

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
 
alph:
これはvoid OnTick()の中なのでしょうか?

ここです。

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(false);
   }

最後の行にfalseを付けてみて、このやり方が自分の選んだ戦術と一致するかどうか確認してください。つまり、この変更を念頭に置いてExpert Advisorの作業を「スクロール」するのです。

 
Interesting:
どうやらtimeOntradeのことを言っていたようです。
timontradeで最後にちょうど偽は、所望の結果を与えることはありませんが、私のバリアントでは、それは本当にクロックで取引を開く、テストされます。私のバージョンのクロック付きコードは、このフォーラムのどこかで入手したもので、ねじ込むと動作します。timontrade 2経由でなんとかねじ込んだ分のみ。少なくともフルコードは3分の1くらいは短くなるはずなんですけどね。
 
alph:
timeOntradeで最後にちょうど偽は、所望の結果を与えることはありませんが、私のバリアントでは、時間によって取引を開くには、テストされた、本物です。
timeOntrade.hour= 5の場合はどうなりますか?
 
Interesting:
timeOntrade.hour= 5の場合はどうなりますか?

確かに取引は成立しないでしょう、なぜなら...。

//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();//

...指定した時間だけ開くように送信する

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
alph:
timontradeでは、まさに最後にfalseで、期待通りの結果が得られない...。
では、あなたのコードをご覧ください。if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) という条件は、今のままでは意味がないのです。なぜなら、どんな結果が出ても、あなたのbool timeOntrade()関数は常にtrueを返すからです。
 

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

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

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);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   return(true);
   }
 
Interesting:

ちなみに、このバリエーションでは、テスターの利益による結果は小さいのですが、比率は良いように思います。

今、時間軸のない大きなタイムフレームでテストしていますが、もしかしたらもっと良い結果になるかもしれません。