初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 59

 
Vitalie Postolache:
引用元です、質が悪いです。

標準装備のExpert Advisorも相性が良い。また、デモ口座では、取引もうまくいきません。トレードが始まりません。そのはずなのですが。

 
Michail_David:

標準審査員で問題なし

標準のExpert AdvisorとあなたのExpert Advisorを比較し、違いを見つけて結論を導き出す。しかし、このエラーの文言は、あるTFからの値と他のTFからの値が一致しない場合、質の悪い引用であることを示しています。

もし、このコードが「建値のみ」で取引されるように書かれていれば、この問題は回避できるかもしれません。

追加さ れました。まさに建値で コードを作ろうとしているわけですが、なぜ全ティックでテストする必要があるのかが不明です...。
 
Vitalie Postolache:
規格と自分の規格を比較し、違いを見つけ、結論を出す。建値のみ」での取引を想定して書かれたコードであれば、このような不幸から逃れることができるのです。
標準的なものは、私と同じように終値も使用します。
 
Michail_David:
標準的なコードでは、私のように終値も使用します。

どのEAを標準とするのか?ターミナルの配信で「終値で」EAを見たことがない。

そして、オープンプライスによって、トレーディングコード全体をこのモードで動作させるか、全くしないかのどちらかにしなければなりません。コードの一部だけが新しいバーで 使用され、残りはすべてのティックで動作します。

 
Vitalie Postolache:

どのEAを標準とするのか?ターミナルの配信で「終値で」EAを見たことがない。

そして、オープンプライスによって、すべてのトレーディングコードをこのモードで動作させるか、まったく行わないかのどちらかにする必要があります。新しいバーで 使用されるのはコードの一部だけで、残りはすべてのティックで機能します。

MACDサンプルは、スタンダードと呼ばれるものです。新しいバーの 検索を最初に移動させた方が良いのでしょうか?
 
Michail_David:
標準的なMACDサンプルと呼ぶべきでしょう。新しいバーの 検索を最初に移した方が良いですか?

MACDサンプルのどこに「建値のみ」モードがあるのか、見当たらないのですが?新しいバーの検索をOnTick()の最初に移動させる方が良い。

そして、それは

static datetime New_Time=TimeCurrent();// Время текущего бара

は、関数の外側でグローバルに宣言したほうがよいでしょう。

あるいは、時間をかけて、フォーラムで新しいバーを検索する良い方法を検索してください。
 
Vitalie Postolache:

MACDサンプルのどこに「建値のみ」モードがあるのか、見当たらないのですが?新しいバーの検索をOnTick()の最初に移動させた方がよいでしょう。

И

static datetime New_Time=TimeCurrent();// Время текущего бара

の場合は、関数の外側でグローバルに宣言するのがよいでしょう。

標準のExpert Advisorによる「建値のみ」モードを誤解していたようです。申し訳ないことをしました。まだ理解し始めたばかりです。ヒントをありがとうございました。コード全体を見ることはできますか?また何かコメントがあるかもしれません。本当に新鮮な目が必要です。本当にありがたいことです。
 
Michail_David:
皆さん、ヒントです。Tester gives error:2017.02.08 18:24:43.751 TestGenerator: unmatched data error (low value 1.09860 at 2016.07.27 19:30 is not reach from lowest timeframe, low price 1.09880 mismatches.).
これはどういうことなのか、どうすれば直るのか。私は何か悪いことをしたのだろうか?
double Margin_Percent=AccountFreeMargin()*Percent/100; //Используемые средства для открытия ордеров
double Lots=Margin_Percent/MarketInfo(Symbol(),MODE_MARGINREQUIRED);//Определение общего количества лотов
double Lots_Volume=(MathFloor(Lots)+MarketInfo(Symbol(),MODE_LOTSTEP));
double MacdCurrent=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,1); //Параметры MACD основной линии текущего бара
double MacdPrevious1=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,2);//Параметры MACD основной линии предыдущего бара
double MacdPrevious2=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,3);//Параметры MACD основной линии со смещением на 2 бара
double StopLoss=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,0);//Параметры Трейлинг стоп по параметрам ParabolicSAR текущего бара
double Previous_StopLoss=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,1);//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
double CurrentPSAR=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,1);//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  
//------
  }
//-------------------------------------------------------------------------------------------------------
イベント生成関数以外でグローバルに変数計算が行われるのを見るのは初めてですが、コンパイラは悪びれもしないのでしょうか?くっそー、コンパイラが間違えてるんじゃねえよ。
 
Sergey Gritsay:
イベント生成関数以外でグローバルに変数計算が行われているのを見たのは初めてですが、コンパイラは文句も言わないのですか?
いいえ、すべてをありのままに受け入れているのです。
 
Michail_David:
いいえ、すべてをありのままに受け止めるのです。
OnTick()関数に、私がハイライトしたものをすべて入れてください。