MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 733

 
Alexey Viktorov :
동의한다. 그러나 이것이 "계정 내역"이 아니라 "거래" 창임을 이해하려면 여전히 시도해야 합니다. 부주의와 게으름으로 머리의 근육을 긴장시키지 않고 이것이 "계정 내역"창이라고 결정했습니다.

그것은 일어난다. 용서할 수 있는.

 

5자리 기호를 읽기 불편해서 차트에서 표준입찰선을 비활성화 시켰고, 상단에 4자리를 넣었는데 가끔 가격이 내려가서 또 불편을 겪습니다 :-)

레이블 개체를 가격과 함께 움직이게 하고 싶은데 프레임 때문에 올바른 가격 레이블 OBJ_ARROW_RIGHT_PRICE 가 마음에 들지 않습니다.

하지만 어떤 이유로 입찰 가격에 의한 포지셔닝이 작동하지 않고 레이블이 왼쪽 상단에 표시됩니다


 //+------------------------------------------------------------------+
//|                                              CandleTimeStationary|
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property strict

//---- input parameters
input color Clock_Color = clrCrimson ;

string objname= "Bid" ;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
         ObjectCreate ( 0 , objname, OBJ_LABEL , 0 , 0 , 0 );
        
    

         return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
void OnDeinit ( const int reason) { ObjectDelete ( 0 , objname); } 

//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total, const int prev_calculated, const datetime & time[], const double & open[], const double & high[], const double & low[], const double & close[], const long & tick_volume[], const long & volume[], const int & spreads[])
{

         ObjectSetDouble ( 0 , objname, OBJPROP_PRICE , SymbolInfoDouble ( Symbol (), SYMBOL_BID ));     
         ObjectSetString ( 0 , objname, OBJPROP_TEXT , DoubleToString ( SymbolInfoDouble ( Symbol (), SYMBOL_BID ), _Digits - 1 ));
         ObjectSetInteger ( 0 , objname, OBJPROP_FONTSIZE , 12 );
         ObjectSetInteger ( 0 , objname, OBJPROP_COLOR , Clock_Color);
         ObjectSetString ( 0 , objname, OBJPROP_FONT , "Verdana" );
        
         return (rates_total);
}
 
psyman :

5자리 기호를 읽기 불편해서 차트에서 표준입찰선을 비활성화 시켰고, 상단에 4자리를 넣었는데 가끔 가격이 내려가서 또 불편을 겪습니다 :-)

레이블 개체를 가격과 함께 움직이게 하고 싶은데 프레임 때문에 올바른 가격 레이블 OBJ_ARROW_RIGHT_PRICE 가 마음에 들지 않습니다.

하지만 어떤 이유로 입찰 가격에 의한 포지셔닝이 작동하지 않고 레이블이 왼쪽 상단에 표시됩니다


OBJ_LABEL 의 경우 위치 보고서는 픽셀 단위로 제공됩니다.

ChartTimePriceToXY ( 0 , 0 , TimeCurrent (), Bid , x, y); // x, y добавьте в переменные, тип int
ObjectSetInteger ( 0 , objname, OBJPROP_YDISTANCE , ulong (y)); //если на эту строчку будет предупреждение в компиляторе то, значит ulong ненужен
//ObjectSetDouble(0, objname, OBJPROP_PRICE, SymbolInfoDouble(Symbol(), SYMBOL_BID));
ObjectSetString ( 0 , objname, OBJPROP_TEXT , DoubleToString ( Bid , _Digits - 1 ));
 
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

double Znomer()
{
zn= 0 ; // z-число
psd= 0 ; // кол. положительных сделок
usd= 0 ; // количество отрицательных сделок 
ww= 0 ; // боол переменная 
nn= 0 ; // боол переменная
C= 0 ; // C = количество чередований между отрицательными и положительными сделками
index= OrdersHistoryTotal (); 
if ( OrdersHistoryTotal ()> 302 ) index= 301 ; // берём не более 301 сделки
if (index< 30 ) return ( 1 ); // берём не менее 30
count= OrdersHistoryTotal (); // считаем от скольки 
prom=count-index; // выделяем только последние сделки
if (prom< 0 ) prom= 0 ; // исключаем ошибки

for ( i=count;i>prom;i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )== true )
{
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
{ // далее магия
pribul= OrderProfit (); 
if (ww== 0 &&pribul> 1 ){C++;ww= 1 ;nn= 0 ;} // подсчитываем смену тенденции
if (nn== 0 &&pribul< 1 ){C++;ww= 0 ;nn= 1 ;} // подсчитываем смену тенденции 
if (pribul> 1 ){psd++;} //прибыльные сделки
if (pribul< 1 ){usd++;} // убыточные сделки

}
}
}
/*/*
Величина Z = (A * (C — 0.5) — B)/ ((B*(B — C))/(C -1))^(1/2), где:
A = количество анализируемых сделок;
B = 2*количество прибыльных сделок * количество убыточных сделок;
C = количество чередований в выборке (чередованием считается каждая пара сделок, 
когда прибыльная сделка сменяет убыточную либо наоборот).
*/
zn = (index*(C- 0.5 )-( 2 *psd*usd))/
(((( 2 *psd*usd)*(( 2 *psd*usd)-C))/
(C- 1 ))*(((( 2 *psd*usd)*(( 2 *psd*usd)-C))/
(C- 1 ))* 0.5 ));



return (zn);
}

계정에서 배수 경향을 계산하기 위해 간단한 코드를 스케치하기로 결정했습니다. 이를 위해 간단한 Z-점수 공식을 가져와서 mq4 코드로 옮기려고 했습니다.
다 제대로 썼는데 Print를 통해 간단한 출력을 시작하자마자 어드바이저가 바로 작동하지 않습니다. 컴파일하는 동안 오류가 없습니다.
나는 이미 간단한 코드로 내 머리를 깨뜨렸다.

도움이 되셨다면 감사합니다!

 
Aliaksei Karalkou :

계정에서 배수 경향을 계산하기 위해 간단한 코드를 스케치하기로 결정했습니다. 이를 위해 간단한 Z-점수 공식을 가져와서 mq4 코드로 옮기려고 했습니다.
다 제대로 썼는데 Print를 통해 간단한 출력을 시작하자마자 어드바이저가 바로 작동하지 않습니다. 컴파일하는 동안 오류가 없습니다.
나는 이미 간단한 코드로 내 머리를 깨뜨렸다.

도움이 되셨다면 감사합니다!

상담원의 취업 허가증을 확인하십시오. 그리고 인쇄물의 출력은 어디에 있습니까? 이 코드 조각은 오류가 없기 때문에 무언가를 반환하는 것 같으며 문제는 이 코드 조각 외부에 있습니다. 이 조각에서 0으로 나눌 수 있다는 점을 제외하고

 
Ilya Prozumentov :

OBJ_LABEL 의 경우 위치 보고서는 픽셀 단위로 제공됩니다.

Ilya, 감사합니다. 효과가 있었습니다.

창 크기 조정을 고려하여 다음 단계로 이동할 때만 컴파일러는 데이터 유형 변환 경고를 발행합니다.

 int width = ChartGetInteger ( 0 , CHART_WIDTH_IN_PIXELS , 0 );

유형 변환으로 인한 데이터 손실 가능성 4digit+.mq5 36 십사


함수가 int 유형을 반환하지만.


 
psyman :

Ilya, 감사합니다. 효과가 있었습니다.

창 크기 조정을 고려하여 다음 단계로 이동할 때만 컴파일러는 데이터 유형 변환 경고를 발행합니다.

유형 변환으로 인한 데이터 손실 가능성 4digit+.mq5 36 십사


함수가 int 유형을 반환하지만.


함수는 long 유형을 반환합니다.
 
novichok2018 :

야아?! 그리고 주문이 마감되었음을 어디에서 볼 수 있습니까?

"거래" 창의 녹색 TP는 현재 가격 이 TP에서 -100핍을 넘지 않았음을 의미합니다. 더 정확하게는 TP에서 100핍 이내에 있습니다.

감사하다!
 
Artyom Trishkin :
함수는 long 유형을 반환합니다.

이러한 경우에 어떻게 하는 것이 좋습니까? 변수의 유형을 변경하거나 그대로 두십시오.

 
psyman :

이러한 경우에 어떻게 하는 것이 좋습니까? 변수의 유형을 변경하거나 그대로 두십시오.

 int width = ( int ) ChartGetInteger ( 0 , CHART_WIDTH_IN_PIXELS , 0 );