나는 당신이 가지고 있는 ZigZag 정점 검색 코드의 일부를 보았습니다. Igor Kim이 보낸 것 같습니다. 여기에 극한값 검색 코드를 삽입하고 찾은 극값의 시간을 추가로 절약합니다. 당신은 사이클에서 그것을 찾고 있습니다 ... 당신이 그것을 찾을 때 극값이 이미 발견되었을 때 사이클 인덱스에 표시된 시간을 기억하십시오 - 가격 값을 반환 하기 전에. 즉, 함수를 참조하여 datetime 변수를 추가로 전달하여 지그재그 극값을 찾은 시간을 기록합니다. 함수가 가격 값을 반환할 때 이 변수에 원하는 지그재그 극한값이 있는 막대가 열리는 시간 값을 추가로 입력합니다.
안녕하세요! MQL4에서는 약간 작성하지만 MQL5에서는 완전히 0입니다. 하루에 높고 낮음의 차이를 계산할 작은 조수를 작성할 필요가 있었습니다. 4차 버전에서는 이를 위한 좋은 iHigh 및 iLow 기능이 있지만 여기서는 누락된 것을 발견했습니다. copyHigh와 copyLow를 사용해 보았지만 최대값에서 최소값을 빼면 많은 오류가 발생합니다. 가급적이면 코드를 사용하여 이 문제를 해결하는 방법을 알려주십시오. 미리 감사드립니다!
Александр Богданов : 안녕하세요! MQL4에서는 약간 작성하지만 MQL5에서는 완전히 0입니다. 하루에 높고 낮음의 차이를 계산할 작은 조수를 작성할 필요가 있었습니다. 4차 버전에서는 이를 위한 좋은 iHigh 및 iLow 기능이 있지만 여기서는 누락된 것을 발견했습니다. copyHigh와 copyLow를 사용해 보았지만 최대값에서 최소값을 빼면 많은 오류가 발생합니다. 가급적이면 코드를 사용하여 이 문제를 해결하는 방법을 알려주십시오. 미리 감사드립니다!
Александр Богданов : 안녕하세요! MQL4에서는 약간 작성하지만 MQL5에서는 완전히 0입니다. 하루에 높고 낮음의 차이를 계산할 작은 조수를 작성할 필요가 있었습니다. 4차 버전에서는 이를 위한 좋은 iHigh 및 iLow 기능이 있지만 여기서는 누락된 것을 발견했습니다. copyHigh와 copyLow를 사용해 보았지만 최대값에서 최소값을 빼면 많은 오류가 발생합니다. 가급적이면 코드를 사용하여 이 문제를 해결하는 방법을 알려주십시오. 미리 감사드립니다!
// Позволяет, как в MT4, работать с таймсериями: Open[Pos], High[Pos], Low[Pos], Close[Pos], Time[Pos], Volume[Pos]. // А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume. #define DEFINE_TIMESERIE(NAME,FUNC,T) \ class CLASS ##NAME \ { \ public : \ static T Get( conststring Symb, constint TimeFrame, constint iShift ) \ { \ T tValue[]; \ \ return ((Copy ##FUNC((Symb == NULL ) ? _Symbol : Symb, _Period , iShift, 1 , tValue) > 0 ) ? tValue[ 0 ] : - 1 ); \ } \ \ T operator []( constint iPos ) const \ { \ return (CLASS ##NAME::Get(_Symbol, _Period , iPos)); \ } \ }; \ \ CLASS ##NAME NAME; \ \ T i ##NAME( conststring Symb, constint TimeFrame, constint iShift ) \ { \ return (CLASS ##NAME::Get(Symb, TimeFrame, iShift)); \ }
DEFINE_TIMESERIE( Volume , TickVolume, long ) DEFINE_TIMESERIE( Time , Time , datetime ) DEFINE_TIMESERIE( Open , Open , double ) DEFINE_TIMESERIE( High , High , double ) DEFINE_TIMESERIE( Low , Low , double ) DEFINE_TIMESERIE( Close , Close , double )
Александр Богданов : 안녕하세요! MQL4에서는 약간 작성하지만 MQL5에서는 완전히 0입니다. 하루에 높고 낮음의 차이를 계산할 작은 조수를 작성할 필요가 있었습니다. 4차 버전에서는 이를 위한 좋은 iHigh 및 iLow 기능이 있지만 여기서는 누락된 것을 발견했습니다. copyHigh와 copyLow를 사용해 보았지만 최대값에서 최소값을 빼면 많은 오류가 발생합니다. 가급적이면 코드를 사용하여 이 문제를 해결하는 방법을 알려주십시오. 미리 감사드립니다!
작업이 화면에만 표시되는 것이라면 가장 좋은 솔루션은 표시기입니다. OnCalculate()의 표시기에는 필요한 모든 시계열이 있습니다.
Александр Богданов : 안녕하세요! MQL4에서는 약간 작성하지만 MQL5에서는 완전히 0입니다. 하루에 높고 낮음의 차이를 계산할 작은 조수를 작성할 필요가 있었습니다. 4차 버전에서는 이를 위한 좋은 iHigh 및 iLow 기능이 있지만 여기서는 누락된 것을 발견했습니다. copyHigh와 copyLow를 사용해 보았지만 최대값에서 최소값을 빼면 많은 오류가 발생합니다. 가급적이면 코드를 사용하여 이 문제를 해결하는 방법을 알려주십시오. 미리 감사드립니다!
매일의 Hi 및 Low(현재 날짜의 최고 및 최저)가 정확히 필요한 경우 식별자 SYMBOL_BIDHIGH 및 SYMBOL_BIDLOW(또는 기타 기호에 따라)와 함께 SymbolInfoDouble()을 사용하여 아주 간단하게 수행됩니다.
안녕하세요! 2016.10.21_19:58 모스크바 시간. 나는 전략 테스터에서 어드바이저를 확인한다. EA는 거래를 열고 닫습니다. 그러나 전략 테스터는 다음과 같은 오류를 제공합니다. ArrayMinimum 함수에 대한 잘못된 시작 위치 0; -하나; 'CLose.mqh'의 범위를 벗어난 배열(86,59); EA의 심각한 오류로 인해 테스트 통과가 중지되었습니다. EA가 어떻게 실수를 하는지에 대한 스크린샷과 포함된 파일 CLose.mqh의 코드가 있습니다. 이 코드에서 배열을 벗어날 방법이 없습니다. 그래서 나는 무엇이 잘못되었는지 이해하지 못합니다. 가능하시면 조언 부탁드립니다. 모든 동안. 20:08 모스크바 시간.
Николай Никитюк : 안녕하세요! 2016.10.21_19:58 모스크바 시간. 나는 전략 테스터에서 어드바이저를 확인한다. EA는 거래를 열고 닫습니다. 그러나 전략 테스터는 다음과 같은 오류를 제공합니다. ArrayMinimum 함수에 대한 잘못된 시작 위치 0; -하나; 'CLose.mqh'의 범위를 벗어난 배열(86,59); EA의 심각한 오류로 인해 테스트 통과가 중지되었습니다. EA가 어떻게 실수를 하는지에 대한 스크린샷과 포함된 파일 CLose.mqh의 코드가 있습니다. 이 코드에서 배열을 벗어날 방법이 없습니다. 그래서 나는 무엇이 잘못되었는지 이해하지 못합니다. 가능하시면 조언 부탁드립니다. 모든 동안. 20:08 모스크바 시간.
또는 리메이크를 위해 int(aon=NormalizeDouble(aon,0) 사용)에 있을 수도 있고, 그렇지 않으면 double과 비슷하고 완전히 명확하지 않습니다.
나는 당신이 가지고 있는 ZigZag 정점 검색 코드의 일부를 보았습니다. Igor Kim이 보낸 것 같습니다. 여기에 극한값 검색 코드를 삽입하고 찾은 극값의 시간을 추가로 절약합니다. 당신은 사이클에서 그것을 찾고 있습니다 ... 당신이 그것을 찾을 때 극값이 이미 발견되었을 때 사이클 인덱스에 표시된 시간을 기억하십시오 - 가격 값을 반환 하기 전에. 즉, 함수를 참조하여 datetime 변수를 추가로 전달하여 지그재그 극값을 찾은 시간을 기록합니다. 함수가 가격 값을 반환할 때 이 변수에 원하는 지그재그 극한값이 있는 막대가 열리는 시간 값을 추가로 입력합니다.
죄송합니다. 작동하는 컴퓨터와 거리가 멀고 예제 코드를 제공할 수 없습니다.
안녕하세요! MQL4에서는 약간 작성하지만 MQL5에서는 완전히 0입니다. 하루에 높고 낮음의 차이를 계산할 작은 조수를 작성할 필요가 있었습니다. 4차 버전에서는 이를 위한 좋은 iHigh 및 iLow 기능이 있지만 여기서는 누락된 것을 발견했습니다. copyHigh와 copyLow를 사용해 보았지만 최대값에서 최소값을 빼면 많은 오류가 발생합니다. 가급적이면 코드를 사용하여 이 문제를 해결하는 방법을 알려주십시오. 미리 감사드립니다!
안녕하세요! MQL4에서는 약간 작성하지만 MQL5에서는 완전히 0입니다. 하루에 높고 낮음의 차이를 계산할 작은 조수를 작성할 필요가 있었습니다. 4차 버전에서는 이를 위한 좋은 iHigh 및 iLow 기능이 있지만 여기서는 누락된 것을 발견했습니다. copyHigh와 copyLow를 사용해 보았지만 최대값에서 최소값을 빼면 많은 오류가 발생합니다. 가급적이면 코드를 사용하여 이 문제를 해결하는 방법을 알려주십시오. 미리 감사드립니다!
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
'CopyTicks' 테스트
fxsaber , 2016.10.19 07:59
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.
#define DEFINE_TIMESERIE(NAME,FUNC,T) \
class CLASS ##NAME \
{ \
public : \
static T Get( const string Symb, const int TimeFrame, const int iShift ) \
{ \
T tValue[]; \
\
return ((Copy ##FUNC((Symb == NULL ) ? _Symbol : Symb, _Period , iShift, 1 , tValue) > 0 ) ? tValue[ 0 ] : - 1 ); \
} \
\
T operator []( const int iPos ) const \
{ \
return (CLASS ##NAME::Get(_Symbol, _Period , iPos)); \
} \
}; \
\
CLASS ##NAME NAME; \
\
T i ##NAME( const string Symb, const int TimeFrame, const int iShift ) \
{ \
return (CLASS ##NAME::Get(Symb, TimeFrame, iShift)); \
}
DEFINE_TIMESERIE( Volume , TickVolume, long )
DEFINE_TIMESERIE( Time , Time , datetime )
DEFINE_TIMESERIE( Open , Open , double )
DEFINE_TIMESERIE( High , High , double )
DEFINE_TIMESERIE( Low , Low , double )
DEFINE_TIMESERIE( Close , Close , double )
이것을 코드 시작 부분에 붙여넣습니다.
안녕하세요! MQL4에서는 약간 작성하지만 MQL5에서는 완전히 0입니다. 하루에 높고 낮음의 차이를 계산할 작은 조수를 작성할 필요가 있었습니다. 4차 버전에서는 이를 위한 좋은 iHigh 및 iLow 기능이 있지만 여기서는 누락된 것을 발견했습니다. copyHigh와 copyLow를 사용해 보았지만 최대값에서 최소값을 빼면 많은 오류가 발생합니다. 가급적이면 코드를 사용하여 이 문제를 해결하는 방법을 알려주십시오. 미리 감사드립니다!
작업이 화면에만 표시되는 것이라면 가장 좋은 솔루션은 표시기입니다. OnCalculate()의 표시기에는 필요한 모든 시계열이 있습니다.
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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 &spread[])
{
기본적으로 MQL5 표시기에서 가장 오른쪽 막대에는 Rates_total-1 인덱스가 있습니다. 그리고 귀하의 작업은 기본 뺄셈으로 축소됩니다.
사실, 이러한 간단한 접근 방식은 지표가 D1 기간에 시작된 경우에만 올바르게 표시됩니다. 다른 시간대에 실행하는 경우 CopyHigh 및 CopyLow를 사용해야 합니다. 원칙적으로 복잡한 것은 없습니다.
예시를 쓰겠습니다...
//| High minus Low.mq5 |
//| Copyright © 2016, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
#property indicator_chart_window
#property indicator_plots 0
//--- input parameter
input ENUM_TIMEFRAMES period= PERIOD_D1 ; // для какого периода считать High-Low
//---
double multiplier= 0.0 ;
double High [], Low [];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//--- indicator buffers mapping
multiplier= MathPow ( 10 , Digits ());
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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 &spread[])
{
//--- разницу цен переводим в пункты
double difference=( iHigh ( Symbol (),period, 0 )- iLow ( Symbol (),period, 0 ))*multiplier;
//--- вывод результата на экран
Comment ( "High-Low=" , DoubleToString (difference, 0 ));
//--- return value of prev_calculated for next call
return (rates_total);
}
//+------------------------------------------------------------------+
//| Получим Low для заданного номера бара |
//+------------------------------------------------------------------+
double iLow ( string symbol, ENUM_TIMEFRAMES timeframe, int index)
{
double low= 0 ;
ArraySetAsSeries ( Low , true );
int copied= CopyLow (symbol,timeframe, 0 , Bars (symbol,timeframe), Low );
if (copied> 0 && index<copied) low= Low [index];
return (low);
}
//+------------------------------------------------------------------+
//| Получим High для заданного номера бара |
//+------------------------------------------------------------------+
double iHigh ( string symbol, ENUM_TIMEFRAMES timeframe, int index)
{
double high= 0 ;
ArraySetAsSeries ( High , true );
int copied= CopyHigh (symbol,timeframe, 0 , Bars (symbol,timeframe), High );
if (copied> 0 && index<copied) high= High [index];
return (high);
}
//+------------------------------------------------------------------+
이제 표시기는 현재 기호의 모든 시간 프레임에서 실행될 수 있으며 높음과 낮음 간의 차이를 계산할 시간 프레임을 선택할 수 있습니다.안녕하세요! MQL4에서는 약간 작성하지만 MQL5에서는 완전히 0입니다. 하루에 높고 낮음의 차이를 계산할 작은 조수를 작성할 필요가 있었습니다. 4차 버전에서는 이를 위한 좋은 iHigh 및 iLow 기능이 있지만 여기서는 누락된 것을 발견했습니다. copyHigh와 copyLow를 사용해 보았지만 최대값에서 최소값을 빼면 많은 오류가 발생합니다. 가급적이면 코드를 사용하여 이 문제를 해결하는 방법을 알려주십시오. 미리 감사드립니다!
//| CLose.mqh |
//| Nickityuk N., 2016. |
//| https://www.mql5.com/users/nicityuk/ |
//+------------------------------------------------------------------+
#property copyright "Nickityuk N., 2016."
#property link "https://www.mql5.com/users/nicityuk/"
#property strict
#include <Expert\OPen.mqh>
//#include <ARrayMinimum.mqh>
double AOmax,AOmax2,AOmin,AOmin2,AOm0,AOn0,z5max0,z5min0,clm,cln,AO[];
int aom,aom2,aon,aon2;
datetime ttm,ttn,hm,hn;
//+------------------------------------------------------------------+
//| Calculate for close order |
//+------------------------------------------------------------------+
void CLose()
{ if (buy== 0 && sell== 0 ) { return ;}
else if ( OrderType ()== OP_BUY ) {CloseBuy();}
else CloseSell();}
//+------------------------------------------------------------------+
void St()
{St0= iStochastic ( NULL , 0 , 24 , 5 , 3 , MODE_SMA , 0 , MODE_MAIN , 0 );
Si0= iStochastic ( NULL , 0 , 24 , 5 , 3 , MODE_SMA , 0 , MODE_SIGNAL , 0 );
St1= iStochastic ( NULL , 0 , 24 , 5 , 3 , MODE_SMA , 0 , MODE_MAIN , 1 );
Si1= iStochastic ( NULL , 0 , 24 , 5 , 3 , MODE_SMA , 0 , MODE_SIGNAL , 1 );}
void CloseBuy()
{St(); if (St0- 20 > 0 && Si0- 20 > 0 )
{ if (St1-Si1> 0 && St0-Si0< 0 ) {AOm0= iAO ( NULL , 0 , 0 );
if (AOm0-AOm1>= 0 ) {AOm1= iAO ( NULL , 0 , 0 ); return ;}
else if (St0- 80 > 0 && St0- 100 <= 0 && Si0- 80 > 0 )
{ if (Si0- 100 <= 0 && St1-Si1> 0 && St0-Si0< 0 )
{TwoExtremeAO_Buy(); OneExtremeBuy(); ExpirationBuy();}
else return ;}
else return ;}
else return ;}
else return ;}
void CloseSell()
{St(); if (St0- 80 < 0 && Si0- 80 < 0 )
{ if (St1-Si1< 0 && St0-Si0> 0 ) {AOn0= iAO ( NULL , 0 , 0 );
if (AOn0-AOn1<= 0 ) {AOn1= iAO ( NULL , 0 , 0 ); return ;}
else if (St0- 20 < 0 && St0>= 0 && Si0- 20 < 0 )
{ if (Si0>= 0 && St1-Si1< 0 && St0-Si0> 0 )
{TwoExtremeAO_Sell(); OneExtremeSell(); ExpirationSell();}
else return ;}
else return ;}
else return ;}
else return ;}
//+------------------------------------------------------------------+
void CalculateClose()
{v0= iVolume ( NULL , PERIOD_M1 , 0 ); //--- go trading only for first tiks of new bar
v1= iVolume ( NULL , PERIOD_M1 , 1 );
v2= iVolume ( NULL , PERIOD_M1 , 2 );
v3= iVolume ( NULL , PERIOD_M1 , 3 );
v4= iVolume ( NULL , PERIOD_M1 , 4 );
if (v0+v1+v2+v3+v4- 10 / 12 > 0 ) return ;
for (index= 0 ;index< 24 ;index++)
{AO[index]= iAO ( NULL , PERIOD_M5 ,index);}
ArrayResize (AO, 24 , 4 );
ArraySetAsSeries (AO, true );}
//index=0; AO[index]=iAO(NULL,PERIOD_M5,index);}
//+------------------------------------------------------------------+
void TwoExtremeAO_Buy()
{CalculateClose();
if ( ArrayMaximum (AO, 23 , 0 )== 0 ) return ;
else aom= ArrayMaximum (AO, 23 , 0 ); AOmax=AO[aom];
if ( ArrayMinimum (AO,aom, 0 )> 0 ) {aon= ArrayMinimum (AO,aom, 0 );}
else return ;
if ( ArrayMaximum (AO,aon, 0 )== 0 ) return ;
else aom2= ArrayMaximum (AO,aon, 0 ); AOmax2=AO[aom2];
if (AOmax2-AOmax> 0 ) { return ;}
else if (AOmax2-AOmax< 0 ) { if ( OrderClose ( OrderTicket (), OrderLots (), Bid , 300 ,White)== false )
{ Print ( "OrderClose error." , GetLastError ());}
else //index=2;
//while(iFractals(NULL,0,MODE_UPPER,index)==0) {index++;}
//Sleep(3000); luf=iFractals(NULL,0,MODE_UPPER,index);
//SL=NormalizeDouble(luf+(Ask-Bid)+(1*_Point),_Digits);
TP= NormalizeDouble ( Ask -tp* _Point , _Digits );
tic= OrderSend ( Symbol (), OP_SELL ,LotsCalculated(), Bid , 50 , 0 ,TP, "" ,MAGIC, 0 ,Red);
AOn1= iAO ( NULL , 0 ,index); return ;}
else return ;}
//+------------------------------------------------------------------+
void TwoExtremeAO_Sell()
{CalculateClose();
if ( ArrayMinimum (AO, 23 , 0 )== 0 ) return ;
else aon= ArrayMinimum (AO, 23 , 0 ); Print (aon, "" ); AOmin=AO[aon];
if ( ArrayMaximum (AO,aon, 0 )> 0 ) {aom= ArrayMaximum (AO,aon, 0 );}
else return ;
if ( ArrayMinimum (AO,aom, 0 )== 0 ) return ;
else aon2= ArrayMinimum (AO,aom, 0 ); AOmin2=AO[aon2]; //Print(aon2,"");
if (AOmin2-AOmin> 0 ) { return ;}
else if (AOmin2-AOmin< 0 ) { if ( OrderClose ( OrderTicket (), OrderLots (), Bid , 300 ,White)== false )
{ Print ( "OrderClose error." , GetLastError ());}
else //index=2;
//while(iFractals(NULL,0,MODE_LOWER,index)==0) {index++;}
//Sleep(3000); ldf=iFractals(NULL,0,MODE_LOWER,index);
//SL=NormalizeDouble(ldf-(1*_Point),_Digits);
TP= NormalizeDouble ( Bid +tp* _Point , _Digits );
tic= OrderSend ( Symbol (), OP_BUY ,LotsCalculated(), Ask , 50 , 0 ,TP, "" ,MAGIC, 0 ,Blue);
AOm1= iAO ( NULL , 0 , 0 ); return ;}
else return ;}
//+------------------------------------------------------------------+
void OneExtremeBuy()
{index= 0 ;
while ( iCustom ( NULL , PERIOD_M5 , "ZigZag" , 12 , 5 , 3 , 1 ,index)== 0 ) {index++;}
z5max0= iCustom ( NULL , PERIOD_M5 , "ZigZag" , 12 , 5 , 3 , 1 ,index); ttm= iTime ( NULL , 0 ,index); clm= iClose ( NULL , PERIOD_M5 , 0 ); //Sleep(3000);
if ((clm-(z5max0- 300 * Point ))< 0 ) { if ( OrderClose ( OrderTicket (), OrderLots (), Bid , 300 ,White)== false )
{ Print ( "OrderClose error." , GetLastError ());}
else return ;}
else return ;}
void OneExtremeSell()
{index= 0 ;
while ( iCustom ( NULL , PERIOD_M5 , "ZigZag" , 12 , 5 , 3 , 2 ,index)== 0 ) {index++;}
z5min0= iCustom ( NULL , PERIOD_M5 , "ZigZag" , 12 , 5 , 3 , 2 ,index); ttn= iTime ( NULL , 0 ,index); cln= iClose ( NULL , PERIOD_M5 , 0 ); //Sleep(3000);
if ((cln-(z5min0+ 300 * Point ))> 0 ) { if ( OrderClose ( OrderTicket (), OrderLots (), Bid , 300 ,White)== false )
{ Print ( "OrderClose error." , GetLastError ());}
else return ;}
else return ;}
//+------------------------------------------------------------------+
void ExpirationBuy()
{hm= TimeHour (ttm); if ((hm+ 3 )- TimeCurrent ()< 0 ) { if ( OrderClose ( OrderTicket (), OrderLots (), Bid , 300 ,White)== false )
{ Print ( "OrderClose error." , GetLastError ());}
else return ;}
else return ;}
void ExpirationSell()
{hn= TimeHour (ttn); if ((hn+ 3 )- TimeCurrent ()< 0 ) { if ( OrderClose ( OrderTicket (), OrderLots (), Bid , 300 ,White)== false )
{ Print ( "OrderClose error." , GetLastError ());}
else return ;}
else return ;}
//+------------------------------------------------------------------+
안녕하세요! 2016.10.21_19:58 모스크바 시간. 나는 전략 테스터에서 어드바이저를 확인한다. EA는 거래를 열고 닫습니다. 그러나 전략 테스터는 다음과 같은 오류를 제공합니다. ArrayMinimum 함수에 대한 잘못된 시작 위치 0; -하나; 'CLose.mqh'의 범위를 벗어난 배열(86,59); EA의 심각한 오류로 인해 테스트 통과가 중지되었습니다. EA가 어떻게 실수를 하는지에 대한 스크린샷과 포함된 파일 CLose.mqh의 코드가 있습니다. 이 코드에서 배열을 벗어날 방법이 없습니다. 그래서 나는 무엇이 잘못되었는지 이해하지 못합니다. 가능하시면 조언 부탁드립니다. 모든 동안. 20:08 모스크바 시간.
또는 리메이크를 위해 int(aon=NormalizeDouble(aon,0) 사용)에 있을 수도 있고, 그렇지 않으면 double과 비슷하고 완전히 명확하지 않습니다.
:
Expert Advisor에 입력 매개변수를 입력하기만 하면 시작 시 할당된 값에 따라 구매만 하거나 판매만 하게 됩니다.
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
...
void OnTick ()
{
if (!Long)
trade.Sell( 0.01 );
if (Long)
trade.Buy( 0.01 );
}