// СКРИПТ (взят с форума mql4, чуть-чуть доработан)
// читает файл symbols.sel и пишет файл symbol2.sel
// перезаписывает ask для символов, название которых
// заканчивается на USD,CHF,JPY
// значениями bid+спред, спред задается вх. параметром USD,CHF,JPY
// для XAUUSD и XAGUSD отдельные входные параметры
// после того, как скрипт сделает свое дело, необходимо:
// 1. выставить в настройках прокси 1 в качестве хоста и активировать
// галочку "Разрешить прокси-сервер"
// 2. Закрыть метатрейдер
// 3. Переместить symbols2.sel в symbols.sel
// 4. Запустить метатрейдер
#property copyright "ay"
#property link "sganalysis.com"
#include <stdlib.mqh>
#include <stderror.mqh>
#property show_inputs
// вх. параметры задают спрэд для группы инструментов
extern double USD = 0.00020;
extern double CHF = 0.00020;
extern double JPY = 0.020;
extern double AUD = 0.00025;
extern double GBP = 0.00020;
extern double CAD = 0.00025;
extern double NZD = 0.00035;
extern double XAUUSD = 0.50;
extern double XAGUSD = 0.05;
int start() {
int f_in = FileOpenHistory("symbols.sel", FILE_BIN | FILE_READ);
int f_out = FileOpenHistory("symbols2.sel", FILE_BIN | FILE_WRITE);
if(f_in<0) {
Print("Error while opening symbols.sel for reading: "+ErrorDescription(GetLastError()));
return(2);
}
if(f_out<0) {
Print("Error while opening symbols2.sel for writing: "+ErrorDescription(GetLastError()));
return(2);
}
int buf1;
int tmp[13];
FileSeek(f_in, 0, SEEK_SET);
buf1 = FileReadInteger(f_in);
FileWriteInteger(f_out, buf1);
string s = "";
double bid = 0;
double ask = 0;
double max,min;
int b_pos;
int ba_pos;
while(!FileIsEnding(f_in)) {
s = FileReadString(f_in, 12);
if(FileIsEnding(f_in)) break;
FileWriteString(f_out, s, 12); // имя символа
FileReadArray(f_in, tmp, 0, 13);
FileWriteArray(f_out, tmp, 0, 13);
ba_pos = FileTell(f_in);
bid = FileReadDouble(f_in);//bid
ask = FileReadDouble(f_in);//ask
if(s=="XAUUSD") {
ask = bid+XAUUSD;
} else if(s=="XAGUSD") {
ask = bid+XAGUSD;
} else if(StringFind(s,"USD")==3) {
ask = bid+USD;
} else if(StringFind(s,"CHF")==3) {
ask = bid+CHF;
} else if(StringFind(s,"JPY")==3) {
ask = bid+JPY;
} else if(StringFind(s,"AUD")==3) {
ask = bid+AUD;
} else if(StringFind(s,"GBP")==3) {
ask = bid+GBP;
} else if(StringFind(s,"CAD")==3) {
ask = bid+CAD;
} else if(StringFind(s,"NZD")==3) {
ask = bid+NZD;
}
Print(s+" bid="+bid+", ask="+ask);
FileWriteDouble(f_out, bid);
FileWriteDouble(f_out, ask);
max = FileReadDouble(f_in); // max per day
min = FileReadDouble(f_in); // min per day
FileWriteDouble(f_out, max);
FileWriteDouble(f_out, min);
FileReadArray(f_in, tmp, 0, 4);
FileWriteArray(f_out, tmp, 0, 4);
FileReadDouble(f_in);
FileReadDouble(f_in);
FileWriteDouble(f_out, bid);
FileWriteDouble(f_out, ask);
}
FileClose(f_in);
FileClose(f_out);
return(0);
}
// читает файл symbols.sel и пишет файл symbol2.sel
// перезаписывает ask для символов, название которых
// заканчивается на USD,CHF,JPY
// значениями bid+спред, спред задается вх. параметром USD,CHF,JPY
// для XAUUSD и XAGUSD отдельные входные параметры
// после того, как скрипт сделает свое дело, необходимо:
// 1. выставить в настройках прокси 1 в качестве хоста и активировать
// галочку "Разрешить прокси-сервер"
// 2. Закрыть метатрейдер
// 3. Переместить symbols2.sel в symbols.sel
// 4. Запустить метатрейдер
#property copyright "ay"
#property link "sganalysis.com"
#include <stdlib.mqh>
#include <stderror.mqh>
#property show_inputs
// вх. параметры задают спрэд для группы инструментов
extern double USD = 0.00020;
extern double CHF = 0.00020;
extern double JPY = 0.020;
extern double AUD = 0.00025;
extern double GBP = 0.00020;
extern double CAD = 0.00025;
extern double NZD = 0.00035;
extern double XAUUSD = 0.50;
extern double XAGUSD = 0.05;
int start() {
int f_in = FileOpenHistory("symbols.sel", FILE_BIN | FILE_READ);
int f_out = FileOpenHistory("symbols2.sel", FILE_BIN | FILE_WRITE);
if(f_in<0) {
Print("Error while opening symbols.sel for reading: "+ErrorDescription(GetLastError()));
return(2);
}
if(f_out<0) {
Print("Error while opening symbols2.sel for writing: "+ErrorDescription(GetLastError()));
return(2);
}
int buf1;
int tmp[13];
FileSeek(f_in, 0, SEEK_SET);
buf1 = FileReadInteger(f_in);
FileWriteInteger(f_out, buf1);
string s = "";
double bid = 0;
double ask = 0;
double max,min;
int b_pos;
int ba_pos;
while(!FileIsEnding(f_in)) {
s = FileReadString(f_in, 12);
if(FileIsEnding(f_in)) break;
FileWriteString(f_out, s, 12); // имя символа
FileReadArray(f_in, tmp, 0, 13);
FileWriteArray(f_out, tmp, 0, 13);
ba_pos = FileTell(f_in);
bid = FileReadDouble(f_in);//bid
ask = FileReadDouble(f_in);//ask
if(s=="XAUUSD") {
ask = bid+XAUUSD;
} else if(s=="XAGUSD") {
ask = bid+XAGUSD;
} else if(StringFind(s,"USD")==3) {
ask = bid+USD;
} else if(StringFind(s,"CHF")==3) {
ask = bid+CHF;
} else if(StringFind(s,"JPY")==3) {
ask = bid+JPY;
} else if(StringFind(s,"AUD")==3) {
ask = bid+AUD;
} else if(StringFind(s,"GBP")==3) {
ask = bid+GBP;
} else if(StringFind(s,"CAD")==3) {
ask = bid+CAD;
} else if(StringFind(s,"NZD")==3) {
ask = bid+NZD;
}
Print(s+" bid="+bid+", ask="+ask);
FileWriteDouble(f_out, bid);
FileWriteDouble(f_out, ask);
max = FileReadDouble(f_in); // max per day
min = FileReadDouble(f_in); // min per day
FileWriteDouble(f_out, max);
FileWriteDouble(f_out, min);
FileReadArray(f_in, tmp, 0, 4);
FileWriteArray(f_out, tmp, 0, 4);
FileReadDouble(f_in);
FileReadDouble(f_in);
FileWriteDouble(f_out, bid);
FileWriteDouble(f_out, ask);
}
FileClose(f_in);
FileClose(f_out);
return(0);
}
Комментариев нет:
Отправить комментарий