ea n7s_ao_772012 - ページ 22

 
capellini писал(а)>>

続けてお聞きしたいのですが...。

EAが全く最適化されず、最初の結果さえ表示されないペアがあります。例えばUSDCHF。

何とつながっているのでしょうか?

さて、またまた登場です。

もう一度、26回目。
値動きの点で同一の商品はなく、類似の商品がある。
私たちは、いつどこでエントリーすればいいのか、チャート上で推測したり、思いついたりするようなことはしません。
だからこそ、結果が出ない、あるいは結果が悪いだけなら、レンジや最適化期間を変えるべきだし、SLやトレイリングレベルで勝負するのもいい。いくつかのシンボルでは3週間、あるいは2週間と期間を短くし、円クロスではSLを長くしてみました。一般的には、最適化の際に良い結果が得られるような最適な値を見つけるようにしています。その結果、遺伝子を用いた最適化において、1万回の実行で6~8千通りの有益な組み合わせが得られるパラメータが比較的正しいと判断しています。そうすると、大数の法則によれば、利益の確率は損失の確率の2倍になります。つまり、最適化は単なる形式的なもので、相当数の週があれば、利益は少なくとも2倍は損失を上回ります。現実的にはもっと多い。
そこで、どのようにテストしているのか、その結果はどうなのかを共有します。これは1週間ではなかなか難しい。
今週の収支は+690ドル、エクイティは...。エクイティは+750ドルちょっと、えっ、今日の午後は1000ドル近かったんですけど。ほぼ全てのポジションが終了しました。

 

エラーについてここではstartM1()関数の中にあります。そのため、テスターとデモの最初のトレードに差がありました。

//+------------------------------------------------------------------+
void startM1() {ticket = -1;RefreshRates();
if (total < HM_ALL) { BuSll (0,1,772012000); cmmnt();
if( !(DayOfWeek( ) == 1 && Hour( ) <2) && !(DayOfWeek( ) == 5 && Hour( ) >=18)))
{if (Trd_Up_X && VSR() > 0 && bu<HM_Up_X&&Flq) {。
if (MOS( 0, lots, sl, tp, WindowExpertName(), mn)==1) {Flq=false;}}// >=で置き換える

if (Trd_Dn_Y && VSR() < 0 && sll<HM_Dn_Y&&Flq) {。
if (MOS( 1, lots, sl, tp, WindowExpertName(), mn)==1) {Flq=false;}}// >=
}} に置き換えて
ください。
//+------------------------------------------------------------------+

そのため、1つのバーでもう1つのディールを開くことを禁止することはできませんでした。

新しいバージョンで修正する予定ですが、今は手動でやってください。

 

SHooter777ру: Советник понравился. После сегодняшнего слива демки оптимизацию делаю под 200$ (MiniForex). В принципе почти не отличается от 2000$. в оптимизационных сетах стоплоссы ставлю 50 с шагом 10, но все равно лучшие профиты со стоплоссами от 500 получаются. Уже в конечных сетах подбираю приемлемые в пределах 50-200 вручную. Влияет ли шаг и стоп в сетах на торговлю? (По наблюдениям не заметил). Еще вопрос: Можно ли оптимизировать под MicroForex (мин. лот 0,01)? Торгую на Pro Finance Group Inc платформа PFG FX Trader 4 (поддерживает MQL4). К сожалению на МикроФорексе нет демки.

EAを実際に試された方はいらっしゃいますか?デモと大差はないのでしょうか?


写真は今週のデモで SHooter777rの セットで取引して いるところです。取引残高が+800になったので、3つのペアで別のEAを使ってみることにしました。greed killed the greed - available funds dropped below 100 and naturally counter-position was not opened, so my account almost went broke.


皆さん、頑張ってトレードしてください。

ファイル:
 

EAをダウンロードして、他人の年を早く読むには、より専門的なmql言語の知識が必要で、自分でコードを書くには、知識と経験が最低限必要だと、改めて確信しました。作者は、コードを掲載する場合、その中にコメントを書き、コード全体をブロックに分割します。

これは面白いExpert Advisorになる、私は自分の経験から何かを推奨しているかもしれないが、生のコードを掘り下げることはしたくない。時間は貴重なものです。

 
.
ファイル:
 

なんか最新版だとうまくいかない。

オプティマイザーは、最初の段階では一度も取引を開始しないのです。

前のEAに最適化されたパラメータを持つテスターも同じように動作します。

 

ごめんなさい!30分かけて説明書を書きましたが、この不具合のある掲示板では文字がつぶれてしまうだけでなく、すべての文字が消えてしまいました。

ワードプレスで書いて、ここに貼り付けるつもりです。少し待ってください。

 

L9の 新バージョンには、細かいけれども必要だと思われる追加や変更がいくつも含まれています。

まず、FLG()関数が追加され、次の2つの役割を担っています。

//+------------------------------------------------------------------+

bool FLG (int cs )

{int AE = AccountEquity( ) ;

切替える

{case 0: if((DayOfWeek( ) == 5 && Hour( ) >=22) || (TrBlnc && (AE > UBlnc)))

return (true);else return (false);

case 1: string dttm = StringConcatenate (Year(),".",Month(),".",Day()));

datetime smtm=StrToTime(dttm);

bool Gp;

int shft = iBarShift(NULL,0,smtm);

double iOpn = iOpen (NULL,0,shft); double iCls = iClose (NULL,0,shft+1);

double dOC = MathAbs ((iOpn - iCls)/(Point*10));

if (dOC>20) Gp = true ; Print (Gp);

文字列 var1=TimeToStr(smtm,TIME_DATE|TIME_SECONDS);

if((TrBlnc && ((AE > UBlnc)||(AE < DBlnc)) || (!Flq))

|| ((DayOfWeek( ) == 1 && Hour( ) <2) || (DayOfWeek( ) == 5 && Hour( ) >=18)))

|| ((曜日( ) == 1 && 時刻( ) < 14) && Gp))

return (false);else return (true);

}

}

//+------------------------------------------------------------------+

a)FLG( 0 ) - 指定された条件でオープンポジションを 強制的にクローズさせる。

b)FLG( 1 ) - 指定された条件下でポジションを開くことを禁止する。

ここでは、任意の追加条件を挿入することができます としない "オーバーロード" void startM1() 関数と他の場所。

強制終了のために週の終わりを選択したif((DayOfWeek( ) == 5 &&Hour( ) >= 22)) とEquityをあるサイズまで増加させた。

で、一定値以上のGepでのオープンを禁止 if(dOC>20)Gp=true ; and if Equity increases to if((TrBlnc&& ((AE>UBlnc)))

または|(AE<DBlnc)|に減少する。)

 

そのため、テストや最適化を行う場合は、Equityがパラメータで設定した範囲内であることを確認します。

bool TrBlnc = true; int StrtBlnc = 3000; int DBlnc = 1500; int UBlnc = 4000;

or add to int init() line if (IsOptimization( ) )TrBlnc = false;//if ( IsTesting() ) TrBlnc = false;

 

以下は変更ではなく、より実質的な追加で、Delta_G12 現在、deltaAO ではなく、関数 G12() を指しています。

これは、そのパラメータによって extern int Indctr; Indctr = 1 の場合、前者のAOのどちらかを使用します。

または Indctr = 2 他の関数やインジケータ(私は私自身を使用して、 TSM 添付)、 もし int Indctr = 0 その後、信号は両方の指標から合計されます &&。

//+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffl

double G12() {switch(Indctr)〕。

{ケース0

iCusAO_1 = iAO(NULL, 240, 1); iCusAO_2 = iAO(NULL, 240, 2) です。

iCusTSM_1 = iCusTSM (24, 1); iCusTSM_2 = iCusTSM (24, 2)です。

Dlt_AO12 = iCusAO_1 -iCusAO_2; Dlt_TSM12 = iCusTSM_1-iCusTSM_2;

if ( Dlt_AO12>=0 && Dlt_TSM12 <=0) return (0);

if ( Dlt_AO12<=0 && Dlt_TSM12 >=0) return (0);

return(Dlt_AO12)です。

ケース1

iCusAO_1 = iAO(NULL, 240, 1); iCusAO_2 = iAO(NULL, 240, 2) です。

Dlt_AO12 = iCusAO_1 -iCusAO_2; return(Dlt_AO12);

の場合 2.

iCusTSM_1 = iCusTSM (24, 1); iCusTSM_2 = iCusTSM (24, 2)です。

Dlt_AO12 = iCusTSM_1-iCusTSM_2; return(Dlt_AO12);}}.

//+--------------------------------------------------------------------------------------+

double iCusTSM (int pr, int shft)

{ return (iCustom(NULL, 240, "iCus_N7S_TSM_forExp",pr,1,shft)); }.

//+--------------------------------------------------------------------------------------+