← К каталогу
Исходный код · ID 2380

Yetti

yetti_atac_2.03.mq4
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Yetti 2.03 — торговый советник для MetaTrader 4, предназначенный для работы на таймфрейме M1. Советник использует сеточную торговлю: открывает позиции по направлению движения цены и добавляет ордера через заданный шаг, увеличивая лот по указанному множителю. Для управления рисками предусмотрены ограничения по просадке, уровню маржи, дневному и недельному профиту, а также функция локирования счёта. Дополнительно реализованы трейлинг-стоп, динамический шаг сетки, автосушка (принудительное закрытие убыточных позиций) и новостной фильтр, получающий данные с внешнего источника. Советник имеет графическую информационную панель с кнопками для ручного закрытия ордеров и отображения состояния торговли. В коде присутствует проверка лицензии через внешний модуль ATAC, что ограничивает работу в демо-режиме или без активации. Все торговые решения принимаются на основе встроенных алгоритмов, параметры которых вынесены в настройки. Советник не гарантирует прибыль и требует контроля со стороны пользователя.

Настройки программы

НастройкаОписание
CODE Код активации советника, используемый для проверки лицензии.
TXTp Название набора настроек, отображаемое на панели.
txtcol Цвет подписи на графической панели.
Magic Уникальный идентификатор (Magic number) для ордеров советника.
Lots Начальный лот для первого ордера сетки.
Boost Множитель для увеличения лота при добавлении ордеров в сетке.
Step Шаг сетки в пунктах для добавления ордеров.
TakeProfit Уровень тейк-профита для сетки ордеров в пунктах.
l_le Разделитель групп настроек, не является функциональным параметром.
teq Включает или отключает функцию тейк-профита по эквити.
prteq Процент фиксации профита при использовании функции тейк по эквити.
l_li Разделитель групп настроек, не является функциональным параметром.
StopProfit Процент профита в день, при достижении которого торговля останавливается.
StopProfitW Процент профита за неделю, при достижении которого торговля останавливается.
StopDD Процент просадки, при котором закрываются все ордера.
StopUM Уровень маржи, при котором закрываются все ордера.
l_lw Разделитель групп настроек, не является функциональным параметром.
AutoDRY Включает или отключает функцию автосушки — периодического закрытия убыточных позиций.
dryInter Интервал в часах между включениями автосушки.
dryInterm Интервал в минутах между включениями автосушки.
dryTime Длительность работы автосушки в часах.
dryTimem Длительность работы автосушки в минутах.
l_l Разделитель групп настроек, не является функциональным параметром.
StartT_time Время начала основной торговли в формате ЧЧ:ММ.
EndT_time Время окончания основной торговли в формате ЧЧ:ММ.
Friday Разрешает или запрещает торговлю в пятницу.
FridayTime Время окончания торговли в пятницу в формате ЧЧ:ММ.
Night Включает или отключает использование дополнительного времени торговли.
TradeSetka Включает или отключает доторговку сетки перед сменой шага.
Start_time Время начала дополнительной торговли в формате ЧЧ:ММ.
End_time Время окончания дополнительной торговли в формате ЧЧ:ММ.
Stepnight Шаг ордеров дополнительной сетки в пунктах.
i_i Разделитель групп настроек, не является функциональным параметром.
LUse_DStep Включает или отключает использование динамического шага сетки.
LK_DStep Величина динамического шага сетки.
LK_MLot Количество ордеров, добавляемых на одном шаге динамической сетки.
l2 Разделитель групп настроек, не является функциональным параметром.
traLL Включает или отключает трейлинг-стоп.
trstepTwo Постоянное расстояние от цены до стоп-лосса при трейлинге в пунктах.
TrallStartTwo Расстояние в пунктах, при котором активируется трейлинг-стоп.
AST Включает или отключает автоматическую остановку торговли при достижении заданных уровней просадки или маржи.
maxdd Максимальный уровень просадки в процентах для автоматической остановки торговли.
minum Минимальный уровень маржи для автоматической остановки торговли.
Lock Включает или отключает функцию локирования счёта.
UM_lock Уровень маржи, при котором выполняется локирование счёта.
DD_lock Уровень просадки в процентах, при котором выполняется локирование счёта.
lock Размер локирующего ордера в процентах от объёма сетки.
lll____lll Разделитель групп настроек, не является функциональным параметром.
MakeNews Включает или отключает новостной фильтр, блокирующий торговлю перед важными новостями.
MinDo Количество минут до новости, за которое торговля приостанавливается.
MinPosle Количество минут после новости, через которое торговля возобновляется.
Vhigh Включает или отключает отображение важных новостей.
Vmedium Включает или отключает отображение средних новостей.
Vlow Включает или отключает отображение слабых новостей.
NewsSymb Список валют, для которых отображаются новости. Пустое значение — только текущие валюты.
RisovatLini Включает или отключает отображение линий новостей на графике.
lll5 Разделитель групп настроек, не является функциональным параметром.
ADMIN Служебный параметр, не влияющий на торговую логику.
lll__lll Разделитель групп настроек, не является функциональным параметром.
Width Размер шрифта для отображения информации на графике.
Получить полный код

Поиск по коду файла

#property version      "2.03"
#property description "YETTI - это автоматизированный торговый алгоритм, представляющий собой"
#property description " универсального скальпера торгующий на тайм-фрейме м1."
#property description "- Yetti агрессивный советник подходящий не для всех типов инвесторов!"
#property description "- Отлично подходит для разгона депозита "
#property description "- Требует понимания рынка и контроля со стороны конечного пользователя."
#property description "Разработка:  si-group.store"

string  NUMBER = "L2Q";     // Номер продукта  
string  lic = "";           // Номер лицензии 
int     admin_code = 410028548;
string  txtlic = "no activ";

bool      NUMB=false,TRADE=false, TRADETIME=false, LIC=false;

string            ver = "2.03";
int               uny=22100123;                      // Уникальный номер
#property strict
#property icon    "big.ico"
#resource         "fonyetti.bmp" 
#resource         "logo.bmp" 
#resource         "sig1.bmp"
#include <stderror.mqh>
#include <..\Libraries\stdlib.mq4>
#include <..\Libraries\ATAC_1.02.mq4>

string lictxt = "Loading...";

enum lang   {ON,OFF};

extern  string    CODE               ="_ _ _ _ _ _ _ _ _ _";                         // Код активации 
extern  string    TXTp               ="Yetti Gold Template";                         // Название настроек
extern  color     txtcol             = clrDeepSkyBlue;                               // Цвет подписи
 int        llw                = 350;                                          // длина окна
 int        llf                = 12;                                           // размер шрифта
 int        lls                = 5;                                            // отступ сверху
 int        tl                 = 1;                                            // толщина линии
 int        lh                 = 30;                                           // высота
 int        th                 = 20;                                           // высота

bool       AutoTemplate       = true;                                                // Автошаблон    
extern int        Magic              = 2321;                                         // Magic number
extern double     Lots               = 0.01;                                         // Стартовый лот
extern double     Boost              = 1.2;                                          // Мультипликатор
extern int        Step               = 50;                                           // Шаг сетки 
extern int        TakeProfit         = 20;                                           // Тейк профит сетки 
int        CountMaxLotsB      = 100;                                                 // Максимальное количество открытых Бай ордеров (шт.)
int        CountMaxLotsS      = 100;                                                 // Максимальное количество открытых Селл ордеров (шт.)
extern string     l_le                 = "------------->Тейк по эквити<-------------"; //===============================================
extern bool       teq                  = false;                                      // Использовать ф-цию Тейк по Эквити
extern double     prteq                = 2.12;                                       // Процент фиксации профита
extern string     l_li                 = "------------->Стоп торговля<-------------"; //===============================================
extern int    StopProfit             = 2;                                            // Процент профита в день (%)
extern int    StopProfitW            = 20;                                           // Процент профита за неделю (%)
extern int    StopDD                 = 90;                                           // Процент просадки - закрываются все ордера
extern int    StopUM                 = 20;                                           // Уровень маржи - закрываются все ордера
extern string     l_lw                 = "------------->Автосушка<-------------"; //===============================================
extern bool       AutoDRY              = false;                                      // Использовать Автосушку
extern int        dryInter             =4;                                           // (часы) Интервал включения Автосушки
extern int        dryInterm            =0;                                           // (минуты) Интервал включения Автосушки
extern int        dryTime              =1;                                           // (часы) Время работы Автосушки 
extern int        dryTimem             =0;                                           // (минуты) Время работы Автосушки 
extern string     l_l                  = "------------->Время торговли<-------------"; //===============================================
extern string     StartT_time        ="06:00";                                       // Время начала основной торговли
extern string     EndT_time          ="19:00";                                       // Время окончания основной торговли
extern bool       Friday             = true;                                         // Торговля в пятницу
extern string     FridayTime         ="14:00";                                       // Время окончания торговли в пятницу
extern bool    Night              = true;                                            // Использовать дополнительное время
extern bool    TradeSetka         = true;                                            // Доторговать сетку перед сменой шага
extern string  Start_time         ="01:00";                                          // Время начала дополнительной торговли
extern string  End_time           ="06:00";                                          // Время окончания дополнительной торговли
extern int     Stepnight          = 100;                                             // Шаг ордера доп.сетки

extern string     i_i                  = "------------->Динамический шаг<-------------";//===============================================
extern bool   LUse_DStep         = false;                                            // Использовать динамический шаг
extern int    LK_DStep           = 10;                                               // Величина динамического шага
extern int    LK_MLot            = 2;                                                // Количество ордеров в одном шаге

extern string       l2                = "------------->Трейлинг СТОП<-------------";    //===============================================           
extern bool         traLL             = false;                                       // Включить Трейлинг СТОП 
extern int          trstepTwo         = 120;                                         // Постоянное расстояние от цены 
extern int          TrallStartTwo     = 150;                                         // Расстояние срабатывания  Трейлинг СТОПА
extern string  Автостоп               = "------------->Авто Стоп Торговля<-------------";//===============================================
extern bool   AST                     = false;                                       // Вкл\выкл Авто Стоп Торговлю
extern double maxdd                   = 50;                                          // Максимальный уровень просадки
extern double minum                   = 1000;                                        // Минимальный уровень маржи

extern string  Локирование            = "------------->Локирование<-------------";//===============================================
extern bool   Lock               = false;                                            // Использовать локирование счета
extern double UM_lock            = 5000;                                             // Уровень маржи при котором происходит лок
extern double DD_lock            = 50;                                               // Просадка при которой происходит лок
extern int    lock               = 100;                                              // Размер локирующего лока - процент от сетки

extern string lll____lll         = "------------->Новостной фильтр<-------------";//===============================================
extern bool         MakeNews    = true;                                              // Новостной фильтр
extern int   MinDo               = 60;                                               // Срабатывание минут до новости     
extern int   MinPosle            = 60;                                               // Срабатывание минут после новости
double   offset                    = 0;                                              // Часовой пояс сервера
double set = TimeCurrent() -  TimeGMT();
extern bool  Vhigh                     = true;                                        // Показывать важные новости
extern bool  Vmedium                   = false;                                       // Показывать средние новости
extern bool  Vlow                      = false;                                       // Показывать слабые новости 
extern string NewsSymb                 = "USD,EUR,GBP,CHF,CAD,AUD,NZD,JPY";           // Валюты для показа в новостях (пусто - только текущие валюты) 
extern bool  RisovatLini               = true;                                        // Рисовать линии на графике
bool  Next                      = false;                                              // Рисовать только линии будущих новостей  
bool  Signal                    = false;                                              // Сигналить о предстоящей новости
color highc                     = clrRed;                                             // Цвет важных новостей
color mediumc                   = clrBlue;                                            // Цвет средних новостей
color lowc                      = clrLime;                                            // Цвет слабых новостей 
int   Style                     = 2;                                                  // Стиль линии  
int   Upd                       = 86400;                                              // Период обновления новостей в секундах   

extern string lll5         = "--------------------------";                            // --------------------------
extern string ADMIN        = "****";                                                   
extern string lll__lll         = "===============Графика===============";//===============================================  
extern int       Width         = 8;            // Размер шрифта
 color     colshr        = clrWhiteSmoke;      // Цвет рамки
 color     coltxt        = clrBlack;           // Цвет текста

 string    Font2         = "Arial Black";      // Шрифт 2
 color     colram        = clrGreen;           // Цвет внешней рамки
 color     col_ram       = clrBrown;           // Цвет внутренней рамки
int       nn=0; 
 color     colTorg       = clrBlack; 
 string    txt           = "NON";     

int nh=0;                                     // Начало часа
double       SB,                              // Уровень хай 
             point,
             SS;                              // Уровень лов 
bool tradeDay    = false;                       // Якорь профита за день
bool tradeWeek  = false;                       // Якорь профита за неделю
bool STOPTRADE  =false;                        
bool TORG=false ;
bool trade = false;
datetime NewCandleTime=TimeCurrent();
int    Slippage  = 60;
int    Debug = 10,step,Error;
bool   ENDSTOP=false; 
int    MagicLO = 1230;                                // Факт ордера ЛО
double lots=Lots,                                     // Лот для селл ордеров
       barS = Bars,                                   // Количество баров для селл ордеров
       barB = Bars,                                   // Количество баров для бай ордеров
       urTPs,                                         // Проверяем уровень тейк профита селл
       stepS = 0,                                     // Шаг для Селл ордеров
       DD,                                            // Расчетный уровень просадки
       umm,                                           // Расчетный уровень маржи
       stepB = 0,                                     // Шаг для Бай ордеров
       urTPb,                                         // Проверяем уровень тейк профита бай
       lotb=Lots;                                     // Лот для бай ордеров
double TPB=0,TPS=0;

string    Font          = "Arial";
long      X             = 232;
long      Y             = 100;
string    InpName       = "info_Panel_yetti";
string    key_ind       = "object_yetti";
string    key_indW      = "object_yetti_PAN";
string    key_tot       = "object_Total_yetti";
string    key_min       = "object_mini";
bool      OBNpan        = false;                      // Переключатель панели  
string    key_indD      = "objectD_yetti";
bool      doppanel      = false;

double 
        pbcl_1,                            // Цена закрытия бай сетки в режиме закрытия от безубытка плюс тейк профит ситемы 
        pscl_1,                            // Цена закрытия сел сетки в режиме закрытия от безубытка плюс тейк профит ситемы 
        pbcl_2,                            // Цена закрытия бай сетки в режиме закрытия от безубытка плюс тейк профит ситемы 
        pscl_2,                            // Цена закрытия сел сетки в режиме закрытия от безубытка плюс тейк профит ситемы 
        pbbu_1,                            // Цена включения тралла бай сетки в режиме  от безубытка ситемы 
        psbu_1,                            // Цена включения тралла сел сетки в режиме  от безубытка ситемы 
        pbbu_2,                            // Цена включения тралла бай сетки в режиме  от безубытка ситемы 
        psbu_2,                            // Цена включения тралла сел сетки в режиме  от безубытка ситемы 
        pbsr_1,                            // Цена включения тралла бай сетки в режиме  от среднего ситемы 
        pssr_1,                            // Цена включения тралла сел сетки в режиме  от среднего ситемы 
        pbsr_2,                            // Цена включения тралла бай сетки в режиме  от среднего ситемы 
        pssr_2;                            // Цена включения тралла сел сетки в режиме  от среднего ситемы 
string   NameBuy    = "LineBuy";
string   NameSell   = "LineSell";
 color   ColorBuy   = clrTeal;
 color   ColorSell  = clrTomato;

 bool autodry=false;
datetime SeyTime=0,drytime=0;

 double OOPs1=0,OOPs2=0,OOPs3=0,OOPb1=0,OOPb2=0,OOPb3=0;
 bool   tralls1 = false,tralls2 = false,tralls3 = false,trallb1 = false,trallb2 = false,trallb3 = false;  

#import "wininet.dll"
int InternetAttemptConnect(int x);
int InternetOpenW(string sAgent,int lAccessType,
                  string sProxyName="",string sProxyBypass="",
                  int lFlags=0);
int InternetOpenUrlW(int hInternetSession,string sUrl,
                     string sHeaders="",int lHeadersLength=0,
                     int lFlags=0,int lContext=0);
int InternetReadFile(int hFile,int &sBuffer[],int lNumBytesToRead,
                     int &lNumberOfBytesRead[]);
int InternetCloseHandle(int hInet);
#import

double Torg[1];
int NomNews = 0;
string NewsArr[4][1000];

int Now=0;
color Col;
datetime LastUpd;
string str1;

bool tradenews=false;
string newtxt="News Loading";

color   clrC=clrWhiteSmoke;
bool    sushka = false;
string  txtkn = "СУШКА СЧЕТА";

color   clrS=clrWhiteSmoke;
bool    st = false,ast = false;
string  txtst = "СТОП ТОРГОВЛЯ";

bool lobuy = false, losell = false,LOCK = false;
    double umMM = 0,LOTLOB,LOTLOS;

int OnInit()
  {
      // код доступен только после оплаты
   }

void OnDeinit(const int reason)
  {
  del();Delmin();Del();
     ObjectDelete(0,InpName);
     ObjectsDeleteAll(0,key_ind); 
         if(UninitializeReason() == REASON_REMOVE)ObjectsDeleteAll(0,OBJ_VLINE);
   if(UninitializeReason() == REASON_PARAMETERS)
      {
       for(int i=0;i<ObjectsTotal();i++)
         {
          string name = ObjectName(i);
          if(ObjectGet(name,OBJPROP_TYPE) == OBJ_VLINE && ObjectGet(name,OBJPROP_TIME) >= iTime(Symbol(),PERIOD_W1,0)){ObjectDelete(name);i--;}
         } 
         } 
  }
  void del()
  { 
   ObjectsDeleteAll(0,key_indD);
  }

  void Delmin()
  {
   ObjectsDeleteAll(0,key_min);
  }
    void Del()
  {;
   ObjectsDeleteAll(0,key_indW);
  }
  void DEL()
  { 
   ObjectsDeleteAll();
  }
void OnTick()
  {
      // код доступен только после оплаты
   }

void TRALL(int op=-1, int mag = -1)
 {
  int k=OrdersTotal(), kp=0;
  double prT=0,midlpr = 0, rts = 0;

rts = ProfitPrice(Symbol(), op,  mag, 0);  

if (op==OP_BUY && mag==Magic){midlpr = rts + TrallStartTwo*_Point;  
if ( Bid > midlpr && trallb2==false){trallb2 = true;OOPb2 = Bid - trstepTwo*_Point;}
if ( Bid - trstepTwo*_Point > OOPb2 && trallb2==true)OOPb2 = Bid - trstepTwo*_Point;
                                     }
if (op==OP_SELL && mag==Magic){midlpr = rts - TrallStartTwo*_Point;  
if ( Ask < midlpr && tralls2==false){tralls2 = true;OOPs2 = Ask + trstepTwo*_Point;}
if ( Ask + trstepTwo*_Point< OOPs2 && tralls2==true)OOPs2 = Ask + trstepTwo*_Point;
                                    }
    datetime t=Time[0]+Period()*60;
   double price;
   int sub_window,result=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0)-530;
   double kkk=(WindowPriceMax()-WindowPriceMin())/100;
   ChartXYToTimePrice(0,result,1,sub_window,t,price);

 if (OOPb2>0){
       SetPriceLine(OOPb2, key_ind+"b2l",  ColorBuy); 
       TextCreate(0,key_ind+"b2",0,t,OOPb2+kkk,"Работает трал-"+DoubleToStr(OOPb2,_Digits),"Arial Black",Width,ColorBuy,0,ANCHOR_CENTER);
       ObjectDelete(0, key_ind+"сlseB" +NameBuy);ObjectDelete(0, key_ind+"сlseB");}

 if (OOPs2>0){       
      SetPriceLine(OOPs2, key_ind+"s2l", ColorSell);
      TextCreate(0,key_ind+"s2",0,t,OOPs2+kkk,"Работает трал-"+DoubleToStr(OOPs2,_Digits),"Arial Black",Width,ColorSell,0,ANCHOR_CENTER);
      ObjectDelete(0, key_ind+"сlseS" +NameSell);ObjectDelete(0, key_ind+"сlseS");}

                                          }

void SetPriceLine(double Price=0.0, string NameLine = "MyLine", color ColorLine = DarkOliveGreen)
  {
   if(ObjectFind(NameLine)==-1)
      ObjectCreate(NameLine, OBJ_HLINE, 0, 0, Price);
   if(Price==0.0)
     {
      ObjectDelete(NameLine);
     }
   else
     {
      ObjectSet(NameLine,OBJPROP_STYLE,STYLE_DOT);
      ObjectSet(NameLine, OBJPROP_PRICE1, Price);
      ObjectSet(NameLine, OBJPROP_COLOR, ColorLine);
      ObjectSet(NameLine, OBJPROP_BACK, true);
     }
  }

double ProfitPrice(string fSymbol, int fType, int fMagic=0, double MyProfit=0.0){

   double SummPrice=0.0, SummLots=0.0, Formula=0.0, SummLoss=0.0;
   int kq=0;
   int total = OrdersTotal();
   for (int i = total-1; i >= 0; i--) {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
      if(OrderSymbol()==fSymbol) {
         if(OrderMagicNumber()==fMagic || fMagic==0) {
            if(OrderType()==fType) {
               kq++;
               SummLots=SummLots+OrderLots();
               SummPrice=SummPrice+OrderOpenPrice()*OrderLots();
               SummLoss=SummLoss+OrderCommission()+OrderSwap();
            }
         }
      }
      }
   }//Next i  

   if(kq>0){
      if(fType==OP_BUY){
         Formula = SummPrice/SummLots + 
         (MyProfit-SummLoss) * MarketInfo(fSymbol, MODE_POINT) / 
         (MarketInfo(fSymbol, MODE_TICKVALUE) * SummLots);
      } else {
         Formula = SummPrice/SummLots - 
         (MyProfit-SummLoss) * MarketInfo(fSymbol, MODE_POINT) / 
         (MarketInfo(fSymbol, MODE_TICKVALUE) * SummLots);
      }
   }

   return(Formula);
}

double hilow(int op=-1)
  {
   double d, p,rr=0,rb=100000,rs=0;
   int i;

   p=MarketInfo(Symbol(), MODE_POINT);
   if(p==0)
      if(StringFind(Symbol(), "JPY")<0)
         p=0.0001;
      else
         p=0.01;
   for(i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if((OrderSymbol()==Symbol()) && (op<0 || OrderType()==op))
           {
            if(OrderMagicNumber()==Magic)
              {
               if(OrderType()==OP_BUY)
                 {
                  d=OrderOpenPrice();
                  if(rb>d)
                    {
                     rb=NormalizeDouble(d, Digits);
                     rr=rb;
                    }
                 }
               if(OrderType()==OP_SELL)
                 {
                  d=OrderOpenPrice();
                  if(rs<d)
                    {
                     rs=NormalizeDouble(d,Digits);
                     rr=rs;
                    }
                 }
              }
           }
        }
     }
   return(rr);
  }

int NOPO(int op=-1, int mg =-1)
  {
   int i, k=OrdersTotal(), kp=0;
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(OrderMagicNumber()==mg)
                     kp++;
                 }
              }
           }
        }
     }
   return(kp);
  }

double CO(int Per)
  {
   double perr;
   perr = NormalizeDouble(iOpen(Symbol(),0,Per),Digits);
   return (perr);
  }

double CC(int Per)
  {
   double perr;
   perr = NormalizeDouble(iClose(Symbol(),0,Per),Digits);
   return (perr);
  }

int Open_order(int op, double ll,int mg=0)
  {
   color    clOpen;
   datetime ot;
   double   pp=0, pa=0, pbb=0;
   int      err, it, ticket=0;
   string   lsComm=" ";

   for(it=1; it<=5; it++)
     {
      if(!IsTesting() && (!IsExpertEnabled() || IsStopped()))
        {
         Print("Open_order(): Остановка работы функции");
         break;
        }
      while(!IsTradeAllowed())
         Sleep(5000);
      RefreshRates();
      pa=MarketInfo(Symbol(), MODE_ASK);
      pbb=MarketInfo(Symbol(), MODE_BID);
      if(op==OP_BUY) {lsComm="Yetti - long";pp=pa;clOpen=clrAqua;} else {pp=pbb;lsComm="Yetti - short";clOpen=clrTomato;}
      if(op==OP_BUY)
         pp=pa;
      else
         pp=pbb;
      pp=NormalizeDouble(pp, Digits);
      ot=TimeCurrent();
      ticket=OrderSend(Symbol(), op, NormalizeDouble(ll,2), pp, Slippage, 0, 0, lsComm,mg, 0, clOpen);
      if(ticket>0)
        {

         break;
        }
      else
        {
         err=GetLastError();
         if(pa==0 && pbb==0)
            Print("Проверьте в Обзоре рынка наличие символа "+Symbol());

         if(err==4 || err==131 || err==132)
           {
            Sleep(1000*300);
            break;
           }

         if(err==140 || err==148 || err==4110 || err==4111)
            break;
         if(err==141)
            Sleep(1000*100);
         if(err==145)
            Sleep(1000*17);
         if(err==146)
            while(IsTradeContextBusy())
               Sleep(1000*11);
         if(err!=135)
            Sleep(1000*7.7);
        }
     }
   return(ticket);
  }

int S_ModifTp(int Magiccc,double UrovenTP_Sell)
  {

   double tpmodif = UrovenTP_Sell;
   int mt = OrdersTotal()   ;
   int Err=0;
   if(Debug>=3)
      Print(__FUNCTION__,"   S_ModifTp() UrovenTP_Sell = ",UrovenTP_Sell);
   for(int rm=0; rm<=mt-1; rm++)
     {
      if(OrderSelect(rm,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol() == Symbol() &&OrderMagicNumber()==Magiccc&&OrderType()==OP_SELL)
           {
            if(NormalizeDouble(OrderTakeProfit(),Digits)!=NormalizeDouble(tpmodif,Digits))
              {
               if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(),NormalizeDouble(tpmodif,Digits), 0, Yellow))
                 {
                  Err = GetLastError();
                  if(Debug!=0)
                     Print(__FUNCTION__,StringConcatenate("   Error(OrderModify - ",Err,"): ",ErrorDescription(Err), ")"));
                 }
               else
                  continue;
              }
            else
               continue;
           }
         else
            continue;
        }
      else
        {
         Error = GetLastError();
         Print(__FUNCTION__," 2 : OrderSelect Error ",Error," , ",ErrorDescription(Error));
         return(-1);
        }
     }
   return(1);
  }

int B_ModifTp(int Magiccc,double UrovenTP_Buy)
  {
   double tpmodif = UrovenTP_Buy;
   int mt = OrdersTotal()   ;
   int Err=0;
   if(Debug>=3)
      Print(__FUNCTION__,"   B_ModifTp() UrovenTP_Buy = ",UrovenTP_Buy,"  Magic ", Magiccc);
   for(int rm=0; rm<=mt-1; rm++)
     {

      if(OrderSelect(rm,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol() == Symbol() &&OrderMagicNumber()==Magiccc&&OrderType()==OP_BUY)
           {
            if(NormalizeDouble(OrderTakeProfit(),Digits)!=NormalizeDouble(tpmodif,Digits))
              {
               if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(),NormalizeDouble(tpmodif,Digits), 0, Yellow))
                 {
                  Err = GetLastError();
                  if(Debug!=0)
                     Print(__FUNCTION__,StringConcatenate("   Error(OrderModify - ",Err,"): ",ErrorDescription(Err), ")"));
                 }
               else
                  continue;
              }
            else
               continue;
           }
         else
            continue;
        }
      else
        {
         Error = GetLastError();
         Print(__FUNCTION__," 2 : OrderSelect Error ",Error," , ",ErrorDescription(Error));
         return(-1);
        }
     }
   return(1);
  }

bool LabelCreate(const long              chart_ID=0,               // ID графика
                 const string            name="Label",             // имя метки
                 const int               sub_window=0,             // номер подокна
                 const long              x=0,                      // координата по оси X
                 const long              y=0,                      // координата по оси y
                 const ENUM_BASE_CORNER  corner=CORNER_RIGHT_UPPER,// угол графика для привязки
                 const string            text="Label",             // текст
                 const string            font="Arial",             // шрифт
                 const int               font_size=10,             // размер шрифта
                 const color             clr=clrNONE,
                 const double            angle=0.0,                // наклон текста
                 const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // способ привязки
                 const bool              back=false,               // на заднем плане
                 const bool              selection=false,          // выделить для перемещений
                 const bool              hidden=true,              // скрыт в списке объектов
                 const long              z_order=0)                // приоритет на нажатие мышью
  {
   ResetLastError();
   if(ObjectFind(chart_ID,name)==-1)
     {
      if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0))
        {
         Print(__FUNCTION__,": не удалось создать текстовую метку! Код ошибки = ",GetLastError());
         return(false);
        }
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
      ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
      ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
     }
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   return(true);
  }

double GetLot(int op=-1, int mag = 0)
  {
   datetime o=0;
   double   l=-1;
   int      i,k=OrdersTotal();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(OrderMagicNumber()==mag)
                    {
                     if(o<OrderOpenTime())
                       {
                        o=OrderOpenTime();
                        l=OrderLots();
                       }
                    }
                 }
              }
           }
        }
     }
   return(l);
  }
bool WH(){datetime time_0=TimeCurrent();datetime time_1=StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+"23:00");datetime time_2=StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+"23:10");
if( time_1 < time_2 && time_1 <= time_0 && time_0 <= time_2 ) return (true);if( time_1 > time_2 && (time_0 >= time_1 || time_0 <= time_2)) return (true);return (false);} 

bool ButtonCreate(const long              chart_ID=0,               // ID графика
                  const string            name="Button",            // имя кнопки
                  const int               sub_window=0,             // номер подокна
                  const long               x=0,                     // координата по оси X
                  const long               y=0,                     // координата по оси y
                  const int               width=50,                 // ширина кнопки
                  const int               height=18,                // высота кнопки
                  const string            text="Button",            // текст
                  const string            font="Arial",             // шрифт
                  const int               font_size=10,             // размер шрифта
                  const color             clr=clrNONE,              //цвет текста
                  const color             clrON=clrNONE,            //цвет фона
                  const color             clrOFF=clrNONE,           //цвет фона
                  const bool              state=false,              // нажата/отжата
                  const ENUM_BASE_CORNER  corner=CORNER_RIGHT_UPPER)// угол графика для привязки
  {
   if(ObjectFind(chart_ID,name)==-1)
     {
      ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);

      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,0);
      ObjectSetInteger(c

Показано первые 50% кода (символов: 65386)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
6 538,60₽ ≈ $79.91