私たちのファンページに参加してください
- ビュー:
- 70
- 評価:
- パブリッシュ済み:
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
変数の定義
まず、ファイルの最初の行を変数と配列の名前に合わせて変更する必要がある。以下では、ローソク足のオープン、クローズ、ハイ、ローを持つMqlRates変数にg_ratesを使っている。g_ratesを変数名に置き換えてください。i」はダミーの変数名で、コード内の他の変数と干渉しない。変数「i」は、使用するローソク足の番号である。例:ローソク足3の終値を使うには、CANDLECLOSE(3)を使う。// Candle (define g_rates as: MqlRates g_rates[];) #define CANDLELOW(i) g_rates[i].low #define CANDLEHIGH(i) g_rates[i].high #define CANDLEOPEN(i) g_rates[i].open #define CANDLECLOSE(i) g_rates[i].close #define CANDLETIME(i) g_rates[i].time
また、以下のようにMqlTickを使ってASKとBIDの値を取得することもできますし、SymbolInfoDouble(_Symbol,SYMBOL_ASK)を呼び出すこともできます。返される値に違いはありません。
// Prices (define g_tick as: MqlTick g_tick;)) #define ASK g_tick.ask #define BID g_tick.bid
最後に、移動平均、atr、または必要な追加配列のための配列も定義されています。例: ローソク足 1 の平均トゥルー・レンジを使用するには、ATR(1) を使用します。
重要: 配列は AsSeries であると仮定します ( 例:ArraySetAsSeries(g_MA20_arr, true);)。これは後述の#define文において重要である。
// これらの配列は次のように定義する: double g_MA20_arr[]; // 移動平均とATR #define MOVAVG20(i) g_MA20_arr[i] #define MOVAVG40(i) g_MA40_arr[i] #define MOVAVG50(i) g_MA50_arr[i] #define MOVAVG200(i) g_MA200_arr[i] #define ATR(i) g_atr_arr[i]
上記のステートメントを定義したら、あとは何も変更する必要はありません。必要であれば、EAに合った#define文を追加することもできます。
キャンドル機能
ローソク足には、EAを開発する際に便利な機能があります。以下の定義名は、それらが何を表しているかを示しています。WICKはローソク足の一番上の影、TAILはローソク足の一番下の影を表します。例: 最後のローソク足のボディの真ん中の価格を取得するには、CANDLEBODYMIDDLE(1) を使用します。
// キャンドルの特徴 #define CANDLEBODYTOP(i) fmax(CANDLEOPEN(i),CANDLECLOSE(i)) #define CANDLEBODYBOT(i) fmin(CANDLEOPEN(i),CANDLECLOSE(i)) #define CANDLEMEDIAN(i) (0.5*(CANDLEHIGH(i)+CANDLELOW(i))) #define CANDLEWEIGHTED(i) (0.25*(CANDLEHIGH(i)+CANDLELOW(i)+2*CANDLECLOSE(i))) #define CANDLETYPICAL(i) (1./3.*(CANDLEHIGH(i)+CANDLELOW(i)+CANDLECLOSE(i))) #define CANDLEBODYMIDDLE(i) (0.5*(CANDLEBODYTOP(i)+CANDLEBODYBOT(i))) #define CANDLESIZE(i) (CANDLEHIGH(i)-CANDLELOW(i)) #define CANDLEBODYSIZE(i) fabs(CANDLECLOSE(i)-CANDLEOPEN(i)) #define CANDLEWICKSIZE(i) (CANDLEHIGH(i)-CANDLEBODYTOP(i)) #define CANDLETAILSIZE(i) (CANDLEBODYBOT(i)-CANDLELOW(i))
さらに、ATRを基準として2つのサイズを定義します。例:ローソク足4のATRに対する大きさを知りたい場合は、ATRCANDLESIZE(4)を使います。
#define ATRCANDLESIZE(i) (CANDLESIZE(i)/ATR(i)) #define ATRCANDLEBODYSIZE(i) (CANDLEBODYSIZE(i)/ATR(i))
また、上昇中のローソク足(close>open)は+1方向、下降中のローソク足は-1方向となる。 例: if(CANDLEDIRECTION(10)==1) Print("ローソク足10は上昇ローソク足です");
#define CANDLEDIRECTION(i) (CANDLECLOSE(i)>CANDLEOPEN(i)?1:(CANDLECLOSE(i)<CANDLEOPEN(i)?-1:0))
2種類の「ラン」が定義されています:UPとDOWNです。ランアップは、上昇ローソク足の終値-安値で定義され、それ以外は0です。ランダウンは、下降ローソク足の高値-終値で定義され、それ以外は0です。例として、ローソク足 3 のランアップを取得するには、CANDLERUNUP(3) を使用する。
#define CANDLERUNUP(i) ((CANDLECLOSE(i)>CANDLEOPEN(i))?(CANDLECLOSE(i)-CANDLELOW(i)):0) #define CANDLERUNDOWN(i) ((CANDLECLOSE(i)<CANDLEOPEN(i))?(CANDLEHIGH(i)-CANDLECLOSE(i)):0)
ローソク足の特徴 お問い合わせ
これらの定義は、1つまたは複数のキャンドルの動作を示すブール変数である。長さを短くするために、以前の#defineステートメントを使用しています。
isCANDLERIGHTDIR(i,dir)は、ローソク足(i)の方向がdirと等しければ真になり、そうでなければ偽になります;
フラクタルには、5本のローソクを使うものと、3本のローソクを使うもの(弱いフラクタル)の2種類がある。以下のフラクタル#定義では、ローソク足(i)は最高値(TOP)または最安値(BOT)を持つ中央のローソク足である。5本のローソク足を使ったフラクタルでは、ローソク足i-2,i-1,i,i+1,i+2のデータがあることを確認する。また、厳密な不等式">"または"<"を使用するバリエーションや、"<="または">="を使用するバリエーションもあります。最後に、トップフラクタル(TOP)またはボトムフラクタル(BOT)を識別するための#定義があります。定義を見れば、どちらの定義を使うべきかがわかる。
is3CANDLEGAPUP(i,gap,size)は、UPギャップ(ローソク足の高値が2本後のローソク足の安値を下回る)を見つけるために使用される。ローソク足(i)は、問題の3本のローソク足のうち、最も新しいローソク足となります。ここでも、ローソク足は "AsSeries "であると仮定します。「gap "はギャップの最小価格デルタ、"size "は真ん中のローソク足のサイズの最小価格デルタです。
is3CANDLEGAPDOWN(i,gap,size)は、同じロジックを使用してDOWNギャップを見つけるために使用されます。
is3CANDLEGAPUPTREND(i,gap,size)は、is3CANDLEGAPUP(i,gap,size) と同じ ですが、3本のローソク足のうち最も古いローソク足が正の方向でなければならないという、真であるための追加条件を追加します。
isCANDLEDOJIPOINTS(i,n)とisCANDLEDOJIFRACTION(i,f)です。最初のバージョンはn*_Pointを使用し、2番目のバージョンはf*CANDLESIZE(i)を使用してローソク足が童子であるかどうか(真偽)を判断します。
例:ローソク足 20 が非厳密な(等号を使用した)フラクタル・トップかどうかを知りたい場合は isCANDLEFRACTALEQTOP(20) を使用。
ご覧のように、定義は問い合わせを圧縮したもので、EA コードをより短く、読みやすくします。
// キャンドル機能の問い合わせ (boolean) #define isCANDLEUP(i) (CANDLEDIRECTION(i)==1) #define isCANDLEDOWN(i) (CANDLEDIRECTION(i)==-1) #define isCANDLEFLAT(i) (CANDLEDIRECTION(i)==0) #define isCANDLEWICKLESS(i) (CANDLEWICKSIZE(i)==0) #define isCANDLETAILLESS(i) (CANDLETAILSIZE(i)==0) #define isCANDLESOLID(i) (CANDLEWICKSIZE(i)==0 && CANDLETAILSIZE(i)==0) #define isCANDLERIGHTDIR(i,dir) (dir*(CANDLECLOSE(i) - CANDLEOPEN(i))>0) #define isCANDLEFRACTALTOP(i) (CANDLEHIGH(i) > CANDLEHIGH(i-1) && CANDLEHIGH(i-1) > CANDLEHIGH(i-2) && CANDLEHIGH(i) > CANDLEHIGH(i+1) && CANDLEHIGH(i+1) > CANDLEHIGH(i+2)) #define isCANDLEFRACTALBOT(i) (CANDLELOW(i) < CANDLELOW(i-1) && CANDLELOW(i-1) < CANDLELOW(i-2) && CANDLELOW(i) < CANDLELOW(i+1) && CANDLELOW(i+1) < CANDLELOW(i+2)) #define isCANDLEFRACTALEQTOP(i) (CANDLEHIGH(i) >= CANDLEHIGH(i-1) && CANDLEHIGH(i-1) >= CANDLEHIGH(i-2) && CANDLEHIGH(i) >= CANDLEHIGH(i+1) && CANDLEHIGH(i+1) >= CANDLEHIGH(i+2)) #define isCANDLEFRACTALEQBOT(i) (CANDLELOW(i) <= CANDLELOW(i-1) && CANDLELOW(i-1) <= CANDLELOW(i-2) && CANDLELOW(i) <= CANDLELOW(i+1) && CANDLELOW(i+1) <= CANDLELOW(i+2)) #define isCANDLEWEAKFRACTALTOP(i) (CANDLEHIGH(i) > CANDLEHIGH(i-1) && CANDLEHIGH(i) > CANDLEHIGH(i+1)) #define isCANDLEWEAKFRACTALBOT(i) (CANDLELOW(i) < CANDLELOW(i-1) && CANDLELOW(i) < CANDLELOW(i+1)) #define isCANDLEWEAKFRACTALEQBOT(i) (CANDLELOW(i) <= CANDLELOW(i-1) && CANDLELOW(i) <= CANDLELOW(i+1)) #define isCANDLEWEAKFRACTALEQTOP(i) (CANDLEHIGH(i) >= CANDLEHIGH(i-1) && CANDLEHIGH(i) >= CANDLEHIGH(i+1)) #define is3CANDLEGAPUP(i,gap,size) (CANDLELOW(i)-CANDLEHIGH(i+2)>gap && CANDLEBODYSIZE(i+1)>=size) #define is3CANDLEGAPDOWN(i,gap,size) (CANDLELOW(i+2)-CANDLEHIGH(i)>gap && CANDLEBODYSIZE(i+1)>=size) #define is3CANDLEGAPUPTREND(i,gap,size) (CANDLELOW(i)-CANDLEHIGH(i+2)>gap && CANDLEBODYSIZE(i+1)>=size && isCANDLEUP(i+2)) #define is3CANDLEGAPDOWNTREND(i,gap,size) (CANDLELOW(i+2)-CANDLEHIGH(i)>gap && CANDLEBODYSIZE(i+1)>=size && isCANDLEDOWN(i+2)) #define isCANDLEDOJIPOINTS(i,n) (CANDLEBODYSIZE(i) <= n*_Point) #define isCANDLEDOJIFRACTION(i,f) (CANDLEBODYSIZE(i) <= f*CANDLESIZE(i))
数学関数と演算
ここで、EA で役立つ数学関数と演算をいくつか定義します。そのうちのいくつかは私が開発したEAに特有なものですが、お望みであれば変更したり削除したりしてもかまいません。
BRACKET(x,minV,maxV)は、区間[minV,maxV]内のxの値を返します。これは EA の入力変数をボックス制約するのに便利です。
CONVEXCOMB(a,x1,x2) は, x1 と x2 の凸の組み合わせを a*x1+x2 として返す.この関数は、x1 と x2 の中間の値を計算するときに便利であるが、平均値(a=0.5)以上の値が必要である。
EVALLINE(x,x1,y1,x2,y2,ymin,ymax) は2点[x1,y1]と[x2,y2]で定義される直線の評価である。xで評価されると、[ymin,ymax]に括られた値が返される。
MAPAB11(x,A,B)は値xを括弧[A,B]から括弧[-1,1]にマップする。MAP11AB(x,A,B)は、値xをブラケット[-1,1]からブラケット[A,B]にマップする。これら2つの関数は、[-1,1]の範囲で正規化された変数を扱うのに便利である。
最後の4つの関数は私のEAで使われているもので、必ずしもすべての人に汎用的に役立つとは限りませんが、念のため残しておきました。
#define BRACKET(x,minV,maxV) (x<minV?minV:(x>maxV?maxV:x)) #define CONVEXCOMB(a,x1,x2) (a*x1+(1.0-a)*x2) #define EVALLINE(x,x1,y1,x2,y2,ymin,ymax) BRACKET((y2-y1)/(x2-x1)*(x-x1)+y1,ymin,ymax) #define MAPAB11(x,A,B) (2./(B-A)*(BRACKET(x,A,B)-A)-1.) #define MAP11AB(x,A,B) ((B-A)/2.*(BRACKET(x,-1,1)-1)+B) #define SIGMOID(x,a) (1.0/(1.0 + exp(-a*x))) #define NN1(x,w,b) (w*x+b) #define EVALPOLY(X,X0,X1,Y0,Y1,EX,ymin,ymax) BRACKET(Y1*pow((X-X0)/(X1-X0),EX)+Y0,ymin,ymax) #define EVALPOLY2P(X,X0,X1,Y0,Y1,EX,ymn,ymx) BRACKET((Y1-Y0)*pow((X-X0)/(X1-X0),EX)+Y0,ymn,ymx)
また、関数や操作として、(傾きの代用として)差の計算があります。
MA20DIFF(i,n)は、n本のローソク足で区切られた20期間の移動平均の2つの値の差を出します。残りの関数も同じロジックに従います。例:ローソク足3本目と13本目の200期間移動平均の差を計算するには、MA200DIFF(3,10)を使います。
#define MA20DIFF(i,n) (MOVAVG20(i)-MOVAVG20(i+n)) #define MA40DIFF(i,n) (MOVAVG40(i)-MOVAVG40(i+n)) #define MA50DIFF(i,n) (MOVAVG50(i)-MOVAVG50(i+n)) #define MA200DIFF(i,n) (MOVAVG200(i)-MOVAVG200(i+n)) #define CANDLECLOSEDIFF(i,n) (CANDLECLOSE(i)-CANDLECLOSE(i+n)) #define CANDLEOPENDIFF(i,n) (CANDLEOPEN(i)-CANDLEOPEN(i+n)) #define CANDLEHIGHDIFF(i,n) (CANDLEHIGH(i)-CANDLEHIGH(i+n)) #define CANDLELOWDIFF(i,n) (CANDLELOW(i)-CANDLELOW(i+n)) #define CANDLEMEDIANDIFF(i,n) (CANDLEMEDIAN(i)-CANDLEMEDIAN(i+n)) #define CANDLEWEIGHTEDDIFF(i,n) (CANDLEWEIGHTED(i)-CANDLEWEIGHTED(i+n)) #define CANDLETYPICALDIFF(i,n) (CANDLETYPICAL(i)-CANDLETYPICAL(i+n)) #define CANDLEBODYMIDDLEDIFF(i,n) (CANDLEBODYMIDDLE(i)-CANDLEBODYMIDDLE(i+n))
問い合わせも数学的関数として含まれています。括弧と凸は以下でチェックされます。
#define isINBRACKET(x,minV,maxV) (x<=maxV && x>=minV) #define isINBRACKETSTRICT(x,minV,maxV) (x<maxV && x> minV) #define isOUTBRACKET(x,minV,maxV) (x>=maxV || x<=minV) #define isOUTBRACKETSTRICT(x,minV,maxV) (x> maxV || x< minV) #define isCONVEX(yl,yc,yr) (yl>=yc && yc<=yr) #define isCONCAVE(yl,yc,yr) (yl<=yc && yc>=yr) #define isCONVEXTSTRICT(yl,yc,yr) (yl>yc && yc<yr) #define isCONCAVESTRICT(yl,yc,yr) (yl<yc && yc> yr)
定数
私はいくつかの定数を定義している。それを使うかどうかはあなたの自由です。
// 定数 #define PIVALUE (M_PI) #define MINSTOPPOINTS (30) #define MINFREEZEPOINTS (30) #define STOPLEVEL (fmax(MINSTOPPOINTS,(double)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL))*_Point) #define FREEZELEVEL (fmax(MINFREEZEPOINTS,(double)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL))*_Point)
デバッグ
熟練したプログラマーなら誰でも、コードをデバッグするための最良のツールがPrint文であることを知っています。以下の定義では、プログラムのあちこちにPrint文を設定し、デバッグのレベルに応じてPrint文のON/OFFを切り替えることができます。
まず、#define DEBUG_LEVEL0、#define DEBUG_LEVEL1、 または#define DEBUG_LEVEL 2を使用して、デバッグのレベルを定義する必要があります。DEBUG_LEVEL0 を使用すると、メタトレーダー 5 ターミナルのジャーナルタブには何も表示されません。DEBUG_LEVEL1 を使用すると、PRINTVARn ステートメントのみがアクティブになり、Journal タブに印刷されます。DEBUG_LEVEL2 では、PRINTVARn ステートメントとVPRINTVARn ステートメントの両方がジャーナルタブに表示されます。DEBUG_LEVEL2はVPRINTVARnを 使用した "V "erboseの場合です。
PRINTVARnはn個の変数を表示します。例えば、i,x,zを表示したい場合は、PRINTVAR3(i,x,z); 文字列を表示したい場合は、PRINTTEXT("任意の文字列"); を使用します。プリントアウトには、関数名とPRINTVARn文が挿入されているファイルの行番号が含まれます。
// プリントを使ったデバッグ // コードの冒頭で、デバッグ・レベルx={0,1,2}を次のように定義する:#define DEBUG_LEVELx #ifdef DEBUG_LEVEL0 #define PRINTTEXT(text) #define PRINTVAR(x1) #define PRINTVAR1(x1) #define PRINTVAR2(x1,x2) #define PRINTVAR3(x1,x2,x3) #define PRINTVAR4(x1,x2,x3,x4) #define PRINTVAR5(x1,x2,x3,x4,x5) #define PRINTVAR6(x1,x2,x3,x4,x5,x6) #define VPRINTTEXT(text) #define VPRINTVAR(x1) #define VPRINTVAR1(x1) #define VPRINTVAR2(x1,x2) #define VPRINTVAR3(x1,x2,x3) #define VPRINTVAR4(x1,x2,x3,x4) #define VPRINTVAR5(x1,x2,x3,x4,x5) #define VPRINTVAR6(x1,x2,x3,x4,x5,x6) #endif #ifdef DEBUG_LEVEL1 #define PRINTTEXT(text) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :",text) #define PRINTVAR(x1) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1)) #define PRINTVAR1(x1) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1)) #define PRINTVAR2(x1,x2) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2)) #define PRINTVAR3(x1,x2,x3) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3)) #define PRINTVAR4(x1,x2,x3,x4) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3),", " #x4 + "=", (x4)) #define PRINTVAR5(x1,x2,x3,x4,x5) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3),", " #x4 + "=", (x4),", " #x5 + "=", (x5)) #define PRINTVAR6(x1,x2,x3,x4,x5,x6) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3),", " #x4 + "=", (x4),", " #x5 + "=", (x5),", " #x6 + "=", (x6)) #define VPRINTTEXT(text) #define VPRINTVAR(x1) #define VPRINTVAR1(x1) #define VPRINTVAR2(x1,x2) #define VPRINTVAR3(x1,x2,x3) #define VPRINTVAR4(x1,x2,x3,x4) #define VPRINTVAR5(x1,x2,x3,x4,x5) #define VPRINTVAR6(x1,x2,x3,x4,x5,x6) #endif #ifdef DEBUG_LEVEL2 #define PRINTTEXT(text) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :",text) #define PRINTVAR(x1) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1)) #define PRINTVAR1(x1) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1)) #define PRINTVAR2(x1,x2) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2)) #define PRINTVAR3(x1,x2,x3) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3)) #define PRINTVAR4(x1,x2,x3,x4) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3),", " #x4 + "=", (x4)) #define PRINTVAR5(x1,x2,x3,x4,x5) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3),", " #x4 + "=", (x4),", " #x5 + "=", (x5)) #define PRINTVAR6(x1,x2,x3,x4,x5,x6) Print("*/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3),", " #x4 + "=", (x4),", " #x5 + "=", (x5),", " #x6 + "=", (x6)) #define VPRINTTEXT(text) Print("V/*/*/* ",__FUNCTION__,"(",__LINE__,") :",text) #define VPRINTVAR(x1) Print("V/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1)) #define VPRINTVAR1(x1) Print("V/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1)) #define VPRINTVAR2(x1,x2) Print("V/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2)) #define VPRINTVAR3(x1,x2,x3) Print("V/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3)) #define VPRINTVAR4(x1,x2,x3,x4) Print("V/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3),", " #x4 + "=", (x4)) #define VPRINTVAR5(x1,x2,x3,x4,x5) Print("V/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3),", " #x4 + "=", (x4),", " #x5 + "=", (x5)) #define VPRINTVAR6(x1,x2,x3,x4,x5,x6) Print("V/*/*/* ",__FUNCTION__,"(",__LINE__,") :", #x1 + "=", (x1),", " #x2 + "=", (x2),", " #x3 + "=", (x3),", " #x4 + "=", (x4),", " #x5 + "=", (x5),", " #x6 + "=", (x6)) #endif
MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/56149

マーケットウォッチ内のすべてのシンボルについて、ブローカーからすべてのティックをダウンロードします。 利用可能な場合は、すべての履歴または過去の特定の日付までをダウンロードします。

MACDカラーヒストグラムは、古典的なMACD(移動平均収束ダイバージェン ス)インディケータの改良版で、市場のモメンタムをより明確かつ直感的 に視覚的に分析できるように設計されています。このインディケータは、伝統的なMACDの機能と、MACDラインとシグナ ル・ラインの関係に基づいて色が変化するダイナミック・ヒストグラムを組み合 わせており、トレーダーは市場のトレンド、反転ポイント、優柔不断の瞬間を素早く 識別することができます。

このインディケータは2本の線を描画します。下 線 は 、上 昇 し た 直 近 の SMA期間に基づいて計算されます。上側の線は、下降した直近のSMA期間に基づいて計算されます。

Auto SL TP by Risk Reward Ratioスクリプトは、リスク管理プロセスを合理化したいMetaTrader 5トレーダーのために設計されたシンプルで強力なツールです。このスクリプトは、ユーザーが定義したリスク:リワード比率とストップロス(pips)に基づき、オープンポジションのストップロス(SL)とテイクプロフィット(TP)レベルを設定するプロセスを自動化します。初心者であろうと経験豊富なトレーダーであろうと、このスクリプトは時間を節約し、一貫したリスク管理を保証します。