良い記事をありがとう。でも、批判せずにはいられない。今日はそんな気分なのだ。
この記事は、コーディングというより、計算式や計算の最適化に特別な注意を払っている。しかし、初心者のプログラマーや、最近さまざまなループ演算子を使う可能性に注目し始めた人たちには、より役に立つと思う。次回の記事にはそれを反映させたいと思っている。結局のところ、MQL5には少なくとも3つのループ演算子がある。そしてそのどれを使ってもインジケーターを構築することができる。
有用な情報を一度にまとめて、
そして最後にi++ループ
標準的な4つのMQ平均の背後にあるコードを示す初心者向けの良い記事です。
また、単純な最適化の重要性と、ティックの 99% がバーが変わる間に発生するため、その影響についても説明する必要があります。 各バーが変わる間の計算を最小化することで、少し複雑になりますが、はるかに高い効率が得られます。 したがって、バーが変わるときに基本値を一度計算し、その値を保存することで、計算時間が大幅に短縮されます:
次のように考える。
double sm=0;
for(int bar=0;bar<N;bar++) sum+=Close[CurrentBar-bar];
SMA=sum/N;
対
static double partialsum;
double sum=0;
バーの変化{について
partialsum=0;
for(int bar=0;bar<N-1;bar++) partialsum+=Close[CurrentBar-bar];
partialsum/=(N-1);
}
SMA =partialsum+Close[CurrentBar]/N;
この最適化により、各バーでsum+=Close[EndingBar-bar]の計算が約90,000回節約されます。 チャートに1,000本のバーが含まれる場合、90,000,000回以上の不要な計算が 節約されることになります。 最近のCPUでは、この例で節約されることは些細なことであり、おそらく気づきません。
手作業による最適化の重要性は、より良いプログラミング技術を開発することであり、それが将来のプロジェクトで 自然に身につくようになることです。
しかし、OnCalculate()関数を使用した後、なぜOrderSend()トランザクション関数を使用できなくなったのかが不明です。著者がこの問題をどのように解決したのか分かりません:
#property copyright "Copyright 2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include <Indicators\Trend.mqh> CiMA ma; //+------------------------------------------------------------------+ //| スクリプト番組スタート機能  スクリプト番組開始関数 //+------------------------------------------------------------------+ int OnInit(){ ma.DeleteFromChart(ChartID(), 0); ma.Create(_Symbol, PERIOD_CURRENT, 14, 0, MODE_SMA, PRICE_CLOSE); ma.AddToChart(PERIOD_CURRENT, 0); return INIT_SUCCEEDED; } void OnTick(){ ma.Refresh(); double curMA = ma.Main(0); //Print("Current MA value:", maValue); }
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事「MQL5での移動平均をゼロから作成する:単純明快」はパブリッシュされました:
クライアント端末の標準の移動平均インジケーターの設定で利用できる主な移動平均の計算原理を確認しました。この記事で紹介した計算方法は、計算の最適化を施したインジケーターにも応用でき(最適化例も併せて紹介しています)、また提示したコードは連続データの平均値を独立して計算するプログラムにも活用可能です。
上図は、計算期間が同じ(10)、異なる種類の移動平均の違いを示しています。
赤:SMA、緑:EMA、金色:SMMA、青:LWMA
平滑移動平均(SMMA)は小さな価格変動の影響を受けにくく、価格の全体的なトレンドをより明確に示しています。
一方、指数移動平均(EMA)や線形加重移動平均(LWMA)は、計算で現在のデータに大きな重みを置くため、市場の変動に対してより敏感に反応します。
作者: Artyom Trishkin