거래 로봇을 무료로 다운로드 하는 법을 시청해보세요
당사를 Twitter에서 찾아주십시오!
당사 팬 페이지에 가입하십시오
스크립트가 흥미로우신가요?
그렇다면 링크 to it -
하셔서 다른 이들이 평가할 수 있도록 해보세요
스크립트가 마음에 드시나요? MetaTrader 5 터미널에서 시도해보십시오
스크립트

Broker Spec Inspector - MetaTrader 5용 스크립트

Seckin Erkut
Seckin Erkut
Algo Trading Systems Developer. I develop strategies and portfolios not by hypes but from solid academic literature.

I put my money where my mouth is, be sure to check the performance of my EAs through my signals.
| Korean English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
조회수:
16
평가:
(2)
게시됨:
업데이트됨:
MQL5 프리랜스 이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
거래를 자동화하는 모든 트레이더는 결국 오류 130인 “무효한 스탑”이나, 아예 체결되지 않는 주문을 한 번쯤은 겪게 됩니다. 이때 흔히 보이는 반응은 EA를 탓하는 것입니다. 하지만 대부분의 경우 EA에는 문제가 없으며, 서버 측에서 계약 한도를 적용하고 있는 것입니다.
: 스톱 레벨, 프리즈 레벨, 혹은 포지션 크기 산정 방식이 준수하지 않는 최소 랏 단위 등이 있습니다. 이러한 제한은 종목과 브로커마다 다르며, 예고 없이 변경되기도 합니다.
공지 없이 변경됩니다. 이 스크립트는 이러한 제한값을 출력합니다.
어떤 차트에나 불러오세요. 이 기능은 사양만 읽어들이며, 어떤 것도 열거나 수정하거나 닫지 않으며, 알고리즘 거래를 활성화할 필요도 없습니다. 쉼표로 구분된 종목 목록을 입력하거나 입력란을 비워두면, 마켓 워치에서 선택한 종목을 순차적으로 확인합니다.

인쇄 내용

각 상품에 대해: 자릿수, 핍, 티크 크기 및 가격, 계약 규모, 최소/단계/최대 랏, 스프레드 및 변동 여부, 체결 방식, 롱 및 숏 스왑, 그리고 현재 여유 마진 대비 최소 랏 1개에 필요한 마진. 그리고 실제 질문에 대한 답변 부분:

브로커 주의사항

--- XAUUSD (bid 4402.15 / ask 4402.63) ---------------------
stops level 350 pts | freeze level 0 pts | EFFECTIVE band 351 pts
VERDICT: a stop/pending placed 100 pts from price would be REJECTED as 'Invalid price' (band is 351 pts)
buy at ask 4402.63: you asked SL 4401.63 -> nearest legal SL 4399.12 (moved out)
마지막 줄이 특히 유용합니다. 이 줄은 단순히 이 종목에서 100포인트 스탑이 실패한다는 사실만 알려주는 것이 아니라, 서버가 대신 허용할 정확한 수준까지 알려줍니다.
규칙
두 가지 별개의 제한 조건이 스탑 주문을 거부할 수 있으며, 그중 하나만 확인하는 도구는 중개사의 절반에서 잘못된 결과를 내놓습니다:
double MinStopDistance(const string sym)
{
long stops = SymbolInfoInteger(sym, SYMBOL_TRADE_STOPS_LEVEL);
long freeze = SymbolInfoInteger(sym, SYMBOL_TRADE_FREEZE_LEVEL);
long band = (stops > freeze ? stops : freeze) + 1;
return band * SymbolInfoDouble(sym, SYMBOL_POINT);
}

이 네 줄에는 세 가지 결정이 담겨 있습니다.
이 밴드는 두 한계치 중 더 큰 쪽입니다. 일부 서버는 프리즈를 0으로 두고 스톱을 강제하는 반면, 다른 서버는 그 반대를 적용하기 때문입니다. 더 큰 값을 선택하면 현재 접속 중인 서버의 유형을 알 필요 없이 두 경우를 모두 처리할 수 있습니다.
밴드의 가장자리에 정확히 위치하는 레벨은 여전히 많은 서버에서 거부되기 때문에 1점이 추가됩니다. 문서화된 규칙은 “보다 가깝다”이지만, 실제로 적용되는 규칙은 종종 “보다 가깝거나 같다”이며, 1점을 더하는 데는 아무런 비용이 들지 않습니다.
결과는 포인트가 아닌 PRICE 단위로 반환됩니다. 이는 실제 스톱 레벨을 설정할 때 필요한 값이며, 5자리 숫자 종목에서 10배의 오차를 유발하는 포인트와 핍의 혼동을 해소해 줍니다.
자신만의 EA에 활용하세요
두 번째 함수가 복사할 가치가 있는 함수입니다. 이 함수는 사용자가 원하는 스탑을 입력으로 받아, 서버가 허용하는 가장 가까운 스탑을 가격의 올바른 쪽에서 반환합니다:
double LegalStopLoss(const string sym, const bool isBuy,
const double price, const double wanted)
{
double dist = MinStopDistance(sym);
int digits = (int)SymbolInfoInteger(sym, SYMBOL_DIGITS);
double sl = wanted;
if(isBuy) { if(price - sl < dist) sl = price - dist; }
else { if(sl - price < dist) sl = price + dist; }
return NormalizeDouble(sl, digits);
}

이미 합법적인 정류장은 변경 없이 그대로 유지되므로, 모든 정류장을 이 정류장을 경유하도록 경로를 설정해도 안전합니다. 기존 계산을 감싸는 데는 한 줄만 추가하면 됩니다:
double sl = LegalStopLoss(_Symbol, true, ask, ask - atr * 1.5);
이는 변동성이 밴드 대비 높은 상황에서 가장 중요합니다. EUR/USD에서는 문제가 없는 ATR 스탑도, 금이나 지수의 경우 거래가 한산한 시간대에는 밴드 내부로 떨어질 수 있습니다. 바로 그 순간에 반등이 예상치 못하게 발생하는데, 어제는 똑같은 코드가 잘 작동했기 때문입니다.

출력 결과 해석에 관한 참고 사항

스프레드가 넓다고 해서 브로커가 고의로 문제를 일으키는 것은 아닙니다. 이는 대개 해당 종목의 가격 책정 방식과 헤지 방식을 반영한 것이며, 한 서버에서는 잘 작동하던 스캘핑 EA가 코드 한 줄도 변경하지 않았는데도 다른 서버에서는 작동하지 않게 되는 이유이기도 합니다.
마이그레이션하기 전에 비교해 보십시오. CSV 내보내기 기능은 기본적으로 활성화되어 있으며, MQL5\Files 폴더에 BrokerSpecs.csv 파일을 작성합니다. 이 파일에는 심볼별로 한 행씩, 밴드, 최소 스톱 거리 및 가장 가까운 유효 레벨이 포함됩니다. 두 브로커에서 스크립트를 실행하고 파일을 나란히 놓아보면, 일주일이나 걸렸을 디버깅 작업으로 드러날 차이점들을 단 1분 만에 확인할 수 있습니다.
규모를 조정하기 전에 마진을 확인하십시오. 마진 열은 최소 1 랏을 기준으로 한 수치입니다. 해당 수치가 이미 가용 마진에 근접해 있다면, 포지션 규모 결정에 아직 파악하지 못한 상한선이 존재한다는 뜻입니다.

종목은 ‘Market Watch’에 표시되어야 하며, 최소 한 번의 틱 데이터를 수신해야 합니다. 종목에 틱 데이터가 보고되지 않는 경우, 해당 차트를 한 번 열고 다시 실행하십시오.


MetaQuotes Ltd에서 영어로 번역함.
원본 코드: https://www.mql5.com/en/code/76178

Risk Guard — risk-based lot size, daily loss lock, max positions, oversized-trade trim, forced stop-loss Risk Guard — risk-based lot size, daily loss lock, max positions, oversized-trade trim, forced stop-loss

Enforces your own risk rules on every position, whether opened by hand or by another EA: shows the lot size that matches your risk, locks the account for the day after a set loss, caps open positions, trims positions that risk more than allowed, and adds a stop-loss to any position opened without one.

Prop-Firm Equity Guard - daily and max drawdown protection (FTMO-style) Prop-Firm Equity Guard - daily and max drawdown protection (FTMO-style)

Strict risk management utility for prop-firm challenges. Automatically monitors your entire account to prevent daily and max drawdown failures. It acts as a safety buffer against spread spikes and revenge trading by instantly closing all positions and pending orders before your evaluation is terminated.

Custom Simple Moving Average Custom Simple Moving Average

기울기에 따라 색상이 변하고, 가격과 평균선의 교차 지점을 화살표로 표시하는 2단계 적응형 이동평균(기본 평균 + 2차 평활화)입니다.

Smart Loss Exit — early exit for losing positions (ATR adverse excursion, time in trade, EMA invalidation, RSI, money cap) with a CSV journal Smart Loss Exit — early exit for losing positions (ATR adverse excursion, time in trade, EMA invalidation, RSI, money cap) with a CSV journal

Closes losing positions early, before the full stop-loss, when a rule says the trade is not coming back: adverse move beyond N x ATR, too long in loss, EMA trend flipped, RSI against the position, or a money cap. Never touches a position in profit. Observe-only mode journals what would be closed without closing anything. Every exit is written to CSV with the rule, the age and the maximum adverse excursion, so the rules can be tuned from data.