오류, 버그, 질문 - 페이지 2033

 
Stanislav Korotky :

화면에 AAPL이 없습니다. 그리고 SymbolSelect의 반환 코드를 확인하지 않습니다.


 #property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots    0
ENUM_MA_METHOD      MA_Type   = MODE_SMA ;
ENUM_APPLIED_PRICE MA_Price  = PRICE_CLOSE ;
int handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
{
   Print ( SymbolSelect ( "AAPL" , true ));
   handle = iMA ( "AAPL" , _Period , 10 , 0 ,MA_Type,MA_Price);

   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[])
{

   return (rates_total);
}
//+------------------------------------------------------------------+

스크린샷이 시장 개요의 AAPL이 예임을 보여주지만 이상하게 인쇄 는 거짓을 표시합니다.
ps 위에서 이미 썼습니다. 요점은 한 기기에서 실행하고 다른 기기에서 데이터를 가져오는 것입니다. .. AAPL과 함께 AAPL 데이터를 원하면 즉시 _Symbol

 
Money_Man :

스크린샷이 시장 개요의 AAPL이 예임을 보여주지만 이상하게 인쇄는 거짓을 표시합니다.
ps 위에서 이미 썼습니다. 요점은 한 기기에서 실행하고 다른 기기에서 데이터를 가져오는 것입니다. .. AAPL과 함께 AAPL 데이터를 원하면 즉시 _Symbol


귀하의 투자자 계좌 번호 및 비밀번호. 그러나 나는 무역 서버에 "AAPL"기호가 없다는 99.9%를 제공합니다 :)

 
Money_Man :
시장 개요에서와 같이 "AAPL"대신 "Apple"을 작성하십시오.
 
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots    0
ENUM_MA_METHOD      MA_Type   = MODE_SMA ;
ENUM_APPLIED_PRICE MA_Price  = PRICE_CLOSE ;
int handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
{ 
   ResetLastError ();
   SymbolSelect ( "AAPL" , true );
   int error = GetLastError (); 
   Print (error);
   handle = iMA ( "AAPL" , _Period , 10 , 0 ,MA_Type,MA_Price);

   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[])
{

   return (rates_total);
}
//+------------------------------------------------------------------+

그래서 그것은 오류 4305를 제공합니다

 
Money_Man :

그래서 그것은 오류 4305를 제공합니다


연결하려는 거래 서버에 "AAPL" 기호가 없습니다. "전혀 그렇지 않다"는 말은 아니다.

 
Комбинатор :
시장 개요에 있는 것처럼 "AAPL" 대신 "Apple"이라고 쓰세요.

아아아아아아)))
적립 (((
실례합니다)
아마도 하나 이상의 터미널이 열려 있기 때문일 것입니다.

응답해주신 모든 분들께 감사드립니다.

 

MT4 테스터는 히스토리 파일을 생성할 때 헤더에 TickValue=0, TickSize=0을 입력하고 커미션과 관련된 매개 변수를 입력합니다. 어떤 것, 어디에서 왔는지 모르겠습니다. 여백에 의한 필드 값은 다른 브로커에 대해 다른 방식으로 채우거나 채우지 않습니다.

이것은 버그입니까 아니면 헤더 구조가 잘못된 것입니까? 사이트의 도움말에 이것이 표시되어 있습니다. 나는 그것이 구식이라는 정보를 찾았으므로 이것을 사용합니다.

 #property strict
#property show_inputs

input string symb="AUDCHF";

#define TOSTRING(A) #A+ " = " +(string)(A) struct TestHistoryHeader   {    int                version ;             // 405    char                copyright [ 64 ];       // copyright    char                description [ 128 ];   // server name                                          // 196    char               symbol[ 12 ];    int                period;    int                model;               // for what modeling type was the ticks sequence generated    int                bars;               // amount of bars in history    int                fromdate;    int                todate;    int                totalTicks;    double             modelquality;       // modeling quality                                          // 240    //---- general parameters    char               currency[ 12 ];       // currency base    int                spread;    int                digits;    int                unknown1;    double             point;    int                lot_min;             // minimum lot size    int                lot_max;             // maximum lot size    int                lot_step;    int                stops_level;         // stops level value    int                gtc_pendings;       // instruction to close pending orders at the end of day                                          // 292    //---- profit calculation parameters    int                unknown2;    double             contract_size;       // contract size    double             tick_value;         // value of one tick    double             tick_size;           // size of one tick    int                profit_mode;         // profit calculation mode        { PROFIT_CALC_FOREX, PROFIT_CALC_CFD, PROFIT_CALC_FUTURES }                                          // 324    //---- swap calculation    int                swap_enable;         // enable swap    int                swap_type;           // type of swap                   { SWAP_BY_POINTS, SWAP_BY_DOLLARS, SWAP_BY_INTEREST }    int                unknown3;    double             swap_long;    double             swap_short;         // swap overnight value    int                swap_rollover3days; // three-days swap rollover                                          // 356      //---- margin calculation    int                leverage;           // leverage    int                free_margin_mode;   // free margin calculation mode   { MARGIN_DONT_USE, MARGIN_USE_ALL, MARGIN_USE_PROFIT, MARGIN_USE_LOSS }    int                margin_mode;         // margin calculation mode        { MARGIN_CALC_FOREX,MARGIN_CALC_CFD,MARGIN_CALC_FUTURES,MARGIN_CALC_CFDINDEX };    int                margin_stopout;     // margin stopout level    int                margin_stopout_mode; // stop out check mode            { MARGIN_TYPE_PERCENT, MARGIN_TYPE_CURRENCY }    double             margin_initial;     // margin requirements    double             margin_maintenance; // margin maintenance requirements    double             margin_hedged;       // margin requirements for hedged positions    double             margin_divider;     // margin divider    char               margin_currency[ 12 ]; // margin currency                                          // 420      //---- commission calculation    double             comm_base;           // basic commission    int                comm_type;           // basic commission type          { COMM_TYPE_MONEY, COMM_TYPE_PIPS, COMM_TYPE_PERCENT }    int                comm_lots;           // commission per lot or per deal { COMMISSION_PER_LOT, COMMISSION_PER_DEAL }                                          // 436      //---- for internal use    int                from_bar;           // fromdate bar number    int                to_bar;             // todate bar number    int                start_period[ 6 ];     // number of bar at which the smaller period modeling started    int                set_from;           // begin date from tester settings    int                set_to;             // end date from tester settings                                          // 476    //----    int                end_of_test;    int                freeze_level;       // order's freeze level in points    int                generating_errors;    // 488      //----    int                reserved[ 60 ];   };

void OnStart() { //--- int dig=(int)MarketInfo(symb,MODE_DIGITS); TestHistoryHeader header={0}; ResetLastError(); int handle=FileOpen(symb+"1_0.fxt",FILE_READ|FILE_BIN); if(handle!=INVALID_HANDLE) { FileReadStruct(handle,header); FileClose(handle); } else {Print("Ошибка открытия файла ",GetLastError()); return;} Print(CharArrayToString(header.description)); Print(CharArrayToString(header.margin_currency)); Print(TOSTRING(header.set_from)); Print(TOSTRING((datetime)header.set_to)); Print(TOSTRING((datetime)header.end_of_test)); Print(TOSTRING(header.tick_value)," Должно быть ", TOSTRING(DoubleToStr(NormalizeDouble(SymbolInfoDouble(symb,SYMBOL_TRADE_TICK_VALUE), dig ), dig ))); Print(TOSTRING(header.tick_size)," Должно быть ", TOSTRING(DoubleToStr(NormalizeDouble(SymbolInfoDouble(symb,SYMBOL_TRADE_TICK_SIZE), dig ), dig ))); Print(TOSTRING(header.comm_base)); Print(TOSTRING(header.comm_type)); Print(TOSTRING(header.comm_lots)); Print(TOSTRING(AccountCurrency())); }

문제 영역을 노란색으로 표시했습니다.

다음은 MetaQuotes 데모 인쇄물입니다.

 0        17 : 26 : 59.889     ReadFXTHeader AUDCHF,M1: Copyright 2001 - 2016 , MetaQuotes Software Corp.
0        17 : 26 : 59.889     ReadFXTHeader AUDCHF,M1: AUD
0        17 : 26 : 59.889     ReadFXTHeader AUDCHF,M1: header.set_from = 0
0        17 : 26 : 59.889     ReadFXTHeader AUDCHF,M1: ( datetime )header.set_to = 2017.10 . 09 00 : 00 : 00
0        17 : 26 : 59.889     ReadFXTHeader AUDCHF,M1: ( datetime )header.end_of_test = 2017.10 . 11 00 : 00 : 00
0        17 : 26 : 59.890     ReadFXTHeader AUDCHF,M1: header.tick_value = 0 Должно быть DoubleToStr ( NormalizeDouble ( SymbolInfoDouble (AUDCHF, SYMBOL_TRADE_TICK_VALUE ), 5 ), 5 ) = 0.86761
0        17 : 26 : 59.890     ReadFXTHeader AUDCHF,M1: header.tick_size = 0 Должно быть DoubleToStr ( NormalizeDouble ( SymbolInfoDouble (AUDCHF, SYMBOL_TRADE_TICK_SIZE ), 5 ), 5 ) = 0.00001
0        17 : 26 : 59.890     ReadFXTHeader AUDCHF,M1: header.comm_base = 0
0        17 : 26 : 59.890     ReadFXTHeader AUDCHF,M1: header.comm_type = 0
0        17 : 26 : 59.890     ReadFXTHeader AUDCHF,M1: header.comm_lots = 2

0 17:26:59.890 ReadFXTHeader AUDCHF,M1: AccountCurrency() = EUR

다음은 Robo-Forex에서 출력한 것입니다(접미사 ".e")

 0        17 : 34 : 05.417     ReadFXTHeader AUDCHF.e,M1: RoboForex-Demo
0        17 : 34 : 05.417     ReadFXTHeader AUDCHF.e,M1: AUD
0        17 : 34 : 05.417     ReadFXTHeader AUDCHF.e,M1: header.set_from = 0
0        17 : 34 : 05.417     ReadFXTHeader AUDCHF.e,M1: ( datetime )header.set_to = 2017.10 . 09 00 : 00 : 00
0        17 : 34 : 05.417     ReadFXTHeader AUDCHF.e,M1: ( datetime )header.end_of_test = 2017.10 . 11 00 : 00 : 00
0        17 : 34 : 05.417     ReadFXTHeader AUDCHF.e,M1: header.tick_value = 0 Должно быть DoubleToStr ( NormalizeDouble ( SymbolInfoDouble (AUDCHF.e, SYMBOL_TRADE_TICK_VALUE ), 5 ), 5 ) = 1.02795
0        17 : 34 : 05.417     ReadFXTHeader AUDCHF.e,M1: header.tick_size = 0 Должно быть DoubleToStr ( NormalizeDouble ( SymbolInfoDouble (AUDCHF.e, SYMBOL_TRADE_TICK_SIZE ), 5 ), 5 ) = 0.00001
0        17 : 34 : 05.417     ReadFXTHeader AUDCHF.e,M1: header.comm_base = - 3.598220646991178 e+ 91
0        17 : 34 : 05.417     ReadFXTHeader AUDCHF.e,M1: header.comm_type = 1064329805
0        17 : 34 : 05.417     ReadFXTHeader AUDCHF.e,M1: header.comm_lots = 2

0 17:34:05.417 ReadFXTHeader AUDCHF.e,M1: AccountCurrency() = USD

우리는 모든 브로커에 연결합니다.

우리는 상징으로 역사를 펌핑합니다.

M1의 테스터에서 모든 EA를 시작합니다(테스트 기간에 관계없이 완료될 때까지 기다릴 수 없음).

테스트 후 테스터가 작성한 히스토리 파일 symb+"1_0.fxt" 를 테스터의 폴더에서 MQL4/Files 디렉토리로 복사하십시오.

모든 차트에서 스크립트를 실행합니다.

로그를 봅시다.

 

주기적으로 MT5의 차트에서 "홈" 버튼을 누르는 재생이 있습니다. 그래프가 임의로 맨 처음으로 이동합니다. 원인은 무엇입니까?


 
Aleksey Vyazmikin :

주기적으로 MT5의 차트에서 "홈" 버튼을 누르는 재생이 있습니다. 그래프가 임의로 맨 처음으로 이동합니다. 원인은 무엇입니까?


스크루드라이버로 "홈" 버튼을 폅니다. :)

 
Kirill Belousov :

MT4 테스터는 히스토리 파일을 생성할 때 헤더에 TickValue=0, TickSize=0을 입력하고 커미션과 관련된 매개 변수를 입력합니다. 어떤 것, 어디에서 왔는지 모르겠습니다. 여백에 의한 필드 값은 다른 브로커에 대해 다른 방식으로 채우거나 채우지 않습니다.

...

문제는 이 이상한 필드 때문인 것 같습니다.

 //---- profit calculation parameters
   int                unknown2;

원작엔 없었는데 어디서 나온거야?