사이드바를 열면 레이블이 화면에서 오른쪽으로 사라집니다. 로그에서 새로 고침 버튼을 클릭하면 표시기가 작동하는 것을 볼 수 있지만 레이블은 반환되지 않고 두 번째 시도에서만 나타납니다. OnCalculate가 매번 호출되지 않는 것으로 나타났습니까? 기능을 영구적으로 실행하는 방법은 무엇입니까?
사이드바를 열면 레이블이 화면에서 오른쪽으로 사라집니다. 로그에서 새로 고침 버튼을 클릭하면 표시기가 작동하는 것을 볼 수 있지만 레이블은 반환되지 않고 두 번째 시도에서만 나타납니다. OnCalculate가 매번 호출되지 않는 것으로 나타났습니까? 기능을 영구적으로 실행하는 방법은 무엇입니까?
OnChartEvent 에서 폴링 및 다시 그리기 수행 - CHARTEVENT_CHART_CHANGE
상담원의 취업 허가증을 확인하십시오. 그리고 인쇄물의 출력은 어디에 있습니까? 이 코드 조각은 오류가 없기 때문에 무언가를 반환하는 것 같으며 문제는 이 코드 조각 외부에 있습니다. 이 부분에서 0으로 나누기가 발생할 수 있다는 점을 제외하고
전체 코드? 네 지금 요 .
//+------------------------------------------------------------------+//| Stop_Ma_v5.1.mq4 |//| Copyright 2018, axe44 |//| http://axe44.opentraders.ru/bio/ |//+------------------------------------------------------------------+#property copyright"Copyright 2018,@ axe44"#property link"gerchikco.com/registration/?ref=sfaCLYmR"#property version"5.10"#property strict//--- Inputsexterndouble Lots = 0.1 ; // Lots лотexternbool Z_schet = 1 ; // Z_schet з-тенденцияexternint Expir = 20 ; // Expir истечение в часахexterndouble klot = 1.5 ; // klot - множитель тенденцииexternint StopLoss = 200 ; // StopLoss лосьexternint TakeProfit = 300 ; // TakeProfit язьexternint BULevel = 0 ; // BULevel уровень БУexternint BUPoint = 3 ; // BUPoint пункты БУexternint Spred = 4 ; // Spred спред externint TrailingStop = 0 ; // TrailingStop тралinputENUM_TIMEFRAMES TF1 = PERIOD_M15 ; //TF1 Время АТРexternint Stop = 14 ; // Stop Периуд Stop//extern int Atr_Procent = 20; //Atr_Procent Максимальный процент АТР для работыinputENUM_TIMEFRAMES TF2 = PERIOD_M15 ; //TF2 Время Ма открытия\закрытия //extern int Pr = 50; // Pr Процент разницы движения.externint MA = 14 ; //MA Периуд MAexternint MaM = 3 ; //MaM способ расчёта Ма externint StartHour = 0 ; //StartHour час начала торговлиexternint StartMin = 30 ; //StartMin минута начала торговлиexternint EndHour = 23 ; //EndHour час окончания торговлиexternint EndMin = 30 ; //EndMin минута окончания торговлиexternint Slip = 30 ; //Slip реквотexternint Magic = 124 ; //Magic магикexternint TesterMinPercentProfitTrades= 50 ;
externint AutoLot = 1 ; // автолотdouble atr,ma,rm,pm,minatr,lot,hma,lma,min,max,zn,C,pribul;
double NormalP[ 302 ];
int i,count,prom,index,psd,usd;
datetime t= 1 ,day,hour;
bool ww,nn,bb,ss;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit ()
{
//---if ( Digits == 3 || Digits == 5 )
{
TakeProfit*= 10 ;
StopLoss*= 10 ;
TrailingStop*= 10 ;
BUPoint*= 10 ;
BULevel*= 10 ;
Slip*= 10 ;
Spred*= 10 ;
}
//---return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| расчёт лота |//+------------------------------------------------------------------+double MoneyManagement()
{
double DynamicLot= 0 ;
double Free_Equity= AccountEquity ();
if (Free_Equity<= 0 ) return ( 0 );
double TickValue= MarketInfo ( Symbol (), MODE_TICKVALUE );
double LotStep= MarketInfo ( Symbol (), MODE_LOTSTEP );
double MinLot= MarketInfo ( Symbol (), MODE_MINLOT );
double MxLot= MarketInfo ( Symbol (), MODE_MAXLOT );
if (TickValue*LotStep!= 0 ) DynamicLot= MathFloor ((Free_Equity* MathMin (AutoLot/ 10 , 100 )/ 1000 )/StopLoss*TickValue/LotStep)*LotStep;
if (DynamicLot<MinLot)DynamicLot=MinLot;
if (DynamicLot>MxLot)DynamicLot=MxLot;
return (DynamicLot);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
Comment ( "" );
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 30.04.2009 |//| Описание : Возвращает флаг разрешения торговли по времени. |//+----------------------------------------------------------------------------+//| Параметры: |//| hb - часы времени начала торговли |//| mb - минуты времени начала торговли |//| he - часы времени окончания торговли |//| me - минуты времени окончания торговли |//+----------------------------------------------------------------------------+bool isTradeTimeInt( int hb= 0 , int mb= 0 , int he= 0 , int me= 0 )
{
datetime db, de; // Время начала и окончания работыint hc; // Часы текущего времени торгового сервера
db= StrToTime ( TimeToStr ( TimeCurrent (), TIME_DATE )+ " " +( string )hb+ ":" +( string )mb);
de= StrToTime ( TimeToStr ( TimeCurrent (), TIME_DATE )+ " " +( string )he+ ":" +( string )me);
hc= TimeHour ( TimeCurrent ());
if (db>=de)
{
if (hc>=he) de+= 24 * 60 * 60 ; else db-= 24 * 60 * 60 ;
}
if ( TimeCurrent ()>=db && TimeCurrent ()<=de) return ( True );
elsereturn ( False );
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void PutOrder( int type, double price)
{
int r= 0 ;
color clr=Green;
double sl= 0 ,tp= 0 ;
if (type== 1 || type== 3 || type== 5 )
{
clr=Red;
if (StopLoss> 0 ) sl= NormalizeDouble (price+StopLoss* Point , Digits );
if (TakeProfit> 0 ) tp= NormalizeDouble (price-TakeProfit* Point , Digits );
}
if (type== 0 || type== 2 || type== 4 )
{
clr=Blue;
if (StopLoss> 0 ) sl= NormalizeDouble (price-StopLoss* Point , Digits );
if (TakeProfit> 0 ) tp= NormalizeDouble (price+TakeProfit* Point , Digits );
}
if (AutoLot> 0 ){lot=MoneyManagement();}
if (AutoLot<= 0 ){lot=Lots;}
r= OrderSend ( NULL ,type,lot, NormalizeDouble (price, Digits ),Slip,sl,tp, "" ,Magic, TimeCurrent ()+Expir* 60 * 60 ,clr);
return ;
}
//+------------------------------------------------------------------+//| история |//+------------------------------------------------------------------+double history()
{
if ( OrderSelect ( OrdersHistoryTotal ()- 1 , SELECT_BY_POS , MODE_HISTORY ))
{
pribul= OrderProfit ();
}
return (pribul);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int CountOrders( int type)
{
count= 0 ;
for ( i= OrdersTotal ()- 1 ;i>= 0 ;i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
{
if ( OrderType ()==type) count++;
}
}
}
return (count);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int CountTrades()
{
count= 0 ;
for ( i= OrdersTotal ()- 1 ;i>= 0 ;i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
{
if ( OrderType ()< 2 ) count++;
}
}
}
return (count);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+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 ( 0 ); // берём не менее 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 = количество чередований в выборке (чередованием считается каждая пара сделок,
когда прибыльная сделка сменяет убыточную либо наоборот).
*/
index=psd+usd;
if (index< 30 ) return ( 0 );
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);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Trailing()
{
bool mod;
for ( i= OrdersTotal ()- 1 ;i>= 0 ;i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
{
if ( OrderType ()== OP_BUY )
{
if ( Bid - OrderOpenPrice ()>TrailingStop* Point )
{
if (( OrderStopLoss ()<( Bid -TrailingStop* Point )) || ( OrderStopLoss ()== 0 ))
{
mod= OrderModify ( OrderTicket (), OrderOpenPrice (), Bid -TrailingStop* Point , OrderTakeProfit (), 0 ,Yellow);
return ;
}
}
}
if ( OrderType ()== OP_SELL )
{
if (( OrderOpenPrice ()- Ask )>TrailingStop* Point )
{
if (( OrderStopLoss ()>( Ask +TrailingStop* Point )) || ( OrderStopLoss ()== 0 ))
{
mod= OrderModify ( OrderTicket (), OrderOpenPrice (), Ask +TrailingStop* Point , OrderTakeProfit (), 0 ,Yellow);
return ;
}
}
}
}
}
}
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void BU()
{
bool m;
for ( i= OrdersTotal ()- 1 ;i>= 0 ;i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
{
if ( OrderType ()== OP_BUY )
{
if ( OrderOpenPrice ()<=( Bid -(BULevel+BUPoint)* Point ) && OrderOpenPrice ()> OrderStopLoss ())
{
m= OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice ()+BUPoint* Point , OrderTakeProfit (), 0 ,Yellow);
}
}
if ( OrderType ()== OP_SELL )
{
if ( OrderOpenPrice ()>=( Ask +(BULevel+BUPoint)* Point ) && ( OrderOpenPrice ()< OrderStopLoss () || OrderStopLoss ()== 0 ))
{
m= OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice ()-BUPoint* Point , OrderTakeProfit (), 0 ,Yellow);
}
}
}
}
}
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void CloseAll( int ot=- 1 )
{
bool cl;
for ( i= OrdersTotal ()- 1 ;i>= 0 ;i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
{
if ( OrderType ()== 0 && (ot== 0 || ot==- 1 ))
{
RefreshRates ();
cl= OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( Bid , Digits ),Slip,White);
}
if ( OrderType ()== 1 && (ot== 1 || ot==- 1 ))
{
RefreshRates ();
cl= OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( Ask , Digits ),Slip,White);
}
}
}
}
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick ()
{
if (t!= Time [ 0 ]&&( Ask - Bid )<Spred* Point )
{
ww= 1 ;
nn= 1 ;
t= Time [ 0 ];
if (TrailingStop> 0 ) Trailing();
if (BULevel> 0 ) BU();
rm = iMA ( NULL ,TF2,MA, 0 ,MaM, 0 , 1 )- iMA ( NULL ,TF2,MA, 0 ,MaM, 1 , 1 );
pm = iMA ( NULL ,TF2,MA, 0 ,MaM, 0 , 2 )- iMA ( NULL ,TF2,MA, 0 ,MaM, 1 , 2 );
// Stop//---- maximums counting
hma = High [ iHighest ( NULL , 0 , MODE_HIGH ,Stop, 1 )];
lma = Low [ iLowest ( NULL , 0 , MODE_LOW ,Stop, 1 )];
//----//Print("hma ",hma);//Print("lma ",lma);//if ( Znomer()!=0) {zn=Znomer();Print("== Z-счёт равен = ",zn);}
}
if (ww== 1 && pm< 0 && rm> 0 && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin)) { if ( Ask <hma)PutOrder( 4 ,hma);
if ( Bid >lma)PutOrder( 5 ,lma);
ww= 0 ;} // Если цена раньше падала а теперь растётif (nn== 1 && pm> 0 && rm< 0 && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin)) { if ( Ask <hma)PutOrder( 4 ,hma);
if ( Bid >lma)PutOrder( 5 ,lma);
nn= 0 ;}
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Tester function |//+------------------------------------------------------------------+doubleOnTester ()
{
double PercentProfitTrades = 0 ;
if ( TesterStatistics ( STAT_PROFIT_TRADES ) > 0 )
PercentProfitTrades = TesterStatistics ( STAT_PROFIT_TRADES ) / TesterStatistics ( STAT_TRADES ) * 100 ;
if (PercentProfitTrades >= TesterMinPercentProfitTrades)
return ( NormalizeDouble (( TesterStatistics ( STAT_PROFIT ) / TesterStatistics ( STAT_EQUITY_DD )), 2 ));
elsereturn ( 0 );
}
//+------------------------------------------------------------------+
378행은 동일한 인쇄이며 활성화되면 EA가 더 이상 작동하지 않습니다.
221행과 223행의 코드 디자인에 오류가 있는 것 같다. 아무도 히스토리 열거를 사용하지 않으며 예제가 거의 없으므로 실수가 가능합니다. https://www.mql5.com/en/code/7452 페이지에 한 가지 예가 있지만 저에게는 너무 복잡합니다. Znomer() 함수에서 0 으로 나누기, 206행, 제외했습니다.
Включаемый файл Z_include.mqh содержит функцию, которая вычисляет на массиве данных следующие параметры: Max - максимальное значение;Min - минимальное значение;матожидание - среднее значение;стандартное отклонение - среднеквадратичное отклонение (несмещенную оценку);скос;эксцесс;Z-счет на массиве данных. Описание понятия Z -счет смотрите в...
221행과 223행의 코드 디자인에 오류가 있는 것 같다. 아무도 히스토리 열거를 사용하지 않으며 예제가 거의 없으므로 실수가 가능합니다. https://www.mql5.com/en/code/7452 페이지에 한 가지 예가 있지만 저에게는 너무 복잡합니다. Znomer() 함수에서 0 으로 나누기, 206행, 제외했습니다.
그럼 질문 하나 더 :-)
가격이 있는 레이블을 이동하기 전에 현재 화면 너비를 사용하여 수평 위치를 계산합니다.
x=width - 70 ;
사이드바를 열면 레이블이 화면에서 오른쪽으로 사라집니다. 로그에서 새로 고침 버튼을 클릭하면 표시기가 작동하는 것을 볼 수 있지만 레이블은 반환되지 않고 두 번째 시도에서만 나타납니다. OnCalculate가 매번 호출되지 않는 것으로 나타났습니까? 기능을 영구적으로 실행하는 방법은 무엇입니까?
그럼 질문 하나 더 :-)
가격이 있는 레이블을 이동하기 전에 현재 화면 너비를 사용하여 수평 위치를 계산합니다.
사이드바를 열면 레이블이 화면에서 오른쪽으로 사라집니다. 로그에서 새로 고침 버튼을 클릭하면 표시기가 작동하는 것을 볼 수 있지만 레이블은 반환되지 않고 두 번째 시도에서만 나타납니다. OnCalculate가 매번 호출되지 않는 것으로 나타났습니까? 기능을 영구적으로 실행하는 방법은 무엇입니까?
OnChartEvent 에서 폴링 및 다시 그리기 수행 - CHARTEVENT_CHART_CHANGE
인사말. 말해 주세요.
표시기가 차트에 화살표를 그리고 화살표가 개체가 아닌 경우 차트 자체에서 또는 다른 방법으로 이러한 도면의 매개변수를 가져올 수 있습니까? 버퍼에서 데이터를 가져오고 테스트를 위해 표시기를 정상적으로 시작할 수도 없습니다.
인사말. 말해 주세요.
표시기가 차트에 화살표를 그리고 화살표가 개체가 아닌 경우 차트 자체에서 또는 다른 방법으로 이러한 그리기에 대한 매개변수를 가져올 수 있습니까? 버퍼에서 데이터를 가져오고 테스트를 위해 표시기를 정상적으로 시작할 수도 없습니다.
표시 코드가 있습니까?
표시 코드가 있습니까?
아니요
여기에서 데이터를 가져오려는 시도와 지표 자체에 대해 논의했습니다.
https://www.mql5.com/ru/forum/160587/page165#comment_10221621
교과서 에서 예제를 공부하고 있는데 그 중 하나가 한 줄에 컴파일되지 않습니다.
'MQL5_PROGRAM_NAME' - 열거형을 변환할 수 없습니다. 마우스_2.mq5 29 52
상담원의 취업 허가증을 확인하십시오. 그리고 인쇄물의 출력은 어디에 있습니까? 이 코드 조각은 오류가 없기 때문에 무언가를 반환하는 것 같으며 문제는 이 코드 조각 외부에 있습니다. 이 부분에서 0으로 나누기가 발생할 수 있다는 점을 제외하고
전체 코드? 네 지금 요 .
378행은 동일한 인쇄이며 활성화되면 EA가 더 이상 작동하지 않습니다.
221행과 223행의 코드 디자인에 오류가 있는 것 같다. 아무도 히스토리 열거를 사용하지 않으며 예제가 거의 없으므로 실수가 가능합니다. https://www.mql5.com/en/code/7452 페이지에 한 가지 예가 있지만 저에게는 너무 복잡합니다.
Znomer() 함수에서 0 으로 나누기, 206행, 제외했습니다.
지시와 권고를 기다리겠습니다. 고맙습니다.
아니요
여기에서 데이터를 가져오려는 시도와 지표 자체에 대해 논의했습니다.
https://www.mql5.com/en/forum/160587/page165#comment_10221621
죄송합니다. 저는 기본적으로 컴퓨터에서 .dll을 실행하지 않습니다. 나 없이 계속하십시오.
지표만 있을 뿐입니다. 매개변수에 사용될 때 두 번째 매개변수의 사용을 비활성화합니다.
전체 코드? 네 지금 요 .
378행은 동일한 인쇄이며 활성화되면 EA가 더 이상 작동하지 않습니다.
221행과 223행의 코드 디자인에 오류가 있는 것 같다. 아무도 히스토리 열거를 사용하지 않으며 예제가 거의 없으므로 실수가 가능합니다. https://www.mql5.com/en/code/7452 페이지에 한 가지 예가 있지만 저에게는 너무 복잡합니다.
Znomer() 함수에서 0 으로 나누기, 206행, 제외했습니다.
지시와 권고를 기다리겠습니다. 고맙습니다.
수식에 추가 (( 2 *psd*usd)*(( 2 *psd*usd)-C))/(C- 1 )) .
지수: ^0.5는 *0.5가 아닙니다.
본 심볼과 마법에 대한 단일 거래가 없거나 수익 또는 손실 거래가 하나도 없거나 한 쌍(C=1)만 있는 경우 0으로 나눕니다.
공식 자체 전에 psd와 usd가 > 0이고 C !=1인지 확인해야 합니다.
수익성이 있는 것은 이익 > 1, 무익한 것 < 1, 이익 = 1인 것으로 간주됩니다. 즉, 1도 한 그룹 또는 다른 그룹의 어딘가에 포함되어야 합니다.
함수에서 먼저 기호와 마법과 일치하는 거래 번호를 선택한 다음 번호가 변경되었는지 확인하고 변경되었으면 zn을 다시 계산하고 그렇지 않으면 zn을 반환합니다(이 경우 zn을 재설정하지 않고 확인 != 인쇄가 필요하지 않은 경우 0)
올빼미는 변수 ww와 nn에 의존하기 때문에 작동을 멈춥니다. 함수가 시작되면 올빼미 알고리즘이 변경되고 파괴됩니다.
코드 서식 오류가 있으면 아무 것도 컴파일되지 않습니다.