if (Buys==true )
{
int count_buy_stops=0; int count_pos_buy=0;
CalOrders_Buy(count_buy_stops); CalPosition_Buy(count_pos_buy);
if(count_buy_stops==0 && count_pos_buy==0) && isNewBar())
{
BuyStop();
}
}
isNewBar() 関数自体は、examplesやcode.baseの記事で 紹介されています。
bool isNewBar()
{
//--- в статической переменной будем помнить время открытия последнего бараstaticdatetime last_time=0;
//--- текущее времяdatetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
if(last_time==0)//--- если это первый вызов функции
{
last_time=lastbar_time; //--- установим время и выйдем return(false);
}
if(last_time!=lastbar_time)//--- если время отличается
{
last_time=lastbar_time; //--- запомним время и вернем truereturn(true);
}
//--- дошли до этого места - значит бар не новый, вернем falsereturn(false);
}
しかし、この条件をOHLC M1と同様にプログラムする方法、例、推奨事項は見つかっていませんし、全く不可能なのでしょうか?
今のところ、同じような設定で以下のようなダイバージェンスが得られました。
"OHLC M1 ; 8年 ; 1681回取引。(当初はこの方法を使っていました)
「始値" ; 8年 ; 1655回取引。
"オールティック "8年、1676回取引。
このアルゴリズムはロバスト性が高いようで、各手法の結果を個別に改善することもできるかもしれませんね。
しかし、それでは汎用性が失われ、冗長に見えてしまいます。
つまり、例として1.16000にTPの買いポジションを設定している場合、「すべてのティック」がこの価格程度で決済されることになります。OHLCは1.16000より上の価格で決済され、これはかなり大きな差となるため、OHLCの方が常に良い結果を示すでしょう。オープニング 価格で」でも同じ話。
簡単に説明すると、例として1.16000でTPの買いポジションを設定した場合、「すべてのティック」はほぼこの価格で決済されることになります。OHLCはこの1.16000より上にあった価格でクローズし、かなり大きな差になる可能性があるので、常にOHLCが良い結果を示すでしょう。オープニング 価格で」でも同じ話。
ナウリス ありがとうございます。方法によって結果が異なる理由がわかった(推測できた)。しかし、私が理解したいのは、このことです。
テスターで「OHLC M1」方式をシミュレートした場合、同じ方式をExpert Advisorでプログラム的に繰り返すにはどうしたらよいのでしょう。
テスターで何とか再現...。
ナウリス ありがとうございます。方法によって結果が異なる理由がわかった(推測できた)。しかし、私が理解したいのは、このことです。
テスターで「OHLC M1」方式をシミュレートした場合、同じ方式をExpert Advisorでプログラム的に繰り返すにはどうしたらよいのでしょう。
テスターでなんとなく再現してみたが...。
私を信じて、あなたはそのような精度を必要としない、結果を最適化し、すべてのティックでそれを実行する、最良の選択肢です...
3~4pipsの差でなければ、2pipsの差で引けても大差ないのでは...。
Expert Advisorで何かを再生しても、時間は早くならないし、逆に遅くなるし...。
私を信じて、あなたはそのような精度を必要としない、結果を最適化し、すべてのティックでそれを実行する、最良の選択肢です...
3~4pipsも離れていないのであれば、2pips多くても少なくてもクローズしても大差ないのですが...。
Expert Advisorで何かを再生しても、時間は早くならないし、逆に遅くなるし...。
ありがとうございます。もし、誰も"OHLC M1 " メソッドを実装する方法を続けないのであれば、私はただあなたのアドバイスを使用することを宣告されるでしょう))) 。
ありがとうございます。もし、誰も"OHLC M1 " の方法を継続しないなら、私はあなたのアドバイスを使用するように非難されます))))
あなたは特に素晴らしいアイデアを考えていない場合は、違いはダニの方向にあり、実際の取引では、ダニは、オープン、ボトム、トップ、クローズ、ろうそくが大きい場合、あなたは底で買って、クローズによって利益を得ることができる、シミュレーションではろうそくがオープン、トップ、ボトム、クローズとして形成されているとしましょう、オープンおよびトップはクローズに一致し、そのようなキャンドルで買いが、利益ではない、と市場が下がっている場合、ここでは損失命令をぶら下げました...。
... だからこその乖離...
ありがとうございます。OHLC M1」 メソッドの実装方法について誰も続かないのであれば、私はあなたのアドバイスを受けて非難するのみです)))
ありがとうございます。OHLC M1」 メソッドの実装方法について誰も続かないのであれば、私はあなたのアドバイスを受けて非難するのみです)))
Expert AdvisorのOpen/Closeは価格レベルではなく、Openで行います。開閉シグナルがあり、次の1Mローソク足を待って開閉する。
メソッドが物語っています。EAでは、現在のバーに含まれるすべての分バーのOHLC価格のみを使用します。
Artyom 試してみました。注文の開始と変更のすべての条件で、私はブール関数isNewBar()を介して「新しいバーの誕生時」の条件を入れています。
このように
isNewBar() 関数自体は、examplesやcode.baseの記事で 紹介されています。
動作して注文を入れ、新しいバーでだけ修正するようですが、なぜか矛盾があります。
isNewBar() 関数 なしで適用したM1の OHLCとisNewBar() 関数ありの「全ティック」の 間に不一致があるのですが、どうしたらいいですか?
isNewBar() を「すべてのティック」に適用すれば、 現在の価格でのOHLCと同じ 結果が得られると予想したのですが、どうでしょうか?
そのため、私がコードを間違えたのか、それともOHLC モードを正しく理解しておらず、不可能 だと予想しているのか、理解できていません。
どこを掘ればいいのかわからない。
アルチョム 難しいことでなければ、もっと教えてください。
注文は新しいバーで設定・変更できますが、SLとTPは(テスターでは)とにかく古いバーの中で動作するのでしょうか?