Meta Trader에서 스프레드 거래 - 페이지 142

 

친구 !!!! 그럼에도 불구하고 나는 또 다른 범프를 채우고 지정가 주문을 기반으로 어드바이저를 작성하기로 결정했습니다. 도움이 된다면 기쁠 것입니다. Kimov 함수에 기반한 지정가 주문의 개시는 이미 구현되었습니다. 이제 틱 통계( https://www.mql5.com/ru/forum/125272 )를 기반으로 평균과 편차를 표시하려고 합니다(여전히 더 신뢰할 수 있다고 생각하기 때문에). 가격으로 지정가 주문을 이동하는 모듈과 일정 이익에 도달하면 포지션을 닫는 모듈을 구현해야 합니다.

 
Scorp1978 >> :

...... 가격으로 지정가 주문을 이동하는 모듈과 일정 이익에 도달하면 포지션을 청산하는 모듈을 구현해야 할 것입니다.

다음은 이동 주문에 대한 코드입니다. 당신에게서 맥주!

 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);}                        
 
rid


감사합니다. 크런치는 기간에 관계없이 진드기의 평균을 계산하는 기능을 제공했고 맥주도 약속했습니다. 즉시 상자를 비축해야 합니다. :)))) 젠장, 취하지 않을 거예요 기쁨을 위해 !!!!!

 
오늘 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의 소유자입니다...

물론 모두가 회사의 품위를 믿고 싶고 그런 속임수는 없을 거라고..., 시간이 말해줄 겁니다... 하지만 해외 소송과 비싼 변호사 비용을 어디선가 찾아야 하는데...

 
GEFEL >> :

.....
두 번째 옵션은 거래자에게 더 중요합니다. 고정 시점에 회사가 거래 스프레드를 확장한다고 상상해보십시오. 이것은 귀하의 모든 열린 포지션에 대해 총 이익이 감소하고 이 차이가 대차대조표에서 차감된다는 것을 의미합니다... 회사는 각 거래일이 끝날 때 이러한 절차를 수행하며 다음과 같이 보일 것입니다. 히든 스왑.......

앉아서 고민하다.....
스프레드는 거래가 끝나는 날 세션이 끝날 때 매일 상당히 확대됩니다(일일 세션 사이에 휴식을 제공하는 상품, 즉 거의 모든 상품 및 선물 - 거래 방법론의 경우).
명확하지 않습니다. 이러한 상황에서 자본(자금)은 일시적으로 감소하지만 잔액은 감소하지 않습니다.
결국, 포지션은 열린 상태로 유지되며 여기의 잔액은 어떤 식으로든 변경할 수 없습니다.
그리고 이 "확장된" 스프레드가 (새 세션이 시작될 때) 잔액에서 상쇄된다면, 이것은 제 머리에 맞지 않습니다.
매일 저녁 DETAILED REPORT를 저장하고 아침에 '뉴발란스'와 꼼꼼히 비교하는 것이 옳다...
분명히 그렇게.

 
친구가 기술 지원에 질문을 했습니다.
답변을 받게 됩니다.
http://www.procapital.ru/showthread.php?p=649145#post649145
 
rid писал(а) >>
친구가 기술 지원에 질문을 했습니다.
답변을 받게 됩니다.
http://www.procapital.ru/showthread.php?p=649145#post649145


나는 또한 기술 지원에서 답변을 읽었으므로 끔찍한 일은 없을 것임을 이해합니다(희망)

 

잔액 = 자기자본 + 미결 포지션 의 총 이익 ...

 

그리고 빨간색으로 강조 표시된 답변의이 문구는 귀찮게하지 않습니다 ... 다시 한 번 반복합니다. 이것은 어떤 식 으로든 닫힌 거래에 영향을 미치지 않으며 모든 지표는 그대로 유지됩니다. 최종 계정 잔액만 확인됩니다.
물론 이미 마감된 포지션 을 수정하려는 사람은 아무도 없었습니다. 그것은 강도 일 것입니다. 그러나 그들은 열린 곳으로 잘 올라갈 수 있습니다 ...
나는 B에 진짜가 없고... 상관도 없지만 저녁과 아침 균형의 조정을 조정하기 위해 제거하는 것이 좋습니다...