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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.