//+------------------------------------------------------------------+
//| S2.mq4 |
//| Copyright 2021, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern string lt = "0.56";
class Candle
{
private:
double open; // цена открытия
double close; // цена закрытия
double high; // максимум
double low; // минимум
long volume; // тиковый объём
datetime time_op; // время открытия
uchar type; // тип свечи (1-бычья, 2-медвежья)
int height_full; // общая высота свечи
int height_body; // размер тела свечи
int height_top_shadow; // размер верхней тени
int height_bottom_shadow; // размер нижней тени
public:
double Kind_Candle(int bar)//Вид свечи
{
double body = Open[bar]-Close[bar];
if(body<0.0)
type = 2;//бычья
if(body>0.0)
type = 1;//медвежья
return(type);
};
} candle;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class Lot
{
private:
double lot;
public:
double DanLot(string dlot)
{
lot = StrToDouble(dlot);
return(lot);
}
} LOT;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- получим минимальное значение Stop level
double minstoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
Print("Minimum Stop Level=",minstoplevel," points");
double price=Ask;
//--- вычисленные значения цен SL и TP должны быть нормализованы
double stoploss=NormalizeDouble(Bid-minstoplevel*Point,Digits);
double takeprofit=NormalizeDouble(Bid+minstoplevel*Point,Digits);
//--- размещаем рыночный ордер на покупку 1 лота
int ticket=OrderSend(Symbol(),OP_BUY,LOT.DanLot(lt),price,3,stoploss,takeprofit,"My order",16384,0,clrGreen);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
получилось