다른 날에는 포지션 그룹에 대해 스톱이 트리거될 때 예금 통화로 예상 손익을 반환하는 정보 패널 용 기능이 필요했습니다. 글쎄, 그런 기능을 작성하는 것은 처음이 아닙니다. 나는 오랫동안 여러 DC와 다양한 수익 계산 방법을 사용하는 다양한 도구에서 지루하게 테스트했습니다. Forex, CFD 및 Futures의 세 가지 방법이 이미 있습니다. Forex 가 어떻게 다른지 정말 찾을 수 없었습니다및 Futures, 그러나 코드에서 다르게 계산할 가능성은 여전히. 함수가 반환할 수 있는 최대 손실은 현재 계정 잔액의 크기에 의해 인위적으로 제한됩니다. 일반적으로 매개변수를 함수에 전달하여 분석에 필요한 위치를 필터링할 수 있습니다.
sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 기기의 위치만 확인합니다. NULL 은 현재 도구를 의미하고 "" (기본값)은 모든 도구를 의미합니다.
op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
mn - 위치 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 03.05.2012 |//| Описание : Возвращает предполагаемую прибыль/убыток в валюте депозита |//| в случае срабатывания стопа открытых позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ( "" - любой символ, |//| NULL - текущий символ) |//| op - операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+double ProfitIFStopInCurrency( string sy= "" , int op=- 1 , int mn=- 1 ) {
if (sy== "0" ) sy= Symbol (); // Текущий символint i, k= OrdersTotal (); // Подсчёт открытых позицийint m; // Способ расчета прибыли: 0 - Forex, 1 - CFD, 2 - Futuresdouble l; // Размер контракта в базовой валюте инструментаdouble p; // Размер пункта в валюте котировкиdouble t; // Минимальный шаг изменения цены инструмента в валюте котировкиdouble v; // Размер минимального изменения цены инструмента в валюте депозитаdouble s= 0 ; // Подсчёт стопа в валюте депозита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)) {
l= MarketInfo ( OrderSymbol (), MODE_LOTSIZE);
m= MarketInfo ( OrderSymbol (), MODE_PROFITCALCMODE);
p= MarketInfo ( OrderSymbol (), MODE_POINT);
t= MarketInfo ( OrderSymbol (), MODE_TICKSIZE);
v= MarketInfo ( OrderSymbol (), MODE_TICKVALUE);
if ( OrderType ()==OP_BUY) {
if (m== 0 ) s-=( OrderOpenPrice ()- OrderStopLoss ())/p*v* OrderLots ();
if (m== 1 ) s-=( OrderOpenPrice ()- OrderStopLoss ())/p*v/t/l* OrderLots ();
if (m== 2 ) s-=( OrderOpenPrice ()- OrderStopLoss ())/p*v* OrderLots ();
s+= OrderCommission ()+ OrderSwap ();
}
if ( OrderType ()==OP_SELL) {
if ( OrderStopLoss ()> 0 ) {
if (m== 0 ) s-=( OrderStopLoss ()- OrderOpenPrice ())/p*v* OrderLots ();
if (m== 1 ) s-=( OrderStopLoss ()- OrderOpenPrice ())/p*v/t/l* OrderLots ();
if (m== 2 ) s-=( OrderStopLoss ()- OrderOpenPrice ())/p*v* OrderLots ();
s+= OrderCommission ()+ OrderSwap ();
} else s=- AccountBalance ();
}
}
}
}
}
if ( AccountBalance ()+s< 0 ) s=- AccountBalance (); // Ограничение убытка балансом счётаreturn (s);
}
추신. ProfitIFStopInCurrency() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
반환 ( StrToTime ( ye + " . " + mo + " .01 " )) 줄에 더하기가 있는 이유를 알려주십시오.
ProfitIFStopInCurrency() 함수
다른 날에는 포지션 그룹에 대해 스톱이 트리거될 때 예금 통화로 예상 손익을 반환하는 정보 패널 용 기능이 필요했습니다. 글쎄, 그런 기능을 작성하는 것은 처음이 아닙니다. 나는 오랫동안 여러 DC와 다양한 수익 계산 방법을 사용하는 다양한 도구에서 지루하게 테스트했습니다. Forex, CFD 및 Futures의 세 가지 방법이 이미 있습니다. Forex 가 어떻게 다른지 정말 찾을 수 없었습니다 및 Futures, 그러나 코드에서 다르게 계산할 가능성은 여전히 . 함수가 반환할 수 있는 최대 손실은 현재 계정 잔액의 크기에 의해 인위적으로 제한됩니다. 일반적으로 매개변수를 함수에 전달하여 분석에 필요한 위치를 필터링할 수 있습니다.
추신. ProfitIFStopInCurrency() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
ProfitIFtakeInCurrency() 함수
이 함수는 이전 함수와 유사하지만 포지션 그룹에 대해 테이크가 트리거 될 때 예치 통화로 예상 손익을 반환합니다. 이익 계산 방법도 고려됩니다. 외환, CFD 및 선물. 함수가 반환할 수 있는 최대 이익은 인위적으로 999,999,999로 제한됩니다.
추신. ProfitIFtakeInCurrency() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
안녕하세요! 테스터와 실제 거래를 위한 어드바이저를 더 쉽게 작성할 수 있는 템플릿(초보자용)이 있습니까? 뭔가 움직이지 않는다
견본? :)) 그래서 나의 조언자 를 출발점으로 삼으십시오...
감사합니다.... 일반적으로 상황은 흥미롭고 유용합니다.... 하지만 지금은 시작하기 위해 가장 단순한 신호(예: 평균 교차)에서 포지션을 열고 닫는 거래 고문을 만들 계획입니다. 이 모든 검사, 로트 결정 등 ... 무엇을, 언제, 어떻게 ... 복잡 ...
이고르님 제가 자주 질문을 드려서 정말 죄송하고 너무 어려운 일이 아니길 진심으로 바랍니다.....무슨 뜻인지 알려주세요
gbDisabled
온라인용 OpenPosition() 함수에서
다음은 코드의 일부입니다.
컴파일할 때 변수가 정의되지 않았다는 오류가 발생합니다.