
Fix PriceAction 손절매 혹은 Fixed RSI(스마트 스탑로스)
소개
트레이딩 세계에서 성스런 성배를 찾는 것이 저를 이 연구로 이끌었습니다. 손절매는 자금 관리를 말할 때 트레이딩에서 가장 중요한 도구입니다. 자금 관리는 트레이더가 시장에서 수익을 얻고 장기적으로 일관성 있는 수익을 유지할 수 있는 다양한 방법 중 하나입니다. 앞서 언급했듯이 자금 관리는 손절매 및 위험 보상 비율(risk-reward ratio)과 밀접한 관련이 있습니다. 1:1.5R(Risk:Reward) 비율은 다른 Risk:Reward의 승률에 비해 승률이 높은 경향이 있지만 대부분의 경우 1:>1.9R(Risk:Reward) 비율이 수익성이 더 좋고 장기적으로도 일정한 수익을 유지하는 경향이 있습니다. 이 "성스러운 성배"와 같은 트레이딩 전략에는 단점이 있습니다. 이상적인 상황에서 1:>1.9R(Risk:Reward)로 거래하는 것은 10번의 거래(각 1핍) 중 6번의 거래가 손실(6핍)이고 4번의 거래가 수익을 얻은 경우(8핍) 수익성이 있습니다. 이것은 우리가 2핍의 이익을 얻는다는 것을 의미합니다. 그러나 실제에서는 언제나 그렇지는 않을 수도 있습니다. 이러한 현상이 나타나게 되는 주요 이유는 "손절매 사냥"이라는 것 때문입니다 손절매 사냥이란 손절매가 된 후 시장이 다시 이전에 예측한 방향으로 움직이는 것을 말합니다. 손절매 사냥은 트레이딩과 자금 관리에서 주요한 문제입니다. 또한 트레이더에게(대부분 초보 트레이더)에게 심리적인 영향을 미칩니다.
Fig 1.1. 손절매 사냥
손절매 사냥은 주로 가격의 움직임이나 캔들 차트와 관련된 고정 손절매 또는 트레일링 손절매와 관련이 있습니다. 가격 차트에 손절매가 없으면 손절매 사냥이 없을 것입니다. 그러나 손절매가 없이 거래하는 것은 거래 계좌를 날려버릴 확률과 같습니다(1과 동일).
RSI 손절매
RSI 오실레이터는 100에서 0까지의 값을 가지는 창에 그려지며 가격 선 차트의 복제본입니다.
Fig 1.2. RSI와 라인 차트
RSI 지표와 라인 차트가 매우 유사한 경우 RSI 지표를 스마트 손절매로 사용하면 손절매 사냥의 위험을 줄일 수 있습니다.
목적:
여기서 저의 목표는 RSI 손절매를 사용할 경우 손절매 사냥을 줄이고 장기적으로 수익이 나는지를 확인하는 것입니다.
목표:
동일한 두개의 전략이 비교됩니다: 가격 차트에 손절매가 설정된 전략과 RSI 지표에 손절매가 설정된 차트
전략과 코드
가격 차트에서의 전통적인 손절매
가격과 관련한 고정의 손절매가 있는 첫 번째 EA. 아래는 전략을 실행하기 위한 요구 사항입니다.
패러미터 | 설명 |
---|---|
사용된 지표 | MACD (12,26,9) |
사용된 지표 | Moving Average (200) |
사용된 지표 | Moving Average (50) |
사용된 지표 | ATR (5) |
차트 주기 | 1 min |
매수 진입 | MACD 라인과 시그널 라인이 모두 0보다 아래에 있고 이동 평균(50)이 이동 평균(200)의 위에 있으면서 MACD 라인이 시그널 라인보다 큰 경우 |
매도 진입 | MACD 라인과 시그널 라인이 모두 0 위에 있고 이동 평균(50)이 이동 평균(200)의 아래에 있으면서 MACD 라인이 시그널 라인보다 작은 경우 |
청산 | 익절과 스탑로스(1:2R). 매수일때 손절매는 진입 후 20개의 캔들 중 가장 낮은 값에서 ATR(5) 값을 뺀 값입니다. 그리고 매도일때 손절매는 진입 후 20개의 캔들 중 가장 높은 값에 ATR(5) 값을 더한 값입니다.
|
그래픽으로 표현하면 아래와 같습니다.
그림 2.1 매수 진입
그림 2.2 매도 진입
코드
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
#include<Trade\Trade.mqh>
CTrade trade;
int MATrend;
int MADirection;
int MACD;
int ATR;
input int afi;// ----------RiskAmount------------
input double risk = 0.02; //% Amount to risk
input int atrValue = 20; // ATR VAlue
input int ai;// ----------Moving Average inputs------------
input int movAvgTrend = 200;// Moving Average Trend
input int movAvgDirection = 50;//moving Average for trend Direction;
input int i;// -----------MACD inputs-----------------------
input int fast = 12;// Macd Fast
input int slow = 26; //Macd Slow
input int signal = 9; //Signal Line
기타 변수 선언
double pipValue = 0.0;// double Balance; // For the Current Balance
변수는 init() 함수의 각 핸들러에 할당되었습니다.
int OnInit() { //--- //Moving Averages Indicators'' MATrend = iMA(_Symbol,_Period,movAvgTrend,0,MODE_SMA,PRICE_CLOSE); //Moving Average 200 MADirection = iMA(_Symbol,_Period,movAvgDirection,0,MODE_EMA,PRICE_CLOSE); //Moving Average 50 //MACD MACD = iMACD(_Symbol,_Period,fast,slow,signal,PRICE_CLOSE);//MACD //ATR ATR = iATR(_Symbol,_Period,atrValue); //--- point=_Point; double Digits=_Digits; if((_Digits==3) || (_Digits==5)) { point*=10; } return(INIT_SUCCEEDED); }
전략이 실행 되는 코드는 아래와 같습니다.
void Strategy() { MqlRates priceAction[]; ArraySetAsSeries(priceAction,true); int priceData = CopyRates(_Symbol,_Period,0,200,priceAction); double maTrend[]; ArraySetAsSeries(maTrend,true); CopyBuffer(MATrend,0,0,200,maTrend); //200 MA double madirection[]; ArraySetAsSeries(madirection,true); CopyBuffer(MADirection,0,0,200,madirection); //50 MA double macd[]; ArraySetAsSeries(macd,true); CopyBuffer(MACD,0,0,200,macd); //MACD double macds[]; ArraySetAsSeries(macds,true); CopyBuffer(MACD,1,0,200,macds); //MACD_Signal Line double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); if (madirection[1]>maTrend[1]) { //Buy ; Uptrend bool macd_bZero = macds[1]<0&&macd[1]<0; //MacD Signal Line is less than Zero bool macd_cross = macd[1]>macds[1];// Macd Crosses the signal line if (macd_bZero && macd_cross) { buyTrade = true; } } else if (madirection[1]<maTrend[1]) { //Sell; DownTrend bool macd_bZero = macds[1]>0&&macd[1]>0;; //MacD Signal Line is less than Zero bool macd_cross = macd[1]<macds[1];// Macd Crosses the signal line if (macd_bZero && macd_cross) { sellTrade = true; } } if (buyTrade && sellTrade) { buyTrade = false; sellTrade = false; return; } if (buyTrade) { buyTrade = false; sellTrade = false; Buy(Ask); } else if (sellTrade) { buyTrade = false; sellTrade = false; Sell(Bid); } }
진입(매수와 매도)
void Buy(double Ask) { double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data) theLotsize = NormalizeDouble((Balance*risk)/((MathAbs(Ask-((stoplossforBuy(20)-atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk trade.Buy(theLotsize,_Symbol,Ask,(stoplossforBuy(20)-atr[1]),Ask+(2*MathAbs(Ask-((stoplossforBuy(20)-atr[1])))),NULL); //Buy Entry with zero stoploss && take profit is twice the distance between the entry and the lowest candle } void Sell(double Bid) { double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data) theLotsize = NormalizeDouble((Balance*risk)/((MathAbs(Bid-((stoplossforSell(20)+atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk trade.Sell(theLotsize,_Symbol,Bid,(stoplossforSell(20)+atr[1]),Bid-(2*MathAbs(((stoplossforSell(20)+atr[1]))-Bid)),NULL); //Sell Entry with zero stoploss && take profit is twice the distance between the entry and the highest candle }
위의 코드에서 stoplossforSell(int num)과 stoplossforBuy(int num)라는 두 가지 메서드를 호출했습니다. 이 두 가지 메서드는 특히 거래에 진입 한 후 미리 입력한 캔들의 수에서 최고값 및 최저값의 캔들을 식별하기 위한 것입니다. 예를 들어 stoplossforSell(20)은 진입 이전의 20개 캔들 중에서 가장 높은 캔들을 반환합니다.
double stoplossforBuy(int numcandle) { int LowestCandle; //Create array for candle lows double low[]; //Sort Candle from current downward ArraySetAsSeries(low,true); //Copy all lows for 100 candle CopyLow(_Symbol,_Period,0,numcandle,low); //Calculate the lowest candle LowestCandle = ArrayMinimum(low,0,numcandle); //Create array of price MqlRates PriceInfo[]; ArraySetAsSeries(PriceInfo,true); //Copy price data to array int Data = CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),PriceInfo); return PriceInfo[LowestCandle].low; } double stoplossforSell(int numcandle) { int HighestCandle; double High[]; //Sort array downward from current candle ArraySetAsSeries(High,true); //Fill array with data for 100 candle CopyHigh(_Symbol,_Period,0,numcandle,High); //calculate highest candle HighestCandle = ArrayMaximum(High,0,numcandle); //Create array for price MqlRates PriceInformation[]; ArraySetAsSeries(PriceInformation,true); //Copy price data to array int Data = CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),PriceInformation); return PriceInformation[HighestCandle].high; }
이 EA는 보유중인 포지션이 있는지 여부를 확인하고 거래를 시작합니다. 보유중인 포지션이 없으면 전략 메서드가 호출됩니다.
void OnTick() { //--- pipValue = ((((SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_VALUE))*point)/(SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE)))); Balance = AccountInfoDouble(ACCOUNT_BALANCE); if (PositionsTotal()==0) { Strategy(); } }
RSI 지표를 통한 RSI 손절매
RSI 지표에 고정 손절매가 있는 두 번째 EA의 경우. 다음은 전략을 위해 필요한요구 사항입니다.
패러미터 | 설명 |
사용된 지표 | MACD (12,26,9) |
사용된 지표 | Moving Average (200) |
사용된 지표 | Moving Average (50) |
사용된 지표 | ATR (5) |
차트 주기 | 1 min |
매수 진입 | MACD 라인과 시그널 라인이 모두 0보다 아래에 있고 이동 평균(50)이 이동 평균(200)의 위에 있으면서 MACD 라인이 시그널 라인보다 큰 경우 |
매도 진입 | MACD 라인과 시그널 라인이 모두 0 위에 있고 이동 평균(50)이 이동 평균(200)의 아래에 있으면서 MACD 라인이 시그널 라인보다 작은 경우 |
청산 | 익절 매수일때 손절매는 진입 후 20개의 (10) RSI 값 중 가장 낮은 값입니다. 매도일때 손절매는 진입 후 20개의 (10) RSI 값 중 가장 높은 값입니다.
RSI가 최고 또는 최저 RSI를 교차하면 거래가 청산 됩니다.
|
시각적으로 쉽게 구분되도록 RSI 손절매에 선이 그려집니다.
그림 2.3. RSI에 스탑로스를 설정한 매수 거래
현재 RSI 값이 RSI 창의 손절매 라인보다 작으면 거래가 청산됩니다.
그림 2.4. RSI에 스탑로스를 설정한 매도 거래
현재 RSI 값이 RSI 창의 손절매 라인보다 크면 거래가 청산됩니다.
코드
코드의 첫 번째 부분은 주로 변수 선언 및 데이터 입력을 위한 것입니다. 아래와 같이 첫 번째 지표와 유사하면서 몇가지 추가 사항이 있습니다.
int RSI; input int rsi = 5; // RSI VAlue double lowestrsiValue = 100; double highestrsiValue = 0.0;
onint() 메서드는 아래와 같이 몇 가지 추가 사항을 제외하고 유사합니다.
int OnInit() { //RSI RSI = iRSI(_Symbol,_Period,rsi,PRICE_CLOSE); }
전략이 실행 되는 코드는 위와 같습니다. 그러나 RSI를 손절매로 사용할 것이기 때문에 매수 및 매도 모두에 대한 항목에는 손절매가 없습니다. 아래는 진입과 관련한 코드입니다.
void Buy(double Ask) { double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data) theLotsize = NormalizeDouble((Balance*risk)/((MathAbs(Ask-((stoplossforBuy(20)-atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk ObjectCreate(0,"sl",OBJ_HLINE,3,0,lowestRSI(10)); // Since our stoploss is zero we assign a smart stoploss on the rsi by drawing a line on the rsi window trade.Buy(theLotsize,_Symbol,Ask,0,Ask+(2*MathAbs(Ask-((stoplossforBuy(20)-atr[1])))),NULL);//Buy Entry with zero stoploss && take profit is twice the distance between the entry and the lowest candle Print("SL",lowestRSI(10)); } void Sell(double Bid) { double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data) theLotsize = NormalizeDouble((Balance*risk)/((MathAbs(Bid-((stoplossforSell(20)+atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk ObjectCreate(0,"sl",OBJ_HLINE,3,0,highestRSI(10)); // Since our stoploss is zero we assign a smart stoploss on the rsi by drawing a line on the rsi window trade.Sell(theLotsize,_Symbol,Bid,0,Bid-(2*MathAbs(((stoplossforSell(20)+atr[1]))-Bid)),NULL);//Sell Entry with zero stoploss && take profit is twice the distance between the entry and the highest candle Print("SL",highestRSI(10)); }
코드의 마지막 부분은 위의 EA와 다른데 이는 RSI의 가장 낮은 값과 가장 높은 값을 얻는 메소드 부분입니다. 이부분은 위의 진입 메소드에서 호출되고 마찬가지로 데이터를 사용하여 가장 낮거나 높은 RSI 지점에 선을 그립니다.
참고: 보유중인 포지션이 없을 때 그려진 선은 전략 메서드에서 삭제됩니다.
double lowestRSI(int count) { double thersi[]; ArraySetAsSeries(thersi,true); CopyBuffer(RSI,0,0,200,thersi); for (int i = 0; i<count;i++) { if (thersi[i]<lowestrsiValue) { lowestrsiValue = thersi[i]; } } return lowestrsiValue; } //This method get the Highest RSI afer ENtry to set the smart Stoploss double highestRSI(int count) { double thersi[]; ArraySetAsSeries(thersi,true); CopyBuffer(RSI,0,0,200,thersi); for (int i = 0; i<count;i++) { if (thersi[i]>highestrsiValue) { highestrsiValue = thersi[i]; } } return highestrsiValue; }
####
이제 EA가 설정되고 컴파일 되었으므로 결과를 확인하기 위해 두 EA를 모두 테스트할 수 있습니다.
테스트와 결과
손절매 사냥 테스트
이 섹션에서는 시뮬레이션에서 얻은 테스트와 결과가 표시됩니다. 수행할 첫 번째 테스트는 RSI STOP-LOSS EA가 거래 중 손절매 사냥 문제를 줄일 수 있는지 확인하는 것입니다. CLASSIC STOP-LOSS EA와 비교 해 볼 것입니다.
테스트는 M1 시간 주기에서 수행됩니다.
RSI STOP-LOSS EA 진입 데이터
Expert: | MACD_Smart_Stoploss | |||||||||||
심볼: | Volatility 10 Index | |||||||||||
기간: | M1 (2021.07.01 - 2021.07.15) | |||||||||||
입력: | afi=0 | |||||||||||
risk=0.05 | ||||||||||||
atrValue=20 | ||||||||||||
rsi=14 | ||||||||||||
ai=0 | ||||||||||||
movAvgTrend=200 | ||||||||||||
movAvgDirection=50 | ||||||||||||
i=0 | ||||||||||||
fast=12 | ||||||||||||
slow=26 | ||||||||||||
signal=9 | ||||||||||||
브로커: | Deriv Limited | |||||||||||
통화: | USD | |||||||||||
초기 디파짓: | 500.00 | |||||||||||
레버리지: | 1:500 |
CLASSIC STOP-LOSS EA 진입 데이터
Expert: | MACD_Cross_Stoploss | |||||||||||
심볼: | Volatility 10 Index | |||||||||||
기간: | M1 (2021.07.01 - 2021.07.15) | |||||||||||
입력: | afi=0 | |||||||||||
risk=0.05 | ||||||||||||
atrValue=5 | ||||||||||||
ai=0 | ||||||||||||
movAvgTrend=200 | ||||||||||||
movAvgDirection=50 | ||||||||||||
i=0 | ||||||||||||
fast=12 | ||||||||||||
slow=26 | ||||||||||||
signal=9 risk reward=1:2 | ||||||||||||
브로커: | Deriv Limited | |||||||||||
통화: | USD | |||||||||||
초기 디파짓: | 500.00 | |||||||||||
레버리지: | 1:50 |
결과
두 EA가 수행한 거래를 그래픽으로 표현하면 아래와 같이 표시됩니다. 각각에서 총 3개의 트레이딩 샘플을 채취했습니다.
그림 3.1. RSI STOP-LOSS EA의 샘플 1
그림 3.1a. 전통적 손절매 EA 샘플 1
그림 3.2. RSI 손절매 EA 샘플 2
그림 3.2a. 전통적 손절매 EA 샘플 2
그림 3.3. RSI STOP-LOSS EA의 샘플 3
그림 3.3a. 전통적 손절매 EA 샘플 3
위의 비교를 통해 보면 RSI 손절매 EA는 가격 액션 차트에 설정된 전통적인 손절매에 비해 사냥되듯이 손절매 당하는 것을 피하는 데 큰 역할을 했음을 관찰할 수 있습니다.
수익성 테스트
이제 "이것이 수익성이 있습니까?" 라는 큰 질문을 할 때입니다. RSI 손벌매 EA는 손절매 헌트를 피하는 데 큰 역할을 했기 때문에 수익성이 있어야 하고 전통적인 손절매 방법에 비해 손절매가 거의 발생하지 않기 때문에 승률도 높아야 합니다. 논리적으로 이는 참일 것입니다. 그러나 이 이론을 증명하려면 테스트를 수행해야 합니다.
위의 테스트와 유사한 데이터가 두 테스트에 모두 사용됩니다. 100개 이상의 거래에 대한 두 EA에 대한 백 테스트가 M1 기간에 수행됩니다. 아래는 결과입니다.
RSI 손절매 EA 결과
결과 | ||||||||||||
히스토리 품질: | 100% | |||||||||||
바: | 20160 | 틱: | 603385 | 심볼: | 1 | |||||||
총 순수익: | 327.71 | Balance Drawdown Absolute: | 288.96 | Equity Drawdown Absolute: | 367.85 | |||||||
총 수익: | 3 525.74 | Balance Drawdown Maximal: | 483.90 (69.63%) | Equity Drawdown Maximal: | 523.24 (71.95%) | |||||||
총 수익: | -3 198.03 | Balance Drawdown Relative: | 69.63% (483.90) | Equity Drawdown Relative: | 73.65% (369.45) | |||||||
Profit Factor: | 1.10 | Expected Payoff: | 1.76 | 마진 레벨: | 7.21% | |||||||
Recovery Factor: | 0.63 | Sharpe Ratio: | 0.08 | Z-Score: | 1.68 (90.70%) | |||||||
AHPR: | 1.0070 (0.70%) | LR Correlation: | 0.51 | 테스터 결과: | 0 | |||||||
GHPR: | 1.0027 (0.27%) | LR Standard Error: | 134.83 | |||||||||
총 거래 회수: | 186 | 매도 거래(승률 %): | 94 (42.55%) | 매수 거래(승률 %): | 92 (38.04%) | |||||||
총 거래 회수: | 372 | 수익 거래 (총거래 중 % ): | 75 (40.32%) | 손실 거래 (총거래 중 %): | 111 (59.68%) | |||||||
초대 수익 거래: | 85.26 | 최대 손실 거래: | -264.99 | |||||||||
평균 거래 수익: | 47.01 | 평균 거래 손실: | -28.81 | |||||||||
최대 연속 수익($): | 5 (350.60) | 최대 연속 손실($): | 6 (-255.81) | |||||||||
최대 연속 수익 회수: | 350.60 (5) | 최대 연속 손실 회수: | -413.34 (5) | |||||||||
평균 연속 수익: | 2 | 평균 연속 손실: | 2 | |||||||||
그림 3.4 RSI Stop-loss EA의 자산 커브
CLASSIC STOP-LOSS EA RESULTS
결과 | ||||||||||||
히스토리 품질: | 100% | |||||||||||
바: | 20160 | 틱: | 603385 | 심볼: | 1 | |||||||
총 순수익: | 3 672.06 | Balance Drawdown Absolute: | 215.45 | Equity Drawdown Absolute: | 217.30 | |||||||
총 수익: | 10 635.21 | Balance Drawdown Maximal: | 829.54 (19.27%) | Equity Drawdown Maximal: | 1 159.20 (25.59%) | |||||||
총 수익: | -6 963.15 | Balance Drawdown Relative: | 48.76% (270.82) | Equity Drawdown Relative: | 51.81% (303.90) | |||||||
Profit Factor: | 1.53 | Expected Payoff: | 15.97 | 마진 레벨: | 274.21% | |||||||
Recovery Factor: | 3.17 | Sharpe Ratio: | 0.16 | Z-Score: | -0.14 (11.13%) | |||||||
AHPR: | 1.0120 (1.20%) | LR Correlation: | 0.80 | 테스터 결과: | 0 | |||||||
GHPR: | 1.0093 (0.93%) | LR Standard Error: | 545.00 | |||||||||
총 거래 회수: | 230 | 매도 거래(승률 %): | 107 (44.86%) | 매수 거래(승률 %): | 123 (38.21%) | |||||||
총 거래 회수: | 460 | 수익 거래 (총거래 중 % ): | 95 (41.30%) | 손실 거래 (총거래 중 %): | 135 (58.70%) | |||||||
초대 수익 거래: | 392.11 | 최대 손실 거래: | -219.95 | |||||||||
평균 거래 수익: | 111.95 | 평균 거래 손실: | -51.58 | |||||||||
최대 연속 수익($): | 6 (1 134.53) | 최대 연속 손실($): | 9 (-211.43) | |||||||||
최대 연속 수익 회수: | 1 134.53 (6) | 최대 연속 손실 회수: | -809.21 (4) | |||||||||
평균 연속 수익: | 2 | 평균 연속 손실: | 2 |
그림 3.5. 전통적 손절매 EA의 평가금 곡선
내용
두 EA 모두가 거래 기간동안 수익성이 있었지만 첫 번째 EA(RSI Stop-Loss EA)는 부분적으로는 큰 손실을 입는 경우도 있었으나 최종적으로는 손실이 적었습니다 .그림 3.6. 평가금 커브 손실
이러한 손실은 EA의 전체 수익성과 적절한 자금 관리에 영향을 줄 수 있습니다. 반면에 전통적 손절매 EA는 손실이 더 많았고 거래 기간이 끝날 시점에 가장 많은 돈을 벌었습니다.
결론 및 권고
자금 관리는 실제로 거래의 성배입니다. 위의 실험과 같이 자금 관리가 완전히 구현 된 EA는 더 많은 손실이 있었으나 가장 많은 이익을 얻었습니다. 이것은 트레이딩의 일관성 때문입니다. 그러나 RSI에서 손절매를 정의하는 것은 위험 금액의 수준이 다양하기 때문에 첫 번째 EA(RSI STOP-LOSS)에서 완전히 동일한 일관성을 제공하지는 않습니다.
권고
헤징은 첫 번째(RSI STOP-LOSS) EA에서 손실을 줄이는 한 가지 방법입니다. 이것은 더 일관된 위험 금액을 제공하고 장기적으로 이익을 향상시킬 수 있습니다.읽어 주셔서 감사합니다!!!
MetaQuotes 소프트웨어 사를 통해 영어가 번역됨
원본 기고글: https://www.mql5.com/en/articles/9827



