どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 540

 
私のトレーディングシステムは、ヒストリカルデータの分析に基づいています。EAで直接シグナルを計算する関数を作りました。しかし、私が理解した限りでは、テスト 時にExpert Advisorは ビジュアルウィンドウのデータのみを使用します(アーカイブから履歴を読み込んだ標準ウィンドウよりもはるかに少ないバーが表示されます)。そして、シグナルを計算するためには、少なくとも数万本のヒストリーバーが必要です。この問題を解決する方法、つまり、テスト対象のEAが、テスト対象の期間がより短くても、履歴全体を使用できるようにする方法はありますか?MT4とMQL4を使っています
 
sannin:

もしよろしければ、お手伝いください

Expert Advisorにインジケータを使った取引を教えるために

BS_Living Now ver #1.mq4 https://www.mql5.com/ru/code/11014#50910

UP= iCustom(Symbol(),NULL,""Now",BQuant,0,0)。

DOW= iCustom(Symbol(),NULL,"Now",BQuant,1,0);


if(DOW){OrderSend(Symbol(), OP_SELL, Lot, Bid, Slip, 0, 0, "Forex-Robots.ru SELL", Magic, 0,Red);}{OrderSend(Symbol(), OP_SELL, Lot, Bid, Slip, 0, 0, "Forex-Robots.ru SELL", Magic, 0,Red)


if(UP ){OrderSend(Symbol(), OP_BUY, Lot, Ask, Slip, 0, 0, "Forex-Robots.ru BUY", Magic, 0,Blue);}{OrderSend(Symbol(), OP_BUY, Lot, Ask, Slip, 0, 0, "Forex-Robots.ru BUY", Magic, 0,Blue)


コメント

(

"ⅳプロフィット"。", UP,

"ⅳプロフィット"。", DOW

);

コメントで値を読もうとしたが、常に静的な値になっている。

インジケーター名は "BS_Living Now ver #1" とします。
 

はい、Nowという 名前のインジケータがフォルダにあります。

数値の変化を見るためにコメントで数値を入れたが、テスターでもライブでも静止しており、ゼロにはなっていない

 
sannin:

はい、Nowという 名前のインジケータがフォルダにあります。

数値がどのように変化するかを確認するためにコメントで数値を掲載しましたが、テスターでも実機でも静止しており、ゼロにはなっていません。


フラクタルに類似している場合、その値は履歴で検索されるはずですが、ゼロバーでは検索されません。

Z.I.:そうなんです、1小節目から計算を始めるので、0小節目で何かを探しても意味がないんです......。

 

EAに、例えば市場価格と最遠の注文価格との距離が1000pipsを超えたら全注文を決済する機能を追加する方法を教えてください。

 
evillive:

フラクタルと原理的に似ているのであれば、ゼロバーではなく、さらに歴史の中でその価値を探すのが理にかなっているのではないでしょうか。

Z.I.:そうなんです、1小節目から計算を始めるので、0小節目で何かを探しても意味がない...。

コードによるバー#2から、Extrim_Detect(s+1)。
 
AlexeyVik:

そして、それに応じて、条件

アレクセイありがとうございます。勧められたとおりに全部やりました。

extern int    Min_iMA_OpenDistance   = 60;
extern int    Max_iMA_OpenDistance   = 85; 

へんしんエントリーじょうけん

int GetSignal()
{
  int Signal = 0;

  double iMA_Signal = iMA(Symbol(), 0, iMA_Period, 0, MODE_SMMA, PRICE_CLOSE, 0);
  
  int Ma_Bid_Diff = MathAbs(iMA_Signal - Bid)/vPoint;
  
  if(Ma_Bid_Diff > Min_iMA_OpenDistance && Ma_Bid_Diff < Max_iMA_OpenDistance && Bid > iMA_Signal) Signal = -1;
  if(Ma_Bid_Diff > Min_iMA_OpenDistance && Ma_Bid_Diff < Max_iMA_OpenDistance && Bid < iMA_Signal) Signal = 1;
  
  return(Signal);
}

しかし、この変更を行った後、コンパイラは次の行で「swear」します。

iMA_OpenDistance  *= DcD; 

iMA_OpenDistance' - 未宣言識別子 - 識別子が宣言されていない。識別子に関するチュートリアルやヘルプを読みましたが、何もうまくいきません。どこが悪くて、どう直せばいいのか教えてください。

 
tatianati:

アレクセイありがとうございます。お勧めの通りにしてみました。

入力条件の変更

しかし、変更を加えた後、コンパイラは次の行で「悪態」をつきます。

iMA_OpenDistance' - 未宣言の識別子。識別子に関するチュートリアルやヘルプを読みましたが、何もうまくいきません。どこが悪くて、どう直せばいいのか教えてください。

どうやらテレパシーの力を使わなければならないようだ。

最初はiMA_OpenDistanceだけだったのが、Min_iMA_OpenDistanceとMax_iMA_OpenDistanceの2つの変数に分けられたので、iMA_OpenDistance変数は未宣言のままになっているのだそうです。

外部変数の値を変更する必要はありません。追加の変数を宣言して、それを使って好きなことをするのがよいでしょう。

私の理解では、変数vPointはPoint*10です。したがって、Ma_Bid_DiffはBidからMAまでの距離を4桁のポイント数で表したものである。で、DcDって何?私のテレパシー能力では足りません。しかし、いずれにしても、iMA_OpenDistance *= DcD;は不要のようです。それとも5桁のポイントに変換するのでしょうか?何のために?

 
AlexeyVik:

どうやらテレパシーを使うしかないようです。

最初はiMA_OpenDistanceだけだったのが、Min_iMA_OpenDistanceとMax_iMA_OpenDistanceの2つの変数に分けられたので、iMA_OpenDistanceという変数は未宣言のままになっているのだそうです。

外部変数の値を変更する必要はありません。追加の変数を宣言して、それを使って好きなことをするほうがいい。

私の理解では、vPoint 変数は Point*10 です。従って、Ma_Bid_DiffはBidからMAまでの距離を4桁のポイント数で表したものである。DcDとは?私のテレパシー能力では足りません。しかし、いずれにしても、iMA_OpenDistance *= DcD;は不要のようです。それとも5桁のポイントに変換するのでしょうか?何のために?



アレクセイ、君は本当にテレパスなのか、本当に5桁の翻訳なんだ。iMaではなく、Min_iMAとMax_iMaを把握できていなかったこと、わかりやすく教えていただきありがとうございました。いつもありがとうございます。

P.S. テレパシー講座が開講されたら、真っ先に申し込みます :-)

 

もしかしたら、そんなアドバイザーがいるのかもしれませんね。

1. 2種類の買い注文と売り注文を同時に開く。

2. 一方が利益確定すると......また2種類の買い注文と売り注文を開く、など。

もし、注文を失うことで何もする必要がないのであれば、とても簡単なことのように思えます。 多分、誰かがあなたのためにそれを書くことができるでしょう? 私はあなたにとても感謝しています。