초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 37

 
ed3sss :

자, 여기 같은 주기가 있습니다. 왜 주문을 마감합니까?)

할 수 있기 때문입니다. 그러나 그것은 여전히 잘못 쓰여 있습니다.
 
Vitalie Postolache :
할 수 있기 때문입니다. 그러나 그것은 여전히 잘못 쓰여 있습니다.
똑똑하게 제안하세요! 당신이 당신의 지식을 신경 쓰지 않는다면.
 
ed3sss :
똑똑하게 제안하세요! 당신이 당신의 지식을 신경 쓰지 않는다면.

아직 개선의 여지가 있는 약간 더 정확한 버전이 있습니다.

         int error= 0 ;
         for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
        { //+----------------------------------------------------------------------------------------+for
         if (! OrderSelect (i, SELECT_BY_POS )) continue ;
         if ( OrderSymbol ()!= Symbol ()) continue ;
         if ( OrderType ()> 1 ) continue ;
         RefreshRates ();
         if (! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 3 ))
          {
           error=_LastError;
           Print ( "Error #" ,error);
          }
         if (error== 6 ){ Alert ( "Нет связи" ); return ( 0 );}
         if (error== 132 ){ Alert ( "Рынок закрыт" ); return ( 0 );}
        }
 
//+----------------------------------------------------------------------------+
//|                                                   i-TotalStopCurrency.mq4  |
//|  21.12.2011  Indicator of the Total Stop in the Deposit Currency.          |
//|              Индикатор суммарного стопа в валюте депозита.                 |
//|  04.05.2012  Добавил способ расчета прибыли для Futures.                   |
//+----------------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 0

//------- Внешние параметры индикатора ----------------------------------------+
extern string symbol   = "" ;
extern color   ecText   = Black;     // Цвет текста
extern int     eiCorner = 3 ;       // Номер угла привязки:
                                   //   0 - левый верхний
                                   //   1 - правый верхний
                                   //   2 - левый нижний
                                   //   3 - правый нижний

//------- Глобальные переменные индикатора ------------------------------------+


//+----------------------------------------------------------------------------+
//|                                                                            |
//|  ПРЕДОПРЕДЕЛЁННЫЕ ФУНКЦИИ                                                  |
//|                                                                            |
//+----------------------------------------------------------------------------+
//|  Custom indicator initialization function                                  |
//+----------------------------------------------------------------------------+
void init() {
   Comment ( "" );
}

//+----------------------------------------------------------------------------+
//|  Custom indicator deinitialization function                                |
//+----------------------------------------------------------------------------+
void deinit() {
   Comment ( "" );
   for ( int i= 0 ; i< 3 ; i++) ObjectDelete ( "iTotalStopCurrency" +i);
}

//+----------------------------------------------------------------------------+
//|  Custom indicator iteration function                                       |
//+----------------------------------------------------------------------------+
void start() {
   double s=ProfitIFStopInCurrency(symbol);
   int pn=ProfitIFStopInCurrency2(symbol);
  
  SetLabel( "iTotalStopCurrency0" , "Уровень стопа" , ecText, 5 , 30 , eiCorner);
  SetLabel( "iTotalStopCurrency1" , DoubleToStr (s, 2 )+ " " + AccountCurrency (), ecText, 5 , 5 , eiCorner);
  SetLabel( "iTotalStopCurrency2" , "Спр=" + DoubleToStr ( MarketInfo ( Symbol (), MODE_SPREAD ), 0 )+ " Орд=" + OrdersTotal ()
  + " Приб="   + DoubleToStr ( AccountProfit (), 2 )+ " Сред=" + DoubleToStr ( AccountEquity (), 2 )+ " Бал=" + DoubleToStr ( AccountBalance (), 2 )+ "  " +pn
  + "пипс " + DoubleToStr (s/ AccountBalance ()* 100 , 2 )+ "%" , ecText, 130 , 5 , eiCorner);
}
//+----------------------------------------------------------------------------+
//|  Версия   : 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 - Futures
   double l;                   // Размер контракта в базовой валюте инструмента
   double p;                   // Размер пункта в валюте котировки
   double t;                   // Минимальный шаг изменения цены инструмента в валюте котировки
   double v;                   // Размер минимального изменения цены инструмента в валюте депозита
   double s= 0 ;                 // Подсчёт стопа в валюте депозита
   double pn= 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 (); pn-=( OrderOpenPrice ()- OrderStopLoss ())* MathPow ( 10 , MarketInfo ( OrderSymbol (), MODE_DIGITS ));
             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 (); pn-=( OrderStopLoss ()- OrderOpenPrice ())* MathPow ( 10 , MarketInfo ( OrderSymbol (), MODE_DIGITS ));
               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);
}
//+----------------------------------------------------------------------------+
double ProfitIFStopInCurrency2( string sy= "" , int op=- 1 , int mn=- 1 ) {
   /*if (sy=="0") */ sy= Symbol ();   // Текущий символ
   int     i, k= OrdersTotal (); // Подсчёт открытых позиций
   int     m;                   // Способ расчета прибыли: 0 - Forex, 1 - CFD, 2 - Futures
   double l;                   // Размер контракта в базовой валюте инструмента
   double p;                   // Размер пункта в валюте котировки
   double t;                   // Минимальный шаг изменения цены инструмента в валюте котировки
   double v;                   // Размер минимального изменения цены инструмента в валюте депозита
   double s= 0 ;                 // Подсчёт стопа в валюте депозита
   double pn= 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 (); pn-=( OrderOpenPrice ()- OrderStopLoss ())* MathPow ( 10 , MarketInfo ( OrderSymbol (), MODE_DIGITS ));
             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 (); pn-=( OrderStopLoss ()- OrderOpenPrice ())* MathPow ( 10 , MarketInfo ( OrderSymbol (), MODE_DIGITS ));
               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 (pn);
}
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка текстовой метки, объект OBJ_LABEL.                   |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    nm - наименование объекта                                               |
//|    tx - текст                                                              |
//|    cl - цвет метки                                                         |
//|    xd - координата X в пикселах                                            |
//|    yd - координата Y в пикселах                                            |
//|    cr - номер угла привязки        (0 - левый верхний )                    |
//|                                     1 - правый верхний                     |
//|                                     2 - левый нижний                       |
//|                                     3 - правый нижний )                    |
//|    fs - размер шрифта              (9 - по умолчанию  )                    |
//+----------------------------------------------------------------------------+
void SetLabel( string nm, string tx, color cl, int xd, int yd, int cr= 0 , int fs= 14 ) {
   if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText (nm, tx, fs);
   ObjectSet (nm, OBJPROP_COLOR     , cl);
   ObjectSet (nm, OBJPROP_XDISTANCE , xd);
   ObjectSet (nm, OBJPROP_YDISTANCE , yd);
   ObjectSet (nm, OBJPROP_CORNER    , cr);
   ObjectSet (nm, OBJPROP_FONTSIZE , fs);
}
//+----------------------------------------------------------------------------+

안녕하세요 !

이 칠면조는 차트에 놓으면 잘 작동합니다.

그러나 터미널을 다시 시작한 후 데이터가 없습니다. 데이터 대신 일부 쓰레기

TF 일정 변경으로 진실 처리

나는 내 지식으로 충분한 모든 것을 시도했습니다. 작동하지 않습니다.

내가 이해하는 한 텍스트 레이블을 설정하는 데 문제가 있습니다. 도와주세요. 미리 감사드립니다!

 
Игорь :
void SetLabel( string nm, string tx, color cl, int xd, int yd, int cr= 0 , int fs= 14 ) {
   if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText (nm, tx, fs);
   ObjectSet (nm, OBJPROP_COLOR     , cl);
   ObjectSet (nm, OBJPROP_XDISTANCE , xd);
   ObjectSet (nm, OBJPROP_YDISTANCE , yd);
   ObjectSet (nm, OBJPROP_CORNER    , cr);
   ObjectSet (nm, OBJPROP_FONTSIZE , fs);
}
//+----------------------------------------------------------------------------+

안녕하세요 !

이 칠면조는 차트에 배치할 때 잘 작동합니다.

그러나 터미널을 다시 시작한 후 데이터가 없습니다. 데이터 대신 일부 쓰레기

TF 일정 변경으로 진실 처리

나는 내 지식으로 충분한 모든 것을 시도했습니다. 작동하지 않습니다.

내가 이해하는 한 텍스트 레이블을 설정하는 데 문제가 있습니다. 도와주세요. 미리 감사드립니다!

어쩌면 그렇게?

void SetLabel( string nm, string tx, color cl, int xd, int yd, int cr= 0 , int fs= 14 ) {
   if ( ObjectFind (nm)< 0 ) {
   ObjectCreate (nm, OBJ_LABEL , 0 , 0 , 0 );
   ObjectSet (nm, OBJPROP_COLOR     , cl);
   ObjectSet (nm, OBJPROP_XDISTANCE , xd);
   ObjectSet (nm, OBJPROP_YDISTANCE , yd);
   ObjectSet (nm, OBJPROP_CORNER    , cr);
   ObjectSet (nm, OBJPROP_FONTSIZE , fs);
  }
   ObjectSetText (nm, tx, fs);
}
 
Vitaly Muzichenko :

어쩌면 그렇게?

void SetLabel( string nm, string tx, color cl, int xd, int yd, int cr= 0 , int fs= 14 ) {
   if ( ObjectFind (nm)< 0 ) {
   ObjectCreate (nm, OBJ_LABEL , 0 , 0 , 0 );
   ObjectSet (nm, OBJPROP_COLOR     , cl);
   ObjectSet (nm, OBJPROP_XDISTANCE , xd);
   ObjectSet (nm, OBJPROP_YDISTANCE , yd);
   ObjectSet (nm, OBJPROP_CORNER    , cr);
   ObjectSet (nm, OBJPROP_FONTSIZE , fs);
  }
   ObjectSetText (nm, tx, fs);
}


관심을 가져주셔서 감사합니다. 하지만 결과는 동일합니다! 다른 것이 잘못되었습니다!

도움이 될 수 있습니다! 어떤 이유에서인지 3번째와 2번째가 제대로 표시되지 않습니다!

TF 규격 변경 후!

파일:
1.jpg  439 kb
 
글쎄, 문제와 함께 같은 사람들을 도우십시오 - 아직 해결되지 않았습니다!
 
안녕하세요. 컴퓨터에 MT4를 설치했습니다. 저는 특별히 D드라이브에 넣었습니다. 하지만 계속 C드라이브에 데이터 가 있는 폴더를 생성합니다 . 평소와 같이 공간이 부족해서 하루에 여러 번 테스트를 할 때 테스터 로그를 정리해야 합니다. 글쎄요, 치명적일 수는 없겠죠? MT4가 다른 디스크에 "데이터 디렉토리" 폴더를 생성하도록 강제하는 방법을 주전자에 알려주십시오. 설정에서 찾을 수 없습니다.
 
VHS :
안녕하세요. 컴퓨터에 MT4를 설치했습니다. 저는 특별히 D드라이브에 넣었습니다. 하지만 계속 C드라이브에 데이터 가 있는 폴더를 생성합니다 . 평소와 같이 공간이 부족해서 하루에 여러 번 테스트를 할 때 테스터 로그를 정리해야 합니다. 글쎄요, 치명적일 수는 없겠죠? MT4가 다른 드라이브에 "데이터 디렉토리" 폴더를 생성하도록 강제하는 방법을 주전자에 알려주실 수 있습니까? 설정에서 찾을 수 없습니다.

물론 저는 프로는 아니지만 심을 도울 방법은 없다고 생각합니다!

Windows에서 디스크를 비우거나 Windows와 함께 모든 것을 재정렬하기만 하면 더 많은 작업을 수행할 수 있습니다!

 
VHS :
안녕하세요. 컴퓨터에 MT4를 설치했습니다. 저는 특별히 D드라이브에 넣었습니다. 하지만 계속 C드라이브에 데이터 가 있는 폴더를 생성합니다 . 평소와 같이 공간이 부족해서 하루에 여러 번 테스트를 할 때 테스터 로그를 정리해야 합니다. 글쎄요, 치명적일 수는 없겠죠? MT4가 다른 디스크에 "데이터 디렉토리" 폴더를 생성하도록 강제하는 방법을 주전자에 알려주십시오. 설정에서 찾을 수 없습니다.
그리고 당신은 아마도 검색을 사용하는 방법을 모를 것입니다. /portable 모드에 대해서는 이미 이 포럼과 다른 포럼에서 수없이 작성되었습니다. 문제는 3년 동안 이런 식이었습니다.
사유: