친구 !!!! 그럼에도 불구하고 나는 또 다른 범프를 채우고 지정가 주문을 기반으로 어드바이저를 작성하기로 결정했습니다. 도움이 된다면 기쁠 것입니다. Kimov 함수에 기반한 지정가 주문의 개시는 이미 구현되었습니다. 이제 틱 통계( https://www.mql5.com/ru/forum/125272 )를 기반으로 평균과 편차를 표시하려고 합니다(여전히 더 신뢰할 수 있다고 생각하기 때문에). 가격으로 지정가 주문을 이동하는 모듈과 일정 이익에 도달하면 포지션을 닫는 모듈을 구현해야 합니다.
...... 가격으로 지정가 주문을 이동하는 모듈과 일정 이익에 도달하면 포지션을 청산하는 모듈을 구현해야 할 것입니다.
다음은 이동 주문에 대한 코드입니다. 당신에게서 맥주!
extern bool Modify =True;
extern int DistanceSet=14;//в пунктах
//-----------------------------------
if (Modify == true) { //если выключатель модификации включен//если есть отложенный ордер и нет откр. одноименных позиций и// расстояние от текущей цены превышает величину DistanceSet - модернизируем// - т.е. подтягиваем к текущей ценеif (NumberOfOrders( NULL ,OP_BUYLIMIT,Magic)> 0&& NumberOfPositions(NULL,OP_BUY,Magic)<1 ){
if ( ExistOPNearMarket( NULL ,OP_BUYLIMIT,Magic,DistanceSet)== 0 ) {
for ( int isl_= OrdersTotal ()- 1 ; isl_>= 0 ; isl_-- ) {
if ( OrderSelect (isl_,SELECT_BY_POS,MODE_TRADES)) {
if (OrderSymbol()== Symbol () ) {
if (OrderType()==OP_BUYLIMIT && OrderMagicNumber()==Magic) {
double pAsk=Ask-DistanceSet* Point ;
if (sl!= 0 ) double ldStop=pAsk-sl* Point ;
if (tp!= 0 ) double ldTake=pAsk+tp* Point ;
OrderModify(OrderTicket(), pAsk,ldStop,ldTake, 0 , DarkGreen );
Print ( "Modify OP_BUYLIMIT " ); Sleep ( 500 ); RefreshRates(); }
}}}}}
if (NumberOfOrders( NULL ,OP_SELLLIMIT,Magic)> 0&& NumberOfPositions(NULL,OP_SELL,Magic)<1 ){
if ( ExistOPNearMarket( NULL ,OP_SELLLIMIT,Magic,DistanceSet)== 0 ) {
for ( int isl= OrdersTotal ()- 1 ; isl>= 0 ; isl-- ) {
if ( OrderSelect (isl,SELECT_BY_POS,MODE_TRADES)) {
if (OrderSymbol()== Symbol () ) {
if (OrderType()==OP_SELLLIMIT && OrderMagicNumber()==Magic) {
double pBid=Bid+DistanceSet* Point ;
if (sl!= 0 ) double ldStop_=pBid+sl* Point ;
if (tp!= 0 ) double ldTake_=pBid-tp* Point ;
OrderModify(OrderTicket(), Bid+DistanceSet* Point ,ldStop_,ldTake_, 0 , DarkGreen );
Print ( "Modify OP_SELLLIMIT" ); Sleep ( 500 ); RefreshRates(); }
}}}}}
} //выключатель модификации
Where, - 함수 ExistOPNearMarket() - //이 함수는 시장 근처에 주문 또는 위치의 존재 플래그를 반환합니다. // (시장에서 포인트 단위로 주어진 거리에서). 보다 정확한 피감사인 선정 //주문 또는 위치는 외부 매개변수에 의해 설정됩니다. //sy - 기기 이름. 이 매개변수를 설정하면 기능이 // 지정된 악기의 주문 또는 위치만. "" 또는 NULL은 //현재 악기. //op - 거래 작업, 주문 또는 위치 유형. 유효한 값: OP_BUY, // OP_SELL, OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP, OP_SELLSTOP 또는 -1. //기본값 -1은 모든 거래 작업을 의미합니다. //mn - 주문 또는 위치 ID(MagicNumber). 기본값 -1 // - 모든 식별자. //ds - 시장과의 거리(포인트). 기본값은 1000000입니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает флаг существования позиции или ордера около рынка |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| op - торговая операция ( -1 - любая операция) |//| mn - MagicNumber ( -1 - любой магик) |//| ds - расстояние в пунктах от рынка ( 1000000 - по умолчанию) |//+----------------------------------------------------------------------------+bool ExistOPNearMarket( string sy= "" , int op=- 1 , int mn=- 1 , int ds= 1000000 ) {
int i, k= OrdersTotal (), ot;
if (sy== "" || sy== "0" ) sy= Symbol ();
double p=MarketInfo(sy, MODE_POINT);
if (p== 0 ) if ( StringFind (sy, "JPY" )< 0 ) p= 0.0001 ; else p= 0.01 ;
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if ((OrderSymbol()==sy) && (op< 0 || ot==op)) {
if (mn< 0 || OrderMagicNumber()==mn) {
if (ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) {
if ( MathAbs (MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return (True);
}
if (ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
if ( MathAbs (OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return (True);
}}}}} return (False); }
그리고 NumberOfOrders() 함수 -
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Возвращает количество ордеров. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любой ордер) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int NumberOfOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
int i, k= OrdersTotal (), ko= 0 , ot;
if (sy== "0" ) sy= Symbol ();
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot> 1 && ot< 6 ) {
if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || ot==op)) {
if (mn< 0 || OrderMagicNumber()==mn) ko++;
}}}} return (ko);}
오늘 mt4 B라는 메일로 편지를 받았습니다. //------------------------ " 친애하는 고객 여러분, 2010년 4월 14일부터 부록 BT-08 계약 1.3.6.에 해당하는 조치가 발효됩니다. 1.3.6. 밸런스 고정. 1.3.6.1. 거래 잔액을 수정하는 프로세스는 스왑이 발생하기 전에 매일 수행됩니다. 절차는 수행된 모든 거래 작업의 재무 결과를 자동으로 계산하고 이 결과를 거래 계정의 현재 잔액과 비교하는 것입니다. 금액 불일치의 경우 거래 계정의 잔액은 불일치 금액만큼 조정됩니다. 이 순간부터 잔액을 고정하는 절차가 매일 수행됩니다. 이 절차를 거친 후 거래 계정의 재무 결과에 불일치가 있는 경우 기술 지원 부서에 문의하여 설명을 요청할 수 있습니다....." //------------------------------------------------ 이해가 안되는데 이게 대체 뭐야? 금액의 차이는 무엇입니까? 이론적으로 어디에서 올 수 있습니까? 그게 다 뭐야? 그리고 - ".... 거래 계정 잔액이 조정됩니다." - 어때요?
실수할까 봐 두렵지만 BT-08 계약서 1.3.6.1항은 회사가 다시 고객을 꼬집을 수 있는 기회를 준다. 이론적 불일치는 어디에서 올 수 있습니까? 옵션 2. 첫째, 주문이 비시장 가격으로 채워진 경우(예: 이상치, 급증 및 기타 실패가 있음) - 회사는 그러한 주문의 운명을 결정하고 "비시장 가격"이 무엇인지 결정합니다. 그러나 이것은 자주 발생하지 않으며 그렇게 무섭지 않습니다. 두 번째 옵션은 거래자에게 더 중요합니다. 고정 시점에 회사가 거래 스프레드를 확장한다고 상상해보십시오. 이것은 귀하의 모든 열린 포지션 에 대해 총 이익이 감소하고 이 차이가 잔액에서 공제된다는 것을 의미합니다... 회사는 각 거래일이 끝날 때 이러한 절차를 수행하고 숨겨진 것처럼 보일 것입니다. 스왑... 젠장, 아니 악마는 회사의 그런 행동을 막을 수 없습니다... 그녀는 CFD의 소유자입니다...
물론 모두가 회사의 품위를 믿고 싶고 그런 속임수는 없을 거라고..., 시간이 말해줄 겁니다... 하지만 해외 소송과 비싼 변호사 비용을 어디선가 찾아야 하는데...
..... 두 번째 옵션은 거래자에게 더 중요합니다. 고정 시점에 회사가 거래 스프레드를 확장한다고 상상해보십시오. 이것은 귀하의 모든 열린 포지션에 대해 총 이익이 감소하고 이 차이가 대차대조표에서 차감된다는 것을 의미합니다... 회사는 각 거래일이 끝날 때 이러한 절차를 수행하며 다음과 같이 보일 것입니다. 히든 스왑.......
앉아서 고민하다..... 스프레드는 거래가 끝나는 날 세션이 끝날 때 매일 상당히 확대됩니다(일일 세션 사이에 휴식을 제공하는 상품, 즉 거의 모든 상품 및 선물 - 거래 방법론의 경우). 명확하지 않습니다. 이러한 상황에서 자본(자금)은 일시적으로 감소하지만 잔액은 감소하지 않습니다. 결국, 포지션은 열린 상태로 유지되며 여기의 잔액은 어떤 식으로든 변경할 수 없습니다. 그리고 이 "확장된" 스프레드가 (새 세션이 시작될 때) 잔액에서 상쇄된다면, 이것은 제 머리에 맞지 않습니다. 매일 저녁 DETAILED REPORT를 저장하고 아침에 '뉴발란스'와 꼼꼼히 비교하는 것이 옳다... 분명히 그렇게.
그리고 빨간색으로 강조 표시된 답변의이 문구는 귀찮게하지 않습니다 ... 다시 한 번 반복합니다. 이것은 어떤 식 으로든 닫힌 거래에 영향을 미치지 않으며 모든 지표는 그대로 유지됩니다. 최종 계정 잔액만 확인됩니다. 물론 이미 마감된 포지션 을 수정하려는 사람은 아무도 없었습니다. 그것은 강도 일 것입니다. 그러나 그들은 열린 곳으로 잘 올라갈 수 있습니다 ... 나는 B에 진짜가 없고... 상관도 없지만 저녁과 아침 균형의 조정을 조정하기 위해 제거하는 것이 좋습니다...
친구 !!!! 그럼에도 불구하고 나는 또 다른 범프를 채우고 지정가 주문을 기반으로 어드바이저를 작성하기로 결정했습니다. 도움이 된다면 기쁠 것입니다. Kimov 함수에 기반한 지정가 주문의 개시는 이미 구현되었습니다. 이제 틱 통계( https://www.mql5.com/ru/forum/125272 )를 기반으로 평균과 편차를 표시하려고 합니다(여전히 더 신뢰할 수 있다고 생각하기 때문에). 가격으로 지정가 주문을 이동하는 모듈과 일정 이익에 도달하면 포지션을 닫는 모듈을 구현해야 합니다.
...... 가격으로 지정가 주문을 이동하는 모듈과 일정 이익에 도달하면 포지션을 청산하는 모듈을 구현해야 할 것입니다.
다음은 이동 주문에 대한 코드입니다. 당신에게서 맥주!
Where, - 함수 ExistOPNearMarket() -//이 함수는 시장 근처에 주문 또는 위치의 존재 플래그를 반환합니다.
// (시장에서 포인트 단위로 주어진 거리에서). 보다 정확한 피감사인 선정
//주문 또는 위치는 외부 매개변수에 의해 설정됩니다.
//sy - 기기 이름. 이 매개변수를 설정하면 기능이
// 지정된 악기의 주문 또는 위치만. "" 또는 NULL은
//현재 악기.
//op - 거래 작업, 주문 또는 위치 유형. 유효한 값: OP_BUY,
// OP_SELL, OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP, OP_SELLSTOP 또는 -1.
//기본값 -1은 모든 거래 작업을 의미합니다.
//mn - 주문 또는 위치 ID(MagicNumber). 기본값 -1
// - 모든 식별자.
//ds - 시장과의 거리(포인트). 기본값은 1000000입니다.
그리고 NumberOfOrders() 함수 -
감사합니다. 크런치는 기간에 관계없이 진드기의 평균을 계산하는 기능을 제공했고 맥주도 약속했습니다. 즉시 상자를 비축해야 합니다. :)))) 젠장, 취하지 않을 거예요 기쁨을 위해 !!!!!
//------------------------
" 친애하는 고객 여러분, 2010년 4월 14일부터 부록 BT-08 계약 1.3.6.에 해당하는 조치가 발효됩니다.
1.3.6. 밸런스 고정.
1.3.6.1. 거래 잔액을 수정하는 프로세스는 스왑이 발생하기 전에 매일 수행됩니다.
절차는 수행된 모든 거래 작업의 재무 결과를 자동으로 계산하고 이 결과를 거래 계정의 현재 잔액과 비교하는 것입니다. 금액 불일치의 경우 거래 계정의 잔액은 불일치 금액만큼 조정됩니다.
이 순간부터 잔액을 고정하는 절차가 매일 수행됩니다.
이 절차를 거친 후 거래 계정의 재무 결과에 불일치가 있는 경우 기술 지원 부서에 문의하여 설명을 요청할 수 있습니다....."
//------------------------------------------------
이해가 안되는데 이게 대체 뭐야?
금액의 차이는 무엇입니까? 이론적으로 어디에서 올 수 있습니까?
그게 다 뭐야?
그리고 - ".... 거래 계정 잔액이 조정됩니다." - 어때요?
실수할까 봐 두렵지만 BT-08 계약서 1.3.6.1항은 회사가 다시 고객을 꼬집을 수 있는 기회를 준다.
이론적 불일치는 어디에서 올 수 있습니까?
옵션 2.
첫째, 주문이 비시장 가격으로 채워진 경우(예: 이상치, 급증 및 기타 실패가 있음) - 회사는 그러한 주문의 운명을 결정하고 "비시장 가격"이 무엇인지 결정합니다. 그러나 이것은 자주 발생하지 않으며 그렇게 무섭지 않습니다.
두 번째 옵션은 거래자에게 더 중요합니다. 고정 시점에 회사가 거래 스프레드를 확장한다고 상상해보십시오. 이것은 귀하의 모든 열린 포지션 에 대해 총 이익이 감소하고 이 차이가 잔액에서 공제된다는 것을 의미합니다... 회사는 각 거래일이 끝날 때 이러한 절차를 수행하고 숨겨진 것처럼 보일 것입니다. 스왑... 젠장, 아니 악마는 회사의 그런 행동을 막을 수 없습니다... 그녀는 CFD의 소유자입니다...
물론 모두가 회사의 품위를 믿고 싶고 그런 속임수는 없을 거라고..., 시간이 말해줄 겁니다... 하지만 해외 소송과 비싼 변호사 비용을 어디선가 찾아야 하는데...
.....
두 번째 옵션은 거래자에게 더 중요합니다. 고정 시점에 회사가 거래 스프레드를 확장한다고 상상해보십시오. 이것은 귀하의 모든 열린 포지션에 대해 총 이익이 감소하고 이 차이가 대차대조표에서 차감된다는 것을 의미합니다... 회사는 각 거래일이 끝날 때 이러한 절차를 수행하며 다음과 같이 보일 것입니다. 히든 스왑.......
앉아서 고민하다.....
스프레드는 거래가 끝나는 날 세션이 끝날 때 매일 상당히 확대됩니다(일일 세션 사이에 휴식을 제공하는 상품, 즉 거의 모든 상품 및 선물 - 거래 방법론의 경우).
명확하지 않습니다. 이러한 상황에서 자본(자금)은 일시적으로 감소하지만 잔액은 감소하지 않습니다.
결국, 포지션은 열린 상태로 유지되며 여기의 잔액은 어떤 식으로든 변경할 수 없습니다.
그리고 이 "확장된" 스프레드가 (새 세션이 시작될 때) 잔액에서 상쇄된다면, 이것은 제 머리에 맞지 않습니다.
매일 저녁 DETAILED REPORT를 저장하고 아침에 '뉴발란스'와 꼼꼼히 비교하는 것이 옳다...
분명히 그렇게.
답변을 받게 됩니다.
http://www.procapital.ru/showthread.php?p=649145#post649145
친구가 기술 지원에 질문을 했습니다.
답변을 받게 됩니다.
http://www.procapital.ru/showthread.php?p=649145#post649145
나는 또한 기술 지원에서 답변을 읽었으므로 끔찍한 일은 없을 것임을 이해합니다(희망)
잔액 = 자기자본 + 미결 포지션 의 총 이익 ...
그리고 빨간색으로 강조 표시된 답변의이 문구는 귀찮게하지 않습니다 ... 다시 한 번 반복합니다. 이것은 어떤 식 으로든 닫힌 거래에 영향을 미치지 않으며 모든 지표는 그대로 유지됩니다. 최종 계정 잔액만 확인됩니다.
물론 이미 마감된 포지션 을 수정하려는 사람은 아무도 없었습니다. 그것은 강도 일 것입니다. 그러나 그들은 열린 곳으로 잘 올라갈 수 있습니다 ...
나는 B에 진짜가 없고... 상관도 없지만 저녁과 아침 균형의 조정을 조정하기 위해 제거하는 것이 좋습니다...