MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 933

 
Yevhenii Levchenko:
EA取引で時間フィルタ(時間単位)を設定するには?以下のオプションは有効でしょうか。

YOU google(EAの時間制限など) - 22:00hrから04:00hrまで入札できるなど、特別な機能があるかもしれません。キムのフォントで:キムの便利なフォントだけを集めましたのでご覧ください。

こんな選択肢もあります。

extern int HourStart=2;
// время начала работы советника в часах по времени терминала - может быть от 0 до 23
extern int HourEnd=22;
// время окончания работы советника в часах по времени терминала
// пример - советник начинает работать в 2 часа 0 минут, заканчивает работу в 22, то есть в 22 часа и после советник не выставляет новых ордеров и ждет рабочего времени - 2 часа
extern bool Use_Time=false;

...

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  { 
   bool time_trade=false;
   if(Use_Time==false) {time_trade=true;}
   if(Use_Time==true && Hour()>=HourStart && Hour()<HourEnd) {time_trade=true;}

...
   
 
Roman Shiredchenko:

ググってみてください。例えば、22:00から04:00までの入札など、特別な機能があるかもしれません。キムのF.I.V. トピック:キムのF.I.V.で役に立つものだけ-見てみてください。

ここで、選択肢の一つを紹介します。

なんというクールなテーマ でしょう。ありがとうございました。


私がやったことはうまくいかないの?
 
Yevhenii Levchenko:

なんというクールなテーマ でしょう。ありがとうございました。


私がやったことはうまくいかないの?

ああ、どうだろう。用意して、使ってみて、何が正しいか考えてみてください。自転車はすべて発明されたものだ、とIMHO。

 
Yevhenii Levchenko:
EAの取引で時間フィルタ(時間単位)を設定するにはどうすればよいですか?以下のオプションで大丈夫でしょうか。

少し前に議論したトピックです。私の例はすべて動作し、私はそれを使用して、すべてがMT4https://www.mql5.com/ru/forum/317351 で動作します。


イエベニ・レフチェンコ

Symbol() と_Symbolの使い分けは?

次のコードは、現在のシンボルに対する注文の存在を確認するために正しく機能しますか?

いいえ、Symbol()はシンボル名を取得する古い方法です。MQL4 - MQL5互換のための最新ビルドでは、_Symbolが追加されています。

ゼロからコードを書く場合は_Symbolを使い、MQL5に移植する場合は編集の手間が減ります。

 
Igor Makanu:

少し前に議論したトピックです。私の例はすべて動作し、私はそれを使用して、すべてがMT4https://www.mql5.com/ru/forum/317351 で動作します。


いいえ、Symbol()はシンボル名を取得する古い方法です。MQL4 - MQL5互換のための最新ビルドでは、_Symbolが追加されています。

ゼロからコードを書く場合は_Symbolを使い、MQL5に移植する場合は編集の手間が減ります。

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

もちろん、コードは私が処方しようとしたものよりもずっと大きいのですが...。:)座ってみないとわからない...。
 
Igor Makanu:

少し前に議論したトピックです。私の例はすべて動作し、私はそれを使用して、すべてがMT4https://www.mql5.com/ru/forum/317351 で動作します。


いいえ、Symbol()はシンボル名を取得する古い方法です。MQL4 - MQL5互換のための最新ビルドでは、_Symbolが追加されています。

ゼロからコードを書く場合は_Symbolを使い、MQL5に移植する場合は編集の手間が減ります。

その差は歴然です。_Symbolは定義済み変数、Symbol()は関数です。

どちらもそこそこの仕事。すべてがまったく同じなのです。しかし、むかし、ある開発者(どの開発者かは忘れました)が、「関数を使うのが望ましい」と言ったことがありました。

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

Symbol()と_Symbolの違いは何ですか?

fxsaber, 2019.07.07 14:47

void Func( const string& ) {}

void OnStart()
{
  Func(Symbol()); // ERROR: 'Symbol' - parameter passed as reference, variable expected
  Func(_Symbol);  // OK   
}
 
Artyom Trishkin:

その差は歴然です。_Symbolは定義済み変数、Symbol()は関数です。

どちらも両立する。すべてがまったく同じなのです。しかし、少し前にある開発者(正確には誰かは覚えていませんが)が、関数を使うのが望ましいと言いました。

使い方は、ヘルプに目を通したが、開発者からの明確な推奨はないようだ

実際、いくつかのライブラリでは、開発者がクラスメソッドで Symbol()をオーバーライドしていますし、私も自分のクラスでカスタムTF用にSymbol()メソッドをオーバーライドしています.便利ならそのように使う、本の公理に悪意は感じない )))

SZZ:これは宗教だと思うのですが...。iClose()関数は使用しないでください。"偽物です!"(С)

そして、ここに新しい傾向がある_SymbolはSymbol()よりも悪い ...念のため速度を測定、全く違いはない、同じ仕事だ

#property strict
//+------------------------------------------------------------------+
#define    test(count_x10,msg,EX)        {uint mss=GetTickCount(); ulong count=(ulong)pow(10,count_x10);for(ulong i=0;i<count&&!_StopFlag;i++){EX;} \
                                printf("%s: loops=%i ms=%u",msg,count,GetTickCount()-mss);}

//+------------------------------------------------------------------+
void OnStart()
  {
   Print("test 1:"); srand(GetTickCount()); test(9,"_Symbol",string s=_Symbol+IntegerToString(rand()));
   Print("test 2:"); srand(GetTickCount()); test(9,"Symbol()",string s=Symbol()+IntegerToString(rand()));
   Print("test 3:"); srand(GetTickCount()); test(9,"_Symbol",string s=_Symbol+IntegerToString(rand()));
   Print("test 4:"); srand(GetTickCount()); test(9,"Symbol()",string s=Symbol()+IntegerToString(rand()));
   Print("test 5:"); srand(GetTickCount()); test(9,"_Symbol",string s=_Symbol+IntegerToString(rand()));
   Print("test 6:"); srand(GetTickCount()); test(9,"Symbol()",string s=Symbol()+IntegerToString(rand()));
  }
//+------------------------------------------------------------------+

2019.08.09 00:54:20.631 tst EURUSD,H1: Symbol(): loops=1000000000 ms=66203

2019.08.09 00:53:14.432 tst EURUSD,H1:テスト6:

2019.08.09 00:53:14.432 tst EURUSD,H1: _Symbol: loops=1000000000 ms=65515

2019.08.09 00:52:08.921 tst EURUSD,H1:テスト5:

2019.08.09 00:52:08.921 tst EURUSD,H1: Symbol(): loops=1000000000 ms=65610

2019.08.09 00:51:03.301 tst EURUSD,H1: test 4:

2019.08.09 00:51:03.301 tst EURUSD,H1: _Symbol: loops=1000000000 ms=65890

2019.08.09 00:49:57.418 tst EURUSD,H1:テスト3:

2019.08.09 00:49:57.418 tst EURUSD,H1: Symbol(): loops=1000000000 ms=65563

2019.08.09 00:48:51.850 tst EURUSD,H1:テスト2:

2019.08.09 00:48:51.850 tst EURUSD,H1: _Symbol: loops=1000000000 ms=65750

2019.08.09 00:47:46.105 tst EURUSD,H1: test 1:

 
Igor Makanu:

使いやすい方を使えばいいと思う。 リファレンスに目を通したが、開発者からの明確な推奨はない

実際には、開発者がクラスメソッドで Symbol()をオーバーライドするライブラリもあり、私もMQL5でカスタムTFのSymbol()メソッドをオーバーライドしました・・・。便利ならそのように使う、本の公理に悪意は感じない )))

SZZ:これは宗教だと思うのですが...。iClose()関数は使用しないでください。"偽物です!"(С)

そして、ここに新しい傾向がある_SymbolはSymbol()よりも悪い ...念のため速度を測定、全く違いはない、同じ仕事だ

2019.08.09 00:54:20.631 tst EURUSD,H1: Symbol(): loops=1000000000 ms=66203

2019.08.09 00:53:14.432 tst EURUSD,H1:テスト6:

2019.08.09 00:53:14.432 tst EURUSD,H1: _Symbol: loops=1000000000 ms=65515

2019.08.09 00:52:08.921 tst EURUSD,H1:テスト5:

2019.08.09 00:52:08.921 tst EURUSD,H1: Symbol(): loops=1000000000 ms=65610

2019.08.09 00:51:03.301 tst EURUSD,H1: test 4:

2019.08.09 00:51:03.301 tst EURUSD,H1: _Symbol: loops=1000000000 ms=65890

2019.08.09 00:49:57.418 tst EURUSD,H1:テスト3:

2019.08.09 00:49:57.418 tst EURUSD,H1: Symbol(): loops=1000000000 ms=65563

2019.08.09 00:48:51.850 tst EURUSD,H1:テスト2:

2019.08.09 00:48:51.850 tst EURUSD,H1: _Symbol: loops=1000000000 ms=65750

2019.08.09 00:47:46.105 tst EURUSD,H1: test 1:

買ったものは売れるということわざがあるように。その推奨は、ドキュメントにはなく、フォーラムでの口コミからでした。

 
Igor Makanu:

最後の行にスラッシュがないのはなぜですか?また、マクロから値を返すことは可能ですか?

#define  FOR3(a,b,c,loop) for(int i=0; i<a; i++) \
for(int j=0; j<b; j++) \
for(int k=0; k<c; k++) \
{loop;}