SimpleDailyRangeBreakExpert(シンプルデイリーレンジブレイクエキスパート - ページ 11

 

この「3600」という数値が開始時刻に加算されることを自問自答しています。このため、このタイムシフトのことは私にはよくわかりません。もしかしたら、Igoradが助けてくれるかもしれません。

string TimeTrade = "00:00";

StartTime = StrToTime(TimeTrade) + TimeShift*3600;

if(CurTime() >= StartTime && CurTime() <= StartTime+3600)

{

if ( OrderOpenDate() < StrToTime(TimeToStr( StartTime,TIME_DATE)))

{

if( ScanTrades()>0 && !BuyInTrade && !SellInTrade) PendOrdDel();

Today = StrToTime(TimeToStr( StartTime,TIME_DATE));

if (Today != PrevDay )

{ DaysInTrade = DaysInTrade+1;

//Print(" Days=",DaysInTrade,"Today=",TimeToStr(Today,TIME_DATE),"PrevDay=", TimeToStr(PrevDay,TIME_DATE)) ;

}

if( TradePeriod > 0 )CloseOrdbyTime();

}

if(ScanTrades()<1 && Today != PrevDay )

{

spread= MarketInfo(Symbol(),MODE_SPREAD)*Point;

digit = MarketInfo(Symbol(),MODE_DIGITS);

Lotsi = MoneyManagement ( MM, Lots, MMRisk, LossMax);

//if (TrailingStop > 0) InitialStop=true;

ArrayCopyRates(rates_h1, Symbol(), PERIOD_H1);

open = rates_h1[0][1];

high=0; low=10000000;

for (i=24;i>=1;i--)

{

high = MathMax( high, rates_h1[3]);

low = MathMin( low , rates_h1[2]);

}

range =(high-low);

if ( Monday == 1 ) if(DayOfWeek()==1){BuyOrdOpen(); SellOrdOpen();}

if ( Tuesday == 1 ) if(DayOfWeek()==2){BuyOrdOpen(); SellOrdOpen();}

if ( Wednesday== 1 ) if(DayOfWeek()==3){BuyOrdOpen(); SellOrdOpen();}

if ( Thursday == 1 ) if(DayOfWeek()==4){BuyOrdOpen(); SellOrdOpen();}

if ( Friday == 1 ) if(DayOfWeek()==5){BuyOrdOpen(); SellOrdOpen();}

DaysInTrade = 0;

}

}
 

この3600という値は、時間を秒単位で換算しているようです。つまり、私の場合、ブローカー時間(GMT+0)の09:00に開始することを意味します。私の問題は別のところにあります。

 

こんにちはFlytox。

今、このEAを見てみます(通常、私は1日に1回、何か面白いものを投稿するために発言しています)。このEAをmetaEditorで開いて見てみます。

- もしかしたら、このEAはTracertファイルを使っているかもしれません。

- または、IBFXのEURUSDmではなくEURUSDとしてコード内に記載されているいくつかのペアがあるかもしれません。

とにかく、もしあなたが時間を9に設定したなら、EAは9ですべての利益が出ている注文を閉じ、新しい保留中の注文を(同様に9で)開くはずです。

私は今これを見ます。

 

同じ口座の他のEA(TPE, TS,) を閉じたら、SBSが9:00 (ブローカー時間) に最終的に保留注文を 出しました。私が削除した EA は異なるマジックナンバーを持つものでした。SBS123 と他の EA の間に何か既知の非互換性があるのでしょうか?

 

この1.23のコードの中を見ましたが、何の問題もありませんでした。このEAは、外部からのいかなるファイルも、いかなるインディケータも使用していません。従って、IBFXで動作するはずです。

私はこのEA/設定(デフォルト設定(この投稿を 参照))を使っています。これはGMT+3ブローカー用の設定です。そして、EURUSDとGBPUSDをTimeShift=9(LiteForexサーバーの時間は午前9時、現在はGMT+3)、USDJPYをTimeShift=10、USDCHFをTimeShift=7にしています。これはGMT+3用です。

IBFXがGMT+0であれば、以下のようになる可能性があります。

EURUSDとGBPUSDはTimeShift=6で、などなど。

 

NDさん、こんにちは。

他のEAが同じMT4(同じ口座)にある場合に起こりうるコンフリクトに関する私の以前の投稿をご覧いただけましたか?

 
Flytox:
同じ口座の他のEA(TPE, TS,) をクローズしたら、SBSが9時(ブローカータイム)にようやくペンディングオーダーを出しました。私が削除した EA は異なるマジックナンバーを持つものでした。SBS123 と他の EA の間に何か既知の非互換性があるのでしょうか?

互換性がない?いいえ。

2つのEAが注文を修正したり、注文のクローズ/オープンを分秒で同時に正確に行いたい場合、そのようなケースがあるかもしれません。しかし、それは通常のケースではありません。基本的に1つのメタトレーダーで3つ以上のEAを使用することは不可能です。メタトレーダーの1つのコピーで1または2、または3つのEAは良いかもしれませんが、それはまた、時間枠に関連しています:例えば、我々はD1の時間枠で動作するEAと一緒にM5でいくつかのスキャルパーを使用するかもしれませんなどなど。なぜなら、メタトレーダーはプログラムとして2つのことを同時に行うことができないからです:1つの注文を修正し、他の保留中の注文を分・秒単位で同時に正確に削除することができません。

このSBS_V1.23では、EAは保留中の注文を削除 し、それが完了するまで何度も新しい注文を開こうとします。SBS_V1.21も同じで、Metatraderが今保留注文を削除できない場合、1分後に削除しようとし、失敗したら1分後にもう一度削除しようとします。というわけで、非互換性はないと思います。

似たようなEAにSBS_v1.21とTPE EAがあります。

リスクが少ないのはSBS_v1.21、リスクが高いのはTPE、TPEよりリスクが高いのはSBS_v1.23です(単に開始預金サイズに関連するトレーダーへのリクスに従ってソートしています)。

すべてのEAに異なるマジックナンバーを使用すれば、競合は発生しません。

もちろん、1つのメタトレーダーで5つのEAをテストしている場合は、マジックナンバーが違ってもすべて同じになる可能性があります。1つのメタトレーダーで5つのEAを使うのはやりすぎです。

ファイル:
sbs121.zip  18 kb
tpe12.zip  17 kb
 

NDの回答ありがとうございました。

 

2つのバージョンで更新されたステートメントをご覧ください。

テスト期間開始時の明細は、こちらの投稿とエクセルファイルをご覧くださいhttps://www.mql5.com/en/forum/173383/page79

ファイル:
sbs121_1.zip  18 kb
sbs123.zip  50 kb
 

SBS 1.23バージョンに更新されたステートメントをご覧ください。

ファイル:
sbs23.zip  35 kb