改善された同事ローソク足パターン認識指標に基づく取引戦略
はじめに
「同事線の例で示されているローソク足パターン認識の改善」稿ではメタバーの概念を扱いました。一言でいえば、メタバーとは、いくつかの連続するバーを条件付きで組み合わせて大きなバーにしたものです。これは、より長い時間枠のバーと似ていますが、メタバーのサイズは固定されておらず(指定された範囲内で「浮動」する)、バーの特定の開始時刻と終了時刻に拘束されないため、正確ではありません。したがって、メタバーを使用することで、トレーダーはローソク足分析のさまざまなパターンをより頻繁に検出できるようになります。
前回の記事では、メタバー上の「同事」ローソク足指標の作成と、その動作について説明しました。
では、このような指標を使った取引戦略を作ってみましょう。理論的には、メタバーではローソク足のパターンをより頻繁に検出できるため、従来のバーよりも多くの取引をおこなうことができます。これは利益を上げる絶好のチャンスです。
取引戦略の概念:ローソク足だけで十分か?
上記の記事から、メタバーを使った同事指標を取り上げます。残念ながら、この指標の読みに従って単純に取引を開始・終了することはできません。原因は指標でもメタバーでもありません。一般的に、ローソク足の同事パターンは、独立した売買シグナルとして使用するようには設計されていません。
これは、トレンド反転のシグナルとなる可能性があるからです。つまり、同事ローソク足の前に、対応する方向のトレンドが存在する必要があります。トレンドがなければ、同事ローソクに基づいて取引をおこなう意味はありません。
トレンドとメタバーを結びつける
この課題を解決するのは、一見するとそれほど難しいことではありません。実際、とても簡単です。同事ローソク足はメタバーですが、トレンドはメタバー上である必要はなく、通常のバー上でも構築できます。ローソク足の場合、バー内の最大価格乖離幅と最小価格乖離幅の比率が重要であり、(前回の記事で判明したように)メタバーの幅(つまり、その中に含まれる通常のバーの数)とそのタイムシフトに強く依存します。しかし、トレンドラインは極端な比率を示すものではなく、単にバー群の平均価格値を通過するだけです。平均値を算出するために、グループを分割する部分の大きさは特に重要ではありません。
一般的には、通常のバーでトレンドを構築します。
このローソク足の幅は(指標の設定で指定した)広い範囲で変化する可能性があるため、私たちが知る必要がある唯一のことは、トレンドの終了時間、つまり、指標によって検出された同事ローソク足がすでに始まるバーの番号です。ローソク足のメタバーを構成するバーは、トレンドの一部とみなされるべきではありません。同事ローソク足はその転換点となる可能性があります。つまり、もはや古いトレンドではないが、まだ新しいトレンドでもありません。あるいは、見方によっては古いトレンドでもあり、新しいトレンドでもあります。一般的には、終値が始値に近いことから、フラットとみなすこともできます。
したがって、トレンドの統計的特性の誤差を避けるため、トレンドが形成されたバーのグループに、ローソク足が同事のメタバーを含めません。
トレンドを計算する際に同事ローソク足がいつ始まるかを知る最も簡単な方法は、このローソク足をプロットするのと同じ指標でトレンドを計算することです。言い換えれば、前回の指標を修正し、その前に対応するトレンドを持つ同事ローソク足のみを表示するフィルターを含めるようにします。また、このような設定をした指標は直接取引に適するようになり、追加分析なしでシグナルを使った取引が可能になります。
現在、指標は「Candle_」で始まる名前の入力を備えています。これがローソク足のパラメータです。次に、様々なトレンド入力を指標コードに追加する必要があります。少なくとも、以下の2つのパラメータが必要です。
- 最小トレンド幅(バーの数)
input int Trend_WidthMin = 10;
- トレンドの最大幅(バーの数)
input int Trend_WidthMax = 50;
同事ローソク足が検出されると、指標はこの2つのパラメータで指定された範囲内で、その前のバー群を分析します。また、バーが適切なトレンドを持っているかどうかも評価します。
その他、設定すべきトレンド入力については後述します。その間に、小さいが技術的に重要なニュアンスに注意を払いましょう。
現在、指標はチャート上にシグナルを表示するために、より多くの過去のバーを分析する必要があるため(ローソク足が構築されるメタバーの幅もトレンドの幅まで拡張されているため)、指標のコードを少し修正する必要があります。OnInit関数の中に、価格履歴の一番最初のバーを何本スキップするかを計算する行がありました。言い換えれば、これらのバーでは(過去のデータが不十分なため)指標の計算や描画ができません。
SkipBars = Candle_WidthMax;この文字列は次のようになるはずです。
SkipBars = Candle_WidthMax + Trend_WidthMax;
適切なトレンド算出方法
トレンドは様々なアルゴリズムを使って検出することができます。簡単なものもあれば、複雑なものもあります。同事ローソク足を使うには、単にトレンドを察知するだけでなく、その特徴を定義することが重要だと思います。これをチャートに表示してみましょう。
同事ローソク前のトレンドの例
上の図は、トレンドの2つの例を示しています。左側には、前のトレンド内の価格変動に匹敵するか、わずかに上回る高さを持つ同事ローソク足が表示されます。この同事ローソク足の内部には、重大な対立勢力の衝突をもたらす何らかの重要な出来事が本当にあったと考えることができます。ある力が(トレンドが形成される全期間において)かつてないほどの力で価格を押し上げましたが、別の力は、価格が頂点にとどまることを許さず、価格をローソク足を開いた当初の水準に戻しました。言い換えれば、このローソク足には、トレンドの伸びに抵抗する力が働いたまさにその瞬間を見ることができます。従って、トレンドは出尽くし、反転する準備が整ったと考えることができます。
右側では、同事ローソクの高さは、トレンドの中で起こった動きに比べて特別なものではないことがわかります。つまり、このローソク足の内部で価格を反転させる力は、トレンド全体を反転させるのに十分とは言い難くなります。このような同事ローソク足で取引を開始することは、不当なリスクとなる可能性があります。取引戦略に、この2つの状況をどうにか区別する機会を与えることができればいいでしょう。
これは、線形回帰法を用いてトレンドを決定することで可能です。この場合、単にトレンドを検出するだけでなく、トレンドチャネルの中央を通る線の方程式を定義します。
y = A + B * x
方程式の構成は次の通りです。
x - 横軸に沿ったチャート点の座標(この場合は棒グラフの番号)
y - 垂直(価格)軸に沿った座標これは、各バーの価格チャート上にポイントを作り、これらのポイントを通る直線を引くために、この線形回帰式によって計算された座標です。これはトレンドラインです。
B - トレンドラインの傾きを表す比率。この比率が高ければ高いほど、トレンドは急で強力になります。比率が正の場合、線は左から右へ増加し、上昇トレンドに対応します。比率が負の場合は下降トレンドに相当します。
Aはトレンドラインを希望のチャートの高さに配置するための補助係数に過ぎません。取引上の意味はありません。
線形回帰を計算するアルゴリズムは広く知られています。数理統計学の基礎の一部であり、取引だけでなく多くの応用分野で使用されています。アルゴリズム演算の結果、上記の係数AとBが算出されます。
指標のコードを簡単に説明すると、以下のようになります(指標の全コードは以下に添付します)。サイクル内では、測定されたトレンドに含まれるすべての小節について、さまざまな中間合計が累積されます。
double BarPrice = (open[CurBar] + close[CurBar] + high[CurBar] + low[CurBar])/4; X = TrendBarNum; Y = BarPrice; N = TrendBarNum; S1 += X; S2 += Y; S3 += X * Y; S4 += X * X;
トレンドバーのすべての合計が収集されると、回帰式の比率が表示されます。
B = (N * S3 - S1 * S2) / (N * S4 - S1 * S1); A = (S2 - B * S1) / N;
線形回帰式を計算したとき、比率Bを分析することによって、この棒グラフのグループにトレンドがあるかどうか、そしてそれがローソク足の方向と一致しているかどうかを調べることができます。
if ((CandleDir < 0)&&(B < 0)) continue; if ((CandleDir > 0)&&(B > 0)) continue;
また、トレンドが十分に強いかどうか、つまりどれだけ急勾配になっているかを評価することも有効でしょう。トレンドの傾きが小さすぎると、単なるノイズ、フラットエラーになりかねません。また、値動きが小さいと、取引手数料を賄うには収入が少なすぎます。そこで、指標コードに、許容されるトレンドの傾きの最小値を設定するパラメー タを追加してみましょう。単位は1分あたりのポイント数です。
input double Trend_PowerMin = 0.01;
コードでは、このパラメータは回帰式からの比率Bと同じ単位に変換され、比較されます。
if (MathAbs(B) < (Trend_PowerMin*_Point*PeriodSeconds()/60)) continue;
さて、トレンドを決定するために線形回帰を使うようになった最も重要なことに移りましょう。
回帰線がトレンドチャネルの中心を通るので、このチャネルの幅を計算することができます。トレンドチャネルの幅は、回帰線に対するバー価格の最大のスプレッドです。より正確には、上方乖離と下方乖離の最大値の合計です。
チャネルの幅を計算するには、トレンドのすべてのバーを調べ、各バーについて回帰値を計算し(以前に得られた線形回帰式から同じ「y」)、この値とバーの価格との差を計算し、これらの差のうち最大の値を累積する必要があります。
for (X=1; X<=TrendBarNum; X++) { int TmpCurBar=CandleStartBar+X; Y = A + B*X; DH=high[TmpCurBar]-Y; DL=low [TmpCurBar]-Y; if ((DH > maxDH)||(X==1)) maxDH=DH; if ((DL < minDL)||(X==1)) minDL=DL; }
このローソク足の動きがこの傾向を逆転させるのに十分強いかどうかを結論付けるために、チャネルのこの非常に幅と同事ローソク足の高さを比較することができます。これは、チャネル幅の最大許容比率を、発見されたローソク足の高さに対して設定します。
input double Trend_ChanelPowerMax = 1;
指標コードでは、以下のように考慮されています。
if ((maxDH-minDL) > Trend_ChanelPowerMax*CandleHeight) break;
完全な指標コードは以下に添付されています。
戦略の最終指標アルゴリズム
トレンドの存在を検出するコードができたので、それをフィルターとして接続してみましょう。そのため、方向、長さ、幅など、すべての面で適切なトレンドが存在する同事ローソク足だけを指標チャートに表示することができます。
トレンド特性の計算と許容性の評価に関連するすべてのコードを、指標コード内の別の関数に入れましょう。
bool DetectTrend( int CandleStartBar, int CandleDir, double CandleHeight, const double& open[], const double& high[], const double& low[], const double& close[] )
適切なトレンドがあるかどうかを示すロジック値を返します。この関数は、ローソク足が発見されるたびに呼び出されます。
if (DojiExists) { if (DetectTrend(CurBar, CandleDir, CandleHeight, open, high, low, close)) break; // there is a candle and a trend, there is no need to expand the metabar further else DojiExists=false; }
完全な指標コードは以下に添付されています。EAとの連動については、もう少し後で確認する予定です。
EAアルゴリズム
そこで、メタバー上の同事ローソク足を探す指標を改良し、 同じ指標でローソク足前のトレンドの有無を判断します。このインディケータは、ローソク足の先端と同方向のトレンドが同時に発生した場合にのみ、チャートに線を引くようになりました。それ以外の場合、指標は何も描画しません。
したがって、このような指標の読みは、すでに取引EAのための準備されたシグナルです。指標に線が表示されると取引が成立します。あとはいつ取引を成立させるかです。
この場合の指標のシグナルは、トレンドが反転する可能性の予測であり、その方向性を示すものであるため、指標が取引を開始したシグナルと反対のシグナルを示した時点で、既存の取引を決済する必要があります。理想的には、このシグナルが現れるということは、(前のシグナルに従って)トレンドの始まりで市場に参入した後、取引アドバイザーがトレンドの終わりで退場することを意味するからです。
ところで、このシグナルは単に取引を成立させるだけではありません。エントリにも指標のシグナルを使うので、新しい取引はすぐに反対方向に開かれます。
しかし、市場の価格がトレーダーにとって理想的な軌道を描くとは限らありません。トレンドの始まりと終わりは必ずしも明確ではありません。また、あるトレンドが終わってから次のトレンドが始まるまでに長い時間がかかることもあります。この時期は、上下の値動きが横ばいか短い期間となります。この指標は、そのような状況には一切反応しません。つまり、長い間、接近信号を受信することはありません。最初のトレンドはすでに出尽くし、戦略のために市場にいる意味はもはやありません。
どのような取引戦略にも終値条件を追加する最も簡単な方法は、すべての始値取引に利食いと損切りのレベルを設定することです。その値はEAの設定で設定できます。
また、EA設定にすべての指標パラメータを追加する必要があります。同事ローソク足の大きさの範囲、トレンドの大きさの範囲などです。EAが指標を起動し(不可視)、指標に設定を渡します。
取引EAの完全なコードは、記事の付録にあります。EAは非常にシンプルで典型的なものなので、記事でコードを説明する意味はありません。市場分析全体は指標によっておこなわれ、EAは既製のシグナルに基づいて取引を開始終了するだけです。
出来上がったEAの確認
歴史に関する大規模なテストをおこなう前に、すべてが正しく機能しているかどうかを確認しましょう。MetaTrader 5のストラテジーテスターでEAを短期間の履歴で実行し、チャートに表示される取引を調べてみましょう。
アドバイザーの行動が意図したアルゴリズムに対応していることがわかります。次は、正しい指標のシグナルを使って取引を開始した場合です。
指標が前の2つのバーのメタバー上に上向きの同事ローソク足と
ローソク足の前の上昇トレンドを表示し、EAが取引を開始した
その後、この取引は反対方向のシグナルで決済され、新たな取引が反対方向に開始されました。
指標は、前の3つのバーのメタバーで下向きの 同事ローソク足と
ローソクの前の下降トレンドを検出し、EAが取引を成立させ、反対側の取引を成立
以下は、指標からの逆シグナルが長期間なく、利食いによって取引を終了した場合です。
指標にはシグナルがありません。EAが開いた取引は、利益確定レベルに達した時点で決済されました。
取引戦略のバックテストの準備
出来上がった取引EAは、非常に柔軟な設定が可能です。私たちは、メタバーまたは従来の(単一の)バーに基づく同事ローソクを取引するように設定することができます。ローソク足前のトレンドパラメータは、ゼロ値に調整することもできます(これは、実際にはトレンドの存在が考慮されないことを意味します)。これらすべてが、EAの挙動に劇的な影響を与えます。これらの設定を条件付きで異なる取引戦略とみなすこともできます。最適化によって、これらのオプションのどれが最も効果的かを示します。
様々な取引資料では、1時間以下の時間枠で同事パターンを使用することを推奨しています。
テストにはEURUSD H4を使います。ランダム性や調整の影響を最小限に抑えた質の高い統計のためには、10年という長い区間を取ることになります。MetaTrader 5のストラテジーテスターでは、選択したセグメントを2つに分割することができます。前半はエキスパートアドバイザー(EA)のトレーニングに使用され、後半はトレーニング後の自動テスト(フォワードテスト)に使用されます。
メタバーとクラシックローソク足のどちらが効果的か、2回のテストセッション(とトレーニング)を行います。リカバリーファクター(受取利益のドローダウンに対する比率)で比較します。このパラメータが大きいほど、より収益性の高い戦略となります。
EAには最適化されたパラメータがたくさんあるので、最適化をスピードアップするために、網羅的な探索ではなく、遺伝的アルゴリズムによって実行します。
シングルバー(従来型)同事ローソク足の設定
時間枠H4ローソク足の幅は厳密にシングルバーです。残りの設定は最適化範囲が広いです。
EAパラメータ | スタート | 手順 | ストップ |
---|---|---|---|
Candle_WidthMin | 1 | ||
Candle_WidthMax | 1 | ||
Candle_HeightPowerMin | 0.2 | 0.2 | 2 |
Candle_BodyPowerMax | 0.1 | 0.1 | 0.4 |
Candle_ShadowPowerMax | 0.1 | 0.1 | 0.4 |
Trend_WidthMin | 1 | 3 | 10 |
Trend_WidthMax | 1 | 4 | 40 |
Trend_PowerMin | 0 | 0.2 | 2 |
Trend_ChanelPowerMax | 0.5 | 0.2 | 2 |
Lots | 0.1 | ||
TakeProfit | 300 | 300 | 3000 |
StopLoss | 300 | 300 | 3000 |
これは6300万通り以上のパラメータの組み合わせを意味します。しかし、遺伝的最適化を使えば、数千回の列挙を減らし、数分以内に適合させることができます。
メタバー同事ローソク足の設定
メタバーは、無制限の範囲で可変幅を持つことができます。つまり、1つのEAは、すぐに異なる幅の膨大な数のローソク足で取引することができます。しかし、実験の正確さを期すため、シングルバーのローソク足をテストするときよりも範囲を大きく設定することはしません。H4に最も近い標準的な利用可能時間枠はH3とH6です。メタバーでこれらの値のギャップだけを捉えます。これを可能にする最も近い小さな時間枠はM30です。その上でEAを実行することで、以下のいずれかに相当する幅を持つすべてのメタバーで取引できるようになります。H3.5、H4、H4.5、H5、H5.5。古典的な同事ローソク足で取引できるのは、これらの時間枠のうち1つ(H4)のみです。メタバーがなければ、他で取引することはできません。メタバーのローソク足は、マジシャンが空の帽子から取り出すウサギのようなものです。しかし、既存のウサギとは異なり、メタバーは実際の追加的な値動きを捉えます(これは前回の記事で見た)。そして私たちは、こうした動きが実際の追加利益につながるかどうかを見極めようとしています。
他のすべてのEAの設定は、シングルバーのバリアントのテストとまったく同じです。M30時間枠はH4の8倍小さいので、バー単位で測定されるすべてのEA入植は8倍されなければなりません。
1本バーテストと異なるパラメータは太字で示した。
時間枠M30(H4とその周辺はメタバーを犠牲にしてシミュレートされている)。
EAパラメータ | スタート | 手順 | ストップ |
---|---|---|---|
Candle_WidthMin | 7 | ||
Candle_WidthMax | 11 | ||
Candle_HeightPowerMin | 0.2 | 0.2 | 2 |
Candle_BodyPowerMax | 0.1 | 0.1 | 0.4 |
Candle_ShadowPowerMax | 0.1 | 0.1 | 0.4 |
Trend_WidthMin | 8 | 24 | 80 |
Trend_WidthMax | 8 | 32 | 320 |
Trend_PowerMin | 0 | 0.2 | 2 |
Trend_ChanelPowerMax | 0.5 | 0.2 | 2 |
Lots | 0.1 | ||
TakeProfit | 300 | 300 | 3000 |
StopLoss | 300 | 300 | 3000 |
取引戦略を履歴でテストした結果
5年間の履歴に対してEAを最適化する間、戦略テスターは約5,000の設定を調べ、EAが各オプションでどのような結果を達成したかを示すグラフを作成しました。次のグラフは、シングルバーEAとメタバーEAのグラフを、垂直スケール(回収率)に従って並べたものです:
シングルバーEA(左)とメタバーEA(右)の全最適化結果
これらのグラフは、メタバーが概して良い結果をもたらしたことを示しています。
しかし、これはあくまでも予備的なものであり、非常に大雑把な結論にすぎありません。より詳細な分析のために、最適化結果を外部プログラム(Excelなど)にエクスポートしてみましょう。異なる設定でEAがどれだけの取引を行ったかを計算すると、スプレッドは以下のようになります。
ローソク足タイプ | 取引数 (チュートリアルの歴史に沿った1つのEAパスにつき)。 | ||
---|---|---|---|
安値 | 平均値 | 高値 | |
シングルバー | 0 | 54 | 1472 |
メタバー | 0 | 82 | 3796 |
このようなサンプルに基づくと、メタバーによって本当に多くの取引ができるようになったかどうかを確実に判断することしかできません。
ただし、サンプルには膨大な数の設定オプションが含まれており、その中で EA はほんの数回、または 1 回の取引しか行っていないため、収益性を評価するには時期尚早です。したがって、EAがどんなに効率的であるように見えても、この結果を信用することはできません。
統計的に信頼できる結論を出すためには、EAが多くの取引を行ったオプションだけをサンプルに残す必要があります。サンプルに次のような最小妥当フィルターを適用してみましょう。
- 取引回数 >= 120回(5年間毎月2回の取引)
その後、約5000の設定オプションのうち、シングルバーEAでは約600、メタバーEAでは約900(平均してより多くの取引をおこなうため)しか残りませんでした。これらをもとに1つのグラフを作成し、シングルバーEAとメタバーEAのトレーニング段階を比較してみましょう。
最小限の信頼できる最適化結果
このグラフから、(回帰直線からわかるように)平均して1本棒EAの方が、トレーニング期間全体を通してわずかに良い結果であったことがわかります。しかし、メタバーEAは、損失が大きくなる方向にも、収益が大きくなる方向にも、結果の広がりがありました。これは、メタバーでより多くの取引がおこわれたという事実によって正確に説明することができ、これは一種の増幅器として機能した:不採算EAは損失を倍増させ(彼らはより多くの不採算取引をおこなったため)、有益なものは利益を倍増させました。
したがって、最も収益性の高い結果を達成したのはメタバーEAでした。グラフを見ると、EAだけが一度以上、6以上のリカバリーファクターを達成できたことがわかります。
では、最適な設定をしたEAが今後5年間の履歴でどのような動きをするか、フォワードテストで見てみましょう。最後のグラフは、平均して(回帰線)トレーニングの成果が2の値に達したことを示しています。だから、この平均値以上のものはすべて良い値だとしましょう。上表のサンプルには追加のフィルターが適用されます。
- リカバリーファクター >= 2(5年間の履歴で、ドローダウンが50%の場合、これは年率20%に相当)
現在、サンプル数はシングルバーとメタバーEAの両方で約200値に減少しました。このサンプルのすべての設定について、フォワードテストで得られた結果を見つけ、それに基づいてグラフを作成します。
最適化で得られたベストセッティングのフォワードテスト
フォワードテストのグラフを見ると、メタバーEAが最高の結果を出しており、そのリーダーシップを維持していることがわかります。さらに、その平均的な結果もシングルバーのEAよりわずかに良くなっています。
このチャートから、すべてのEAが何回の取引をおこなったのでしょうか。計算してみよう:
ローソク足タイプ | 取引数 (EAのパス1本につき)フォワードヒストリーに沿って | ||
---|---|---|---|
安値 | 平均値 | 高値 | |
シングルバー | 121 | 231 | 543 |
メタバー | 122 | 352 | 1173 |
EAがフォワードテストでもトレーニング段階と同じようにアクティブであったことがわかる-最小取引回数は、先に適用したフィルター値とほぼ一致しています。ほとんどの取引はメタバーEAによっておこなわれました。
覚えているかもしれないが、これがこの記事の目的です。メタバーによってより多くの取引ができるようになるかどうか(より多くのローソク足を見つけることができるかどうかではなく)、それによって収入が増えるかどうかを判断することです。今、私たちは両方の質問に「はい」と答えることができます。
副次的な研究として、一般的に同事ローソクに対する取引戦略の有効性を評価することができます。フォワードテストグラフはすでに評価を下しています。このグラフ上のすべての戦略の結果は、トレーニング段階よりもはるかに悪くなります。そのため、実際に効果的な取引をおこなうには、より高度な取引システムを作成するか、最適な設定、時間枠、通貨ペア、履歴の範囲をより慎重に選択する必要があります。ボーナスとして、上のフォワードテストグラフで良い結果を示した最もユニークなEA設定をいくつか紹介しましょう。
時間枠 | H4 | M30 | ||
入力 | ||||
---|---|---|---|---|
Candle_WidthMin | 1 | 7 | ||
Candle_WidthMax | 1 | 11 | ||
Candle_HeightPowerMin | 0.4 | 2 | 1.8 | 1.6 |
Candle_BodyPowerMax | 0.2 | 0.1 | 0.2 | 0.2 |
Candle_ShadowPowerMax | 0.1 | 0.4 | 0.4 | 0.3 |
Trend_WidthMin | 1 | 80 | 80 | 80 |
Trend_WidthMax | 13 | 296 | 296 | 168 |
Trend_PowerMin | 1.6 | 0 | 0 | 0 |
Trend_ChanelPowerMax | 1.5 | 1.9 | 1.7 | 1.9 |
Lots | 0.1 | |||
TakeProfit | 900 | 300 | 300 | 300 |
StopLoss | 300 | 3000 | 1200 | 3000 |
結論
従来のローソク足(1本足)の代わりにメタバー上のローソク足を使用することで、取引戦略がより多くの取引をおこなうことができることを実験的に示すことができました。
メタバーは慎重に使うべきです。結局のところ、負ける戦略は、より多くの取引をおこなうことで、より不採算になり、一方、利益を上げる戦略は、より利益を上げることができます。
MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/12355
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索