//+----------------------------------------------------------------------------+ //| 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_buffers0
//------- Внешние параметры индикатора ----------------------------------------+ externstring symbol = "" ; externcolor ecText = Black; // Цвет текста externint eiCorner = 3 ; // Номер угла привязки: // 0 - левый верхний // 1 - правый верхний // 2 - левый нижний // 3 - правый нижний
안녕하세요. 컴퓨터에 MT4를 설치했습니다. 저는 특별히 D드라이브에 넣었습니다. 하지만 계속 C드라이브에 데이터 가 있는 폴더를 생성합니다 . 평소와 같이 공간이 부족해서 하루에 여러 번 테스트를 할 때 테스터 로그를 정리해야 합니다. 글쎄요, 치명적일 수는 없겠죠? MT4가 다른 디스크에 "데이터 디렉토리" 폴더를 생성하도록 강제하는 방법을 주전자에 알려주십시오. 설정에서 찾을 수 없습니다.
VHS : 안녕하세요. 컴퓨터에 MT4를 설치했습니다. 저는 특별히 D드라이브에 넣었습니다. 하지만 계속 C드라이브에 데이터 가 있는 폴더를 생성합니다 . 평소와 같이 공간이 부족해서 하루에 여러 번 테스트를 할 때 테스터 로그를 정리해야 합니다. 글쎄요, 치명적일 수는 없겠죠? MT4가 다른 드라이브에 "데이터 디렉토리" 폴더를 생성하도록 강제하는 방법을 주전자에 알려주실 수 있습니까? 설정에서 찾을 수 없습니다.
물론 저는 프로는 아니지만 심을 도울 방법은 없다고 생각합니다!
Windows에서 디스크를 비우거나 Windows와 함께 모든 것을 재정렬하기만 하면 더 많은 작업을 수행할 수 있습니다!
VHS : 안녕하세요. 컴퓨터에 MT4를 설치했습니다. 저는 특별히 D드라이브에 넣었습니다. 하지만 계속 C드라이브에 데이터 가 있는 폴더를 생성합니다 . 평소와 같이 공간이 부족해서 하루에 여러 번 테스트를 할 때 테스터 로그를 정리해야 합니다. 글쎄요, 치명적일 수는 없겠죠? MT4가 다른 디스크에 "데이터 디렉토리" 폴더를 생성하도록 강제하는 방법을 주전자에 알려주십시오. 설정에서 찾을 수 없습니다.
그리고 당신은 아마도 검색을 사용하는 방법을 모를 것입니다. /portable 모드에 대해서는 이미 이 포럼과 다른 포럼에서 수없이 작성되었습니다. 문제는 3년 동안 이런 식이었습니다.
자, 여기 같은 주기가 있습니다. 왜 주문을 마감합니까?)
할 수 있기 때문입니다. 그러나 그것은 여전히 잘못 쓰여 있습니다.
똑똑하게 제안하세요! 당신이 당신의 지식을 신경 쓰지 않는다면.
아직 개선의 여지가 있는 약간 더 정확한 버전이 있습니다.
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 일정 변경으로 진실 처리
나는 내 지식으로 충분한 모든 것을 시도했습니다. 작동하지 않습니다.
내가 이해하는 한 텍스트 레이블을 설정하는 데 문제가 있습니다. 도와주세요. 미리 감사드립니다!
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 일정 변경으로 진실 처리
나는 내 지식으로 충분한 모든 것을 시도했습니다. 작동하지 않습니다.
내가 이해하는 한 텍스트 레이블을 설정하는 데 문제가 있습니다. 도와주세요. 미리 감사드립니다!
어쩌면 그렇게?
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);
}
어쩌면 그렇게?
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 규격 변경 후!
안녕하세요. 컴퓨터에 MT4를 설치했습니다. 저는 특별히 D드라이브에 넣었습니다. 하지만 계속 C드라이브에 데이터 가 있는 폴더를 생성합니다 . 평소와 같이 공간이 부족해서 하루에 여러 번 테스트를 할 때 테스터 로그를 정리해야 합니다. 글쎄요, 치명적일 수는 없겠죠? MT4가 다른 드라이브에 "데이터 디렉토리" 폴더를 생성하도록 강제하는 방법을 주전자에 알려주실 수 있습니까? 설정에서 찾을 수 없습니다.
물론 저는 프로는 아니지만 심을 도울 방법은 없다고 생각합니다!
Windows에서 디스크를 비우거나 Windows와 함께 모든 것을 재정렬하기만 하면 더 많은 작업을 수행할 수 있습니다!
안녕하세요. 컴퓨터에 MT4를 설치했습니다. 저는 특별히 D드라이브에 넣었습니다. 하지만 계속 C드라이브에 데이터 가 있는 폴더를 생성합니다 . 평소와 같이 공간이 부족해서 하루에 여러 번 테스트를 할 때 테스터 로그를 정리해야 합니다. 글쎄요, 치명적일 수는 없겠죠? MT4가 다른 디스크에 "데이터 디렉토리" 폴더를 생성하도록 강제하는 방법을 주전자에 알려주십시오. 설정에서 찾을 수 없습니다.