MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 794

 
Igor Makanu:

これは、インジケータで行う例です。Expert Advisorについての質問でした。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MQL4に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。

ノースウエスト 2019.03.28 03:54

皆さん、ごきげんよう。

2時間ロスしたが、何も見つかっていない。

mq4で、EAでどのように したら、正しく

組み込み関数を使って、あるインジケータの上に別のインジケータを構築したいのですが、どうすればいいですか?

と表示され、そのままサブウインドウのテストに表示されるはずです。

例えば、RSIのデータでMAとか?


しかし、一般的には、ほぼ正解です。iMAOnArrayのために配列を埋めるよりも、インジケータを書いてそこから値を取る方が簡単です。しかし、なぜ2つのループがあるのでしょうか?

 
Alexey Viktorov:

しかし、なぜ2サイクルなのか。

最初のインジケータの実行やヒストリカルデータのロードの際に確認しないこと

ifを追加して条件を満たした後にループ演算子を使うよりも、while/forで条件チェックを行った方がコンパクトで効率的な場合があります。

iMAOnArray()の計算コードを、配列にRSIデータを充填するループに「貼り付ける」と、rsiBuffer[]配列のまだ充填されていない要素の計算が不正になります。

注:私は例では、配列のすべての要素(合計= 0)の計算iMAOnArray()を使用しました。 私は数ヶ月前にこの質問を勉強しましたが、残念ながら、正しくiMAOnArray()とその中のパラメータhttps://docs.mql4.com/ru/indicators/imaonarray の使用方法に関する特定の情報は存在しない。

int total, // 要素の数


iMAOnArray() トピック https://www.mql5.com/ru/forum/303372/page2#comment_10617854




アレクセイ・ヴィクトロフ

これは、インジケータで行う例です。Expert Advisorについての質問でした。

本当にこの質問だったのでしょうか?

ノースウエスト

テスト中のサブウィンドウで確認することができます。

)))))

iMAOnArray - Технические индикаторы - Справочник MQL4
iMAOnArray - Технические индикаторы - Справочник MQL4
  • docs.mql4.com
В отличие от iMA(...), функция iMAOnArray не выбирает данные на основе названия инструмента, таймфрейма и используемой цены - ценовые данные должны быть подготовлены заранее...
 
Igor Makanu:

最初のインジケータの実行やヒストリカルデータのロードの際に確認しないこと

条件を満たした後にループ演算子を使うよりも、while/forコードで条件チェックを使った方がコンパクトで効率的な場合がある


本当に聞きたいことはこれだけですか?

)))))

))) ちょっと不注意がバレたのは今に始まったことではないのですが。インジケーターの最後までたどり着けなかった。

しかし、追加の場合について

if(prev_calculated==0) limit=rates_total-1; else limit=rates_total-prev_calculated+1;

と書くことができます。

limit = prev_calculated == 0 ? rates_total-1 : rates_total-prev_calculated+1;
このような記録は使用しないのですか?
 

Igor Makanu:

...数ヶ月前にこの質問を勉強しましたが、残念ながらiMAOnArray()を正しく使う方法とそのパラメータhttps://docs.mql4.com/ru/indicators/imaonarray についての具体的な情報はありません。

int total, // 要素の数

単純な平均を必要としない場合、要素数は重要です。どのタイプのMAが、その前の値を計算に使っているのか、ぱっと見では覚えられません。この場合、要素の数が結果に影響します。だいたい、mql5では半刻で解決してしまうので、もう興味はない。

 
Alexey Viktorov:
そのようなエントリーは使用しないのですか?

ゼロから書くときは、音声解析に適した構文で書き、if()条件では、すべてを言い表しやすくします )))。

しかし、通常、私は、既製の例(コード)の私のライブラリでそれを使用することができます。

SZS: C#のプログラムの生産性を上げるための情報をどこかで見たことがあるのですが、確かにforeach() とthis演算子を使わないようにすることが推奨されていましたね?if() 演算子の方が生産性が高いような気がしますが、重要ではないので好きに使っています。


アレクセイ・ヴィクトロフ

単純な平均を必要としない場合、要素数は重要です。どのAIが前回値を計算に使っているのか、ぱっと見で覚えられない。この場合、要素の数が結果に影響します。だいたい、mql5では半刻で解決してしまうので、興味がないのです。

それは深い問題だ、私はこのフォーラムと英語のフォーラムの両方を検索し、使用の議論と例があった、合計= 0または合計= 0は計算のiMAOnArray()の違いを作ることができます - Igor(上記のリンク)との議論で、私はパラメータ合計= 0でiMAOnArray()だけを使うことにしました - 古い議論では同じソリューションであった。

 
Igor Makanu:

このフォーラムと英語のフォーラムの両方を検索すると、議論と使用例がありました、パラメータtotal = 0またはtotal !=0からiMAOnArray()の計算は異なることができます - Igorとの議論(上記のリンク)で、私はパラメータtotal = 0でiMAOnArray()のみ使うことにしました - 古い議論では同じソリューションが使用されていました。

そうなんです。配列の全要素を 取り出し、エラーなくEMAまで取得しようとしなければ、難しいでしょう。

指数移動平均(EMA)

指数平滑移動平均は、直前の移動平均値に現在の終値の一定部分を加算して求めます。指数平滑移動平均では、直近の終値がより重視されます。P%指数移動平均は、次のような形になります。

EMA = (CLOSE (i) * P) + (EMA (i - 1) * (100 - P))

どこで

CLOSE (i)-当四半期の終値。
EMA (i - 1) -直前の期間の移動平均の値 です。
P - 価格使用シェア。

その結果、30要素の配列から周期30のEMAを読み出すと、EMAではなく、単純なMAが得られることになります。

 
Alexey Viktorov:

そうですね。配列の全要素を 取り出し、エラーなくEMAまで取得しようとしなければ、難しいでしょう。

したがって、30個の要素からなる配列から期間30のEMAを計算すると、EMAではなく単純なMAが得られます。

iMAOnArray() をチェックしたところ、結果は予測不可能で、2 * MA期間を使用できる場合もあれば、もっと必要な場合も あります。total = 0の場合、計算に一度だけ使用できますが、あまり頻繁に使用すると、ターミナルがハングアップ します。

iMAOnArray()はめったに使いません

 
Maxim Kuznetsov:

if (response == 0) {

   Print("Что-то пошло не так");

  // потом уже добавите диагностику из WinAPI

   return false;

}

で、通常のリターン前に、その結果もプリントします。

Print(" всё хорошо, результат:" toStr);

return toStr;

で、1分間に1回など、タイマーですべてのコードを実行します。禁止されないことが確実で、異なるが予測可能な時間を与えるリソースで練習し、確認することができます。

----
本当に問題があるのなら、テレパシーで。
初期化が間違っているか(InternetOpenWでWinSOCKが初期化されるべきかどうかは覚えていない)。
または、何らかのリソースが解放されていない。

を追加しました。Printに何も表示されない!!!

 

グラフに表示せず、データウィンドウに 変数を出力させるには?

なぜかドキュメントに見当たらないのですが。

 
psyman:

グラフに表示せず、データウィンドウに 変数を出力させるには?

なぜかドキュメントに見当たらないのですが。

表示色をclrNONEに設定する。