
Можно для начала, уменьшить запрос цены, скажем раз в 30 сек
//+------------------------------------------------------------------+
//| Binance.mq4 |
//| Copyright 2022, AM2 |
//| https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, AM2"
#property link "https://www.forexsystems.biz"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
string header;
char post[],result[];
int res;
//--- для работы с сервером необходимо добавить URL "https://www.google.com/finance"
//--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"):
string url="https://www.api.binance.com/api/v3/ticker/price?symbol=BNBUSDT";
//--- обнуляем код последней ошибки
ResetLastError();
//--- загрузка html-страницы с Google Finance
int timeout=5000; //--- timeout менее 1000 (1 сек.) недостаточен при низкой скорости Интернета
res=WebRequest("GET",url,NULL,NULL,30000,post,0,result,header);
Comment("\n Symbol: ",CharArrayToString(result,0,33));
}
//+------------------------------------------------------------------+
{"symbol":"BNBUSDT","price":"407.90000000"}
send request failed [12175]
Мало какой сайт позволит заниматься постоянным парсингом своих данных.
//+------------------------------------------------------------------+
//| GridBuilder.mq5 |
//| Copyright 2015, AM2 |
//| https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link "https://www.forexsystems.biz"
#property version "1.00"
#property indicator_chart_window
//---- для расчёта и отрисовки индикатора использовано ноль буферов
#property indicator_buffers 0
//---- использовано всего ноль графических построений
#property indicator_plots 0
//--- входные параметры
input int count = 50; // количество линий вверх вниз от цены
input int step = 500; // шаг линий
input double pr = 1.1; // цена от которой пляшем
input color clr = Aqua; // цвет
input ENUM_TIMEFRAMES TF = PERIOD_D1;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
ObjectsDeleteAll(0,0,OBJ_HLINE);
ObjectsDeleteAll(0,0,OBJ_VLINE);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
ObjectsDeleteAll(0,0,OBJ_HLINE);
ObjectsDeleteAll(0,0,OBJ_VLINE);
}
//+------------------------------------------------------------------+
//| Горизонтальная линия |
//+------------------------------------------------------------------+
void PutHLine(string name,double p)
{
ObjectDelete(0,name);
ObjectCreate(0,name,OBJ_HLINE,0,0,p);
//--- установим цвет линии
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим толщину линии
ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
}
//+------------------------------------------------------------------+
//| Вертикальная линия |
//+------------------------------------------------------------------+
void PutVLine(string name,datetime t,double price)
{
ObjectDelete(0,name);
ObjectCreate(0,name,OBJ_VLINE,0,t,price);
//--- установим цвет линии
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим толщину линии
ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
}
//+------------------------------------------------------------------+
//| 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 price=pr;
//--- создадим горизонтальную линию
for(int i=0; i<=count; i++)
{
PutHLine("HLine"+(string)i,price+step*i*_Point);
PutHLine("HLine"+(string)(i+count+1),price-step*i*_Point);
PutVLine("VLine"+(string)i,iTime(NULL,TF,i),2);
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
AM2