Fehler, Irrtümer, Fragen - Seite 2033

 
Stanislav Korotky:

Auf dem Bildschirmfoto ist kein AAPL zu sehen. Und Sie überprüfen den SymbolSelect-Rückgabecode nicht.


#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);
}
//+------------------------------------------------------------------+

seltsam, so Print gibt falsch, obwohl der Screenshot zeigt, dass AAPL ist in der Marktübersicht
ps Ich habe bereits oben geschrieben: der Punkt ist, auf einem Instrument laufen und erhalten Daten von einem anderen... wenn ich wollte AAPL Daten von AAPL Ich würde _Symbol direkt geschrieben haben

 
Money_Man:

Seltsam, dass Print eine falsche Meldung ausgibt, obwohl auf dem Screenshot zu sehen ist, dass es in der Marktübersicht ein aapl gibt.
ps Ich habe bereits oben geschrieben: Die Idee ist, auf einem Instrument zu laufen und die Daten von einem anderen zu erhalten. Wenn ich AAPL-Daten von AAPL wollte, hätte ich _Symbol geschrieben


Die Kontonummer und das Anlegerpasswort stammen von Ihnen. Aber ich gebe 99,9%, dass das Symbol "AAPL" auf dem Handelsserver einfach nicht existiert :)

 
Money_Man:
Schreiben Sie "Apple" statt "AAPL" wie in Ihrer Marktübersicht
 
#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);
}
//+------------------------------------------------------------------+

Es wird der Fehler 4305 angezeigt.

 
Money_Man:

Der Fehler 4305 wird folgendermaßen angezeigt


Auf dem Handelsserver, mit dem Sie sich verbinden, gibt es kein "AAPL"-Symbol. Ganz und gar nicht.

 
Комбинатор:
Schreiben Sie "Apple" statt "AAPL" wie in Ihrer Marktübersicht

aaaaaaaaaaaca )))
wurde aufgehalten(((.
Entschuldigung)
muss daran liegen, dass ich mehr als ein Terminal geöffnet habe

Vielen Dank an alle, die geantwortet haben

 

Beim Erstellen einer History-Datei, MT4 Tester setzt TickValue=0, TickSize=0 in der Kopfzeile und die Parameter im Zusammenhang mit der Kommission, ich verstehe nicht, was und wo? Die Werte der Margin-Felder werden ebenfalls ausgefüllt oder nicht - das ist bei den verschiedenen Brokern unterschiedlich.

Handelt es sich dabei um einen Fehler oder um die falsche Headerstruktur? So steht es in der Hilfe auf der Website. Ich habe festgestellt, dass sie veraltet ist, und verwende daher diese.

#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())); }

Problematische Stellen habe ich gelb markiert.

Hier ist ein Ausdruck der MetaQuotes Demo

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-Ausdruck verwenden (Suffix ".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

Jetzt werden wir eine Verbindung zu einem beliebigen Broker herstellen.

Vergrößern Sie den Symbolverlauf.

Führen Sie einen beliebigen EA im Tester auf M1 aus (ein beliebiges Testintervall, und es ist nicht notwendig, auf dessen Abschluss zu warten).

Kopieren Sie nach dem Test die vom Tester erstellte Verlaufsdateisymb+"1_0.fxt " aus dem Testerordnerin das Verzeichnis MQL4/Files

Führen Sie das Skript in einem beliebigen Diagramm aus.

Wir sehen uns das Protokoll an.

 

Gelegentlich kommt es im MT5 zu einem Abspielen des Home-Buttons im Chart, d.h. der Chart verschiebt sich willkürlich an den Anfang - woran liegt das?


 
Aleksey Vyazmikin:

Der "Home"-Button auf dem Chart im MT5 hat sich gelegentlich wiederholt, d.h. der Chart verschiebt sich willkürlich an den Anfang - woran liegt das?


Graben Sie die "Home"-Taste mit einem Schraubenzieher aus :)

 
Kirill Belousov:

Beim Erstellen einer History-Datei, MT4 Tester setzt TickValue=0, TickSize=0 in der Kopfzeile und die Parameter im Zusammenhang mit der Kommission, ich verstehe nicht, was und wo? Auch die Werte der Margin-Felder werden mal ausgefüllt, mal nicht - das ist bei den verschiedenen Brokern unterschiedlich.

...

Ich vermute, das Problem liegt an diesem seltsamen Feld:

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

Im Original war er nicht vorhanden, woher kommt er?