mql4言語の特徴、微妙なニュアンスとテクニック - ページ 20

 
fxsaber:

それはないでしょう。TimeCurrentアルゴリズムは、非常に間接的な影響を受けます。バータイムなどを取ることができます。

あなたは、(バー履歴の)最後の日曜日の日付を何らかの方法で計算する必要があるだけです - 日曜日の前にバーがあり、日曜日の後にバーがあるようにします。その際はTimeLocalをご利用ください。

見積もり日が00:00に近い場合(ノンストップセッション)、結果は常にGMT+3、またはGMT+3+N(Nはセッション終了から深夜、または深夜から開始までの時間数)になります。引用元の時間帯と 何か関係があるのでしょうか?

 
Ivan Titov:

00:00前後に引用符がある場合(24時間セッション)、結果は常にGMT+3、またはGMT+3+N(Nはセッション終了から深夜までの時間数または深夜からオープンまでの時間数)となります。引用の時間帯と何か関係があるのでしょうか?

この話題は全く記憶にないので、答えようがない。矛盾があるなら、それを実証するところから始めたほうがいい。

 
fxsaber:

この話題は全く記憶にないので、答えようがない。矛盾があるなら、それを実証するところから始めたほうがいい。

ここで、BCS端末(シンボルED-9.19)のこの コードから、TimeCurrent()が2019.08.12 11:48:55のときにTimeServerGMT() 関数が2019.08.11 22:48:55という時刻を返していることがわかります。

 
Ivan Titov:

BCS端末(シンボルED-9.19)上のこの コードから、関数TimeServerGMT()は、TimeCurrent()が2019.08.12 11:48:55 のときに時間 2019.08.11 22:48:55 を返します。

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

mql4言語の特徴、微妙なニュアンスとコツ

fxsaber さん 2018.03.29 14:32

// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю

コード内のこのコメントに注意を払っていませんでした。

 
fxsaber:

コード内のこのコメントに注意を払っていませんでした。

FX以外のキャラクターが履歴を利用できる場合は、動作しないということですか?

また、テスターのAlpari-Demo EURUSD,H1でのFXの例もご紹介します。

2019.02.19 14:00:00の分 2019.02.19 11:00:00の分

2019.06.19 14:00-返却用 2019.06.19 11:00:00

ただし、冬はGMT+2、夏はGMT+3(EET)である必要があります。

 
Ivan Titov:

FX以外のキャラクターが履歴を利用できる場合は、動作しないということでしょうか?

覚えていないんです。しかし、それはおそらく理由があって書かれたものでしょう。


GMTオフセットは何のためにあるのかを意識することが大切です。この価値観は狭すぎるかもしれませんが、私は、異なる価格BPを互いに同期させることができるという、ただ一つのことに有用性を見出しています。

それ以外の理由はないと思います。したがって、これらの機能は、例えば、異なるブローカー(異なるGMTオフセット)のEURUSDを同期させることができなければなりません。 これが起こらない場合のみ、エラーが発生します。

 
fxsaber:

GMTオフセットは何のためにあるのかを理解することが重要です。この価値観は狭すぎるかもしれませんが、私はこの価値をただひとつ、さまざまな価格BPを互いに同期させることができることにあると考えます。

それ以外の理由はないと思います。したがって、これらの機能は、例えば、異なるブローカー(異なるGMTオフセット)のEURUSDを同期させることができなければなりません。これが起こらない場合のみ、エラーが発生します。

あるいは、いくつかのニュースBPを使った価格BP。では、仕掛けが効かないのでは?

 
Andrey Khatimlianskii:

あるいは、何らかのニュースのある価格BP。その時、仕掛けは失敗するのでしょうか?

まず、異なるソース上の2つの為替記号を同期させる。その後、一方が他方に対して偏っていることが明らかになる。このデータをもとに、残りのシンボル

これらのソースの

カレンダーとの同期も確認するとよいでしょう。冬でも夏でも、ニュースを取り上げよう。そして、それが一致するかどうかを見てください。

 
 

収益性の計算。

// Вычисляет профитность на истории не пересекающихся закрытых позиций.
bool GetSumGain( const double Risk, double &SumGain, double &MaxDD, double &RF, const string Symb, const int Magic = -1 )
{
  bool Res = true;
  const double Leverage = Risk * 100;  
      
  SumGain = 1;
  MaxDD = 0;
  RF = 1;

  double MaxGain = SumGain;
  double DDGain = SumGain;
    
  for (int i = OrdersHistoryTotal() - 1; (i >= 0) && (Res = (SumGain > 0)); i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL) &&
        (OrderSymbol() == Symb) && ((Magic == -1) || (OrderMagicNumber() == Magic)))        
    {
      SumGain *= 1 - Leverage * ((OrderType() << 1) - 1) * (1 - OrderOpenPrice() / OrderClosePrice());
      
      if (SumGain > MaxGain)
        MaxGain = SumGain;
      else if (1 - SumGain / MaxGain > MaxDD)
      {
        MaxDD = 1 - SumGain / MaxGain;
        
        DDGain = SumGain;
      }
    }
    
  RF = SumGain / DDGain;
      
  return(Res);
}


応用編

#property strict
#property  show_inputs

input int MagicNumber = 1; // Для какого мэджика вычислить профитность?

#define  D(A) DoubleToString(A, 2)

void OnStart()
{
  for (int i = 1; i <= 20; i++)
  {
    double SumGain, MaxDD, RF;    
    const double Risk = i * 0.1;
    
    if (GetSumGain(Risk, SumGain, MaxDD, RF, _Symbol, MagicNumber))   
      Print((string)MagicNumber + ": при риске " + D(Risk) +
                                  " увеличение было бы в " + D(SumGain) + " раза" +
                                  " с максимальной относительной просадкой по балансу " + D(MaxDD) + 
                                  ", фактор восстановления = " + D(RF));   
  }
       
}


結果

1: при риске 0.30 увеличение было бы в 2.16 раза с максимальной относительной просадкой по балансу 0.19, фактор восстановления = 2.01
1: при риске 0.20 увеличение было бы в 1.68 раза с максимальной относительной просадкой по балансу 0.13, фактор восстановления = 1.60
1: при риске 0.10 увеличение было бы в 1.30 раза с максимальной относительной просадкой по балансу 0.07, фактор восстановления = 1.27
理由: