Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Instrumentum lista lekérdezése › Válasz erre: Instrumentum lista lekérdezése
Az alábbi meglátásaim vannak (köszönöm az e-mailt, amit küldtél):
A db értékét ne csökkentsd eggyel, az jó úgy ahogy van; ehelyett ellenőrizd hogy az a chart, amely épp nyitva van (vagyis amiről a szkriptet indítottad) ne legyen kinyitva még egyszer. Ezt ezzel a kódsorral megteheted:
if (Szimbolumok[i] != Symbol()) { }
Természetesen ha pontosak szeretnénk lenni, akkor meg lehetne nézni, hogy a jelenleg nyitott chartok közül van-e olyan amit nem kellene még egyszer megnyitni. Legyen ez a házi feladat :)
Egy int() típusváltást beraktam, hogy a warning is eltűnjön.
Csatolom a módosított kódot, még egyszer köszi hogy megosztottad!
#property description "A piacfigyelő által megjelenített szimbólumok csv fileba írása, és/vagy megnyitása"
#property description "Csak korlátozott számban: maximum 100 nyitható meg, a már megnyitottakkal együtt"
#property script_show_inputs
#property strict
//+------------------------------------------------------------------+
#include //ErrorDescription-hoz kell
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
enum boole {nem,igen};
input boole FileWriting=nem;//fileba írás
input boole AllSymbolOpen=igen;//az összes szimbolum megnyitása maximum 100
input int TimeFrame=PERIOD_H1;//Idősík
void OnStart()
{
string Szimbolumok[];
int i;
int db=0;
int filehandle=INVALID_HANDLE;
int Error;
//+---
if(!FileWriting && !AllSymbolOpen)
{
Alert("A script ezzel a beállítással nem csinál semmit");
}
else
{
LoadSymbols (Szimbolumok);
db=ArraySize(Szimbolumok);
if(db)
{
if(FileWriting)
{
filehandle=FileOpen("Symbollist.csv",FILE_WRITE|FILE_CSV);
}
for(i=0;i= 0) {
ElementCount = (int(FileSize(fileHandle)) - 4) / 128;
ArrayResize(SymbolsArray, ElementCount);
FileSeek(fileHandle, 4, SEEK_SET);
for (int k = 0; k < ElementCount; k++) {
Row = FileReadString(fileHandle, 12);
SymbolsArray[k] = Row;
FileSeek(fileHandle, 116, SEEK_CUR);
}
FileClose(fileHandle);
}
}