GetPotentialLossInCurrency() 함수는 예치 통화로 미결 포지션의 잠재적 손실 총계를 반환합니다. 계산은 포지션 개시 가격과 StopLoss 가격 수준을 기반으로 합니다. StopLoss가 어떤 위치에도 설정되지 않은 경우 함수는 거래 계정 잔액의 현재 크기를 반환합니다.
GetPotentialLossInCurrency() 함수는 다음 매개변수를 사용합니다.
시- 도구의 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. NULL 은 현재 도구를 의미하고 "" (기본값)은 모든 도구를 의미합니다.
op- 거래 운영 , 포지션 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
미네소타- 포지션 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 17.02.2012 |//| Описание : Возвращает суммарный потенциальный убыток |//| открытых позиций в валюте депозита. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+double GetPotentialLossInCurrency( string sy= "" , int op=- 1 , int mn=- 1 ) {
double pl= 0 ;
double po, tv; // Пункт, спрэд и стоимость пунктаint i, k= OrdersTotal ();
if (sy== "0" ) sy= Symbol ();
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if (( OrderSymbol ()==sy || sy== "" ) && (mn< 0 || OrderMagicNumber ()==mn)) {
if (( OrderType ()==OP_BUY || OrderType ()==OP_SELL) && (op< 0 || OrderType ()==op)) {
if ( OrderStopLoss ()> 0 ) {
po= MarketInfo ( OrderSymbol (), MODE_POINT);
if (po== 0 ) Message( "В обзоре рынка отсутствует символ " + OrderSymbol ()+ ". Точность расчётов не гарантируется!" );
else {
tv= MarketInfo ( OrderSymbol (), MODE_TICKVALUE);
if ( OrderType ()==OP_BUY) {
pl+=( OrderOpenPrice ()- OrderStopLoss ())/po* OrderLots ()*tv;
}
if ( OrderType ()==OP_SELL) {
pl+=( OrderStopLoss ()- OrderOpenPrice ())/po* OrderLots ()*tv;
}
pl+= OrderCommission ()+ OrderSwap ();
}
} else {
pl= AccountBalance ();
break ;
}
}
}
}
}
return (pl);
}
GetPotentialLossInCurrency() 함수의 작동을 테스트하는 스크립트가 첨부되어 있습니다.
아마도 모든 거래자는 조만간 예금이 소진되기 전에 남은 포인트 수를 계산하기 시작합니다. 계산은 간단합니다. 우리는 돈을 가져와 시장의 랏 수, 포인트 비용으로 나누고 관심 있는 답을 얻습니다. 이것이 바로 내 새 ReserveDepositInPoint() 함수가 하는 일이며 다음 매개변수를 사용합니다.
시- 악기의 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. NULL 은 현재 도구를 의미하고 "" (기본값)은 모든 도구를 의미합니다.
op- 거래 운영, 포지션 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
미네소타- 포지션 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
ReserveDepositInPoint() 함수는 반대 위치를 올바르게 처리합니다. 즉, 매수 로트와 매도 로트의 차이를 계산하고 이 차이를 계산에 사용합니다. 계산은 자기자본을 기반으로 합니다. 즉, 중지가 100%라고 가정합니다. 스왑, 세금 및 수수료는 고려되지 않습니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 29.02.2012 |//| Описание : Возвращает запас депозита в пунктах. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int ReserveDepositInPoint( string sy= "" , int op=- 1 , int mn=- 1 ) {
int i, k= OrdersTotal (); // Номера позицийint n, r; // Номер символа в массиве, запас депозита в пунктахdouble ol[], tv; // Массив лотов, стоимость пунктаstring os[]; // Массив символовif (sy== "0" ) sy= Symbol ();
ArrayResize (os, 0 );
ArrayResize (ol, 0 );
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if (( OrderSymbol ()==sy || sy== "" ) && (mn< 0 || OrderMagicNumber ()==mn)) {
n=ArraySearchString(os, OrderSymbol ());
if (n< 0 ) {
n= ArraySize (os);
ArrayResize (os, n+ 1 );
ArrayResize (ol, n+ 1 );
}
os[n]= OrderSymbol ();
if ((op< 0 || OrderType ()==op) && ( OrderType ()==OP_BUY || OrderType ()==OP_SELL)) {
if ( OrderType ()==OP_BUY ) ol[n]+= OrderLots ();
if ( OrderType ()==OP_SELL) ol[n]-= OrderLots ();
}
}
}
}
n= ArraySize (os);
for (i= 0 ; i<n; i++) {
tv= MarketInfo (os[i], MODE_TICKVALUE);
if (tv== 0 ) Message( "В обзоре рынка отсутствует символ " +os[i]+ ". Точность расчётов не гарантируется!" );
else {
if (ol[i]!= 0 ) {
ol[i]= MathAbs (ol[i]);
r+= AccountEquity ()/tv/ol[i];
}
}
}
if (n> 1 ) r/=n*n;
return (r);
}
ReserveDepositInPoint() 함수 의 동작 확인을 위한 Expert Advisor를 첨부합니다.
매개변수로 전달된 특정 날짜 이후의 비거래 (예금, 출금, 내부 이체, 이자 발생, 보너스) 잔액 변경을 반환합니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 30.04.2010 |//| Описание : Возвращает неторговое изменение баланса с определённой даты |//| (пополнения, снятия, внутренние переводы). |//+----------------------------------------------------------------------------+//| Параметры: |//| dt - Дата и время в секундах с 1970 года (0 - с начала истории) |//+----------------------------------------------------------------------------+double GetChangeBalance( datetime dt= 0 )
{
double p= 0 ;
int i, k= OrdersHistoryTotal ();
for (i= 0 ; i<k; i++) {
if ( OrderType ()== 6 ) {
if (dt< OrderCloseTime ()) p+= OrderProfit ();
}
}
return (p);
}
(구매 준비)))) 동일하지만 Excel 작업을 위해 있습니까?
아니, 아니...))))
GetPotentialLossInCurrency() 함수는 예치 통화로 미결 포지션의 잠재적 손실 총계를 반환합니다. 계산은 포지션 개시 가격과 StopLoss 가격 수준을 기반으로 합니다. StopLoss가 어떤 위치에도 설정되지 않은 경우 함수는 거래 계정 잔액의 현재 크기를 반환합니다.
GetPotentialLossInCurrency() 함수는 다음 매개변수를 사용합니다.
GetPotentialLossInCurrency() 함수의 작동을 테스트하는 스크립트가 첨부되어 있습니다.
안녕하세요 이고르입니다. 매우 유용한 기능을 제공해 주셔서 감사합니다.
도움 좀 부탁드려도 될까요... 부분 사물함 같은 걸 하고 싶어요. 하지만 아직 정리하는 방법을 모르겠습니다. 아이디어는 다음과 같습니다.
4개 - -200$ -175$ -150$ 및 -25$ 주문이 있고 총 +400$에 대해 5개 이상의 주문이 있다고 가정해 보겠습니다.
400 > -200+-175이지만 -200+-175+-150보다 작으면 주문 5 플러스 및 마이너스 마감 -200 -175, 즉 큰 것에서 작은 것 순으로 손실이 있는 2개의 주문입니다.
예는 물론 무례하지만 아이디어를 전달했다고 생각합니다 ...
첫 번째 문제는 처음에는 어떻게 든 어딘가에 적어 둘 것입니다. (배열에서 나는 아직 정말로 이해하지 못한다) 또는 다른 옵션을 찾으십시오.
두 번째 문제는 첫 번째 문제에 이어집니다. 4개의 주문에서 무스와 함께 los [ x ]를 얻었다고 가정해 봅시다 ... drive moose( los [ x ]) 1y ( los [ price ]) 2nd ( los 2[ 티켓 ])?
내가 모르는 것을 고르거나 가르칠 수있는 곳에서 코를 찌르게 될 것입니다 =)
아마도 모든 거래자는 조만간 예금이 소진되기 전에 남은 포인트 수를 계산하기 시작합니다. 계산은 간단합니다. 우리는 돈을 가져와 시장의 랏 수, 포인트 비용으로 나누고 관심 있는 답을 얻습니다. 이것이 바로 내 새 ReserveDepositInPoint() 함수가 하는 일이며 다음 매개변수를 사용합니다.
ReserveDepositInPoint() 함수는 반대 위치를 올바르게 처리합니다. 즉, 매수 로트와 매도 로트의 차이를 계산하고 이 차이를 계산에 사용합니다. 계산은 자기자본을 기반으로 합니다. 즉, 중지가 100%라고 가정합니다. 스왑, 세금 및 수수료는 고려되지 않습니다.
ReserveDepositInPoint() 함수 의 동작 확인을 위한 Expert Advisor를 첨부합니다.
SetFibo() 함수.
이 함수는 현재 차트의 개체 OBJ_FIBO 피보나치 수준을 설정합니다.
GetLastThreeExtremumZZ() 함수.
마지막 세 개의 지그재그 극값을 검색하고 각 극값에 대한 막대 번호 및 가격 수준의 값을 반환합니다. 이 모든 데이터는 함수 매개변수로 전달되는 2차원 배열에 맞습니다. 다음은 함수 매개변수 목록입니다.
GetLastThreeExtremumZZ() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
NumberOfOrdersByPrice() 함수.
주어진 가격 수준에서 이루어진 주문 수를 반환합니다. 함수 매개변수로 확인된 주문 목록을 제한할 수 있습니다.
NumberOfLastLossPosFromDate() 함수.
이 함수는 특정 날짜 이후에 마감된 마지막 일련의 무익한 포지션(연속 숫자)을 반환합니다. 고려할 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.
ClosePosExceptTicket() 함수.
이 기능은 제출된 티켓이 있는 포지션을 제외한 모든 포지션을 시장 가격으로 마감합니다. 폐쇄 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.
GetChangeBalance() 함수.
매개변수로 전달된 특정 날짜 이후의 비거래 (예금, 출금, 내부 이체, 이자 발생, 보너스) 잔액 변경을 반환합니다.