ea_2_activ_008.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ea_2_activ_008.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для MetaTrader 4, работающий с двумя валютными парами одновременно в режиме хеджинга. Поддерживает ручной и автоматический режимы открытия сделок, фиксированный и динамический расчёт лота, а также управление позицией через профит-трейл, безубыток, стоплосс и дозакупку при просадке. Встроенная информационная панель отображает текущий профит по каждой магической сессии, общую лотность и просадку. Советник учитывает временные интервалы торговли, режим работы только в часы открытого рынка, а также возможность закрытия всех позиций по истечении заданного времени.
Настройки программы
| Настройка | Описание |
|---|---|
| открытие сделок вручную (manualtrade) | открытие сделок вручную — Переключатель ручного режима: при включении сделки открываются через кнопки на панели графика, при выключении — автоматически по условиям советника |
| актив 1 (activ1) | актив 1 — Первый валютный инструмент для торговли |
| актив 2 (activ2) | актив 2 — Второй валютный инструмент для торговли |
| магик первая пара (magic1) | магик первая пара — Уникальный идентификатор магического номера для позиций по первому активу |
| магик вторая пара (magic2) | магик вторая пара — Уникальный идентификатор магического номера для позиций по второму активу |
| лот динамический (dynlot) | лот динамический — Включает расчёт лота в зависимости от размера счёта и заданного шага |
| dynlotvalue | базовое значение динамического лота — Базовое значение лота, используемое при динамическом расчёте |
| dynlotstepmoney | шаг динамического лота в деньгах — Шаг увеличения лота, привязанный к определённой сумме на счёте |
| лот фиксированный (fixlot) | лот фиксированный — Фиксированный размер лота для сделок при выключенном динамическом режиме |
| коэффициент лота для второго актива (koefforactiv2) | коэффициент лота для второго актива — Множитель лота, применяемый к второму валютному инструменту |
| профит на стартовой паре в деньгах (startprofitmoney) | профит на стартовой паре в деньгах — Целевая сумма прибыли в деньгах для закрытия стартовой позиции |
| профит на стартовой паре в процентах от депозита (startprofitpercent) | профит на стартовой паре в процентах от депозита — Целевой процент прибыли от депозита для закрытия стартовой позиции |
| трал профита (tralprofita) | трал профита — Включает режим трейлинга прибыли по позициям |
| старт трала профита (starttralaprofita) | старт трала профита — Начальная величина прибыли, с которой активируется трейлинг |
| шаг трала профита (shagtralaprofita) | шаг трала профита — Величина сдвига трейлинг-стопа при каждом шаге |
| сделать алерт на старт трала (starttrala) | сделать алерт на старт трала — Включает отправку уведомления при начале трейлинга прибыли |
| сделать алерт на каждый шаг трала (shagtrala) | сделать алерт на каждый шаг трала — Включает отправку уведомления при каждом сдвиге трейлинг-стопа |
| безубыток или в деньгах + или - (bezubitok) | безубыток или в деньгах + или - — Порог безубыточности в денежных единицах для закрытия позиции |
| в проценте от депозита (procentotdepo) | в проценте от депозита — Процент от текущего депозита, при достижении которого позиция закрывается по безубытку |
| догон, доливка (dolivka) | догон, доливка — Включает режим увеличения позиции при убытке |
| доливка только по убыточной сделке (lossdolivka) | доливка только по убыточной сделке — Ограничивает доливку только для убыточных позиций |
| просадка в деньгах (ddinmoney) | просадка в деньгах — Порог убытка в деньгах, при достижении которого запускается дозакупка |
| просадка в процентах (ddinpercent) | просадка в процентах — Порог убытка в процентах от депозита, при достижении которого запускается дозакупка |
| коэфф добавки лота актив 1 (koefmartin) | коэфф добавки лота актив 1 — Множитель увеличения лота для первого актива при дозакупке |
| коэфф добавки лота актив 2 (koefmartin2) | коэфф добавки лота актив 2 — Множитель увеличения лота для второго актива при дозакупке |
| стоплосс (stoploss) | стоплосс — Включает режим стоплосса по прибыли позиции |
| стоплосс в деньгах (stoplossmoney) | стоплосс в деньгах — Порог убытка в деньгах для принудительного закрытия позиции |
| стоплосс в процентах (stoplosspercent) | стоплосс в процентах — Порог убытка в процентах от депозита для принудительного закрытия позиции |
| Торговля в строго заданном временном интервале (timeinterval) | Торговля в строго заданном временном интервале — Включает ограничение торговли заданным временным окном |
| Час старта торговли (starthour) | Час старта торговли — Час начала торговой сессии |
| Минута старта торговли (startminute) | Минута старта торговли — Минута начала торговой сессии |
| Час окончания торговли (endhour) | Час окончания торговли — Час окончания торговой сессии |
| Минута окончания торговли (endminute) | Минута окончания торговли — Минута окончания торговой сессии |
| закрывать все позы по времени окончания (closeallatendtime) | закрывать все позы по времени окончания — Автоматически закрывает все позиции по истечении заданного временного интервала |
| выключать советник по времени окончания (vikluchitsovetnik) | выключать советник по времени окончания — Отключает советник после окончания заданного временного интервала |
| сколько кругов мотать (countkrug) | сколько кругов мотать — Максимальное количество циклов открытия позиций |
| круги по времени (krugipovremeny) | круги по времени — Включает привязку циклов открытия к заданным часам и минутам |
| Час круга (hourkrug1) | Час круга — Час начала первого торгового круга |
| Минута круга (minkrug1) | Минута круга — Минута начала первого торгового круга |
| Час круга (hourkrug2) | Час круга — Час начала второго торгового круга |
| Минута круга (minkrug2) | Минута круга — Минута начала второго торгового круга |
| Час круга (hourkrug3) | Час круга — Час начала третьего торгового круга |
| Минута круга (minkrug3) | Минута круга — Минута начала третьего торгового круга |
| показать панель (ShowPanel) | показать панель — Включает отображение информационной панели на графике |
| цвет текста (TextColor) | цвет текста — Цвет текста на информационной панели |
| размер текста (FontSize) | размер текста — Размер шрифта текста на информационной панели |
| фон панели (PanelColor) | фон панели — Цвет фона информационной панели |
| Запретить торговлю при закрытом рынке (marketclose) | Запретить торговлю при закрытом рынке — Запрещает торговлю в часы закрытого рынка |
| Час закрытия рынка (marketclosehour) | Час закрытия рынка — Час начала запрета торговли |
| Минута закрытия рынка (marketcloseminute) | Минута закрытия рынка — Минута начала запрета торговли |
| Час открытия рынка (marketcloseendhour) | Час открытия рынка — Час окончания запрета торговли |
| Минута открытия рынка (marketcloseendminute) | Минута открытия рынка — Минута окончания запрета торговли |
Поиск по коду файла
#property strict
#define PRODUCT_ID 10750//Quadro Hedge
#define VERSION "1.00"; //номер версии при обновлении меняем тоже, это на будущее когда будет доступна првоерка версий и обновления
#property version VERSION
#include <TradeFunctions.mqh>
#include <EA_Protect\protect.mqh>
#include <EA_Protect/Protect.mqh>
SHOW_LICENSE_PARAMS
PROTECT_CREATE
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
ObjectsDeleteAll(0);
EventKillTimer();
PROTECT_DEINIT
}
void OnTimer()
{
PROTECT_TIMER
f_mouseclick();
}
void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam) {PROTECT_EVENT}
input group "--------- основные настройки"
enum danet
{
da,//да
net//нет
};
input danet manualtrade=net;//открытие сделок вручную
input string activ1="AUDUSD";//актив 1
input string activ2="NZDUSD";//актив 2
input int magic1=111;//магик первая пара
input int magic2=222;//магик вторая пара
input danet dynlot=net;//лот динамический
input double dynlotvalue=0.01;//
input double dynlotstepmoney=50;//
input double fixlot=0.01;//лот фиксированный
input double koefforactiv2=1.5;//коэффициент лота для второго актива
input group "--------- профит на стартовой паре"
input double startprofitmoney=10;//профит на стартовой паре в деньгах
input double startprofitpercent=1;//профит на стартовой паре в процентах от депозита
input danet tralprofita=net;//трал профита
input double starttralaprofita=10;//старт трала профита
input double shagtralaprofita=5;//шаг трала профита
input danet starttrala=net;//сделать алерт на старт трала
input danet shagtrala=net;//сделать алерт на каждый шаг трала
input group "--------- как закрывать остаточную пару"
input double bezubitok=0;//безубыток или в деньгах + или -
input double procentotdepo=1;//в проценте от депозита
input danet dolivka=net;//догон, доливка
input danet lossdolivka=net;//доливка только по убыточной сделке
input double ddinmoney=100;//просадка в деньгах
input double ddinpercent=20;//просадка в процентах
input double koefmartin=1;//коэфф добавки лота актив 1
input double koefmartin2=1;//коэфф добавки лота актив 2
input danet stoploss=net;//стоплосс
input double stoplossmoney=300;//стоплосс в деньгах
input double stoplosspercent=25;//стоплосс в процентах
input group "--------- настройки времени"
input danet timeinterval=net;//Торговля в строго заданном временном интервале
input int starthour=10;//Час старта торговли
input int startminute=30;//Минута старта торговли
input int endhour=15;//Час окончания торговли
input int endminute=30;//Минута окончания торговли
input danet closeallatendtime=net;//закрывать все позы по времени окончания
input danet vikluchitsovetnik=net;//выключать советник по времени окончания
input int countkrug=1;//сколько кругов мотать
input danet krugipovremeny=net;//круги по времени
input int hourkrug1=12;//Час круга
input int minkrug1=0;//Минута круга
bool krug1,krug2,krug3;
input int hourkrug2=16;//Час круга
input int minkrug2=0;//Минута круга
input int hourkrug3=19;//Час круга
input int minkrug3=30;//Минута круга
input group "--------- настройки панели"
input danet ShowPanel=da;//показать панель
input color TextColor=clrWhite;//цвет текста
input int FontSize=8;//размер текста
input color PanelColor=clrBlack;//фон панели
input group "--------- рынок закрыт для торговли"
input danet marketclose=da;//Запретить торговлю при закрытом рынке
input int marketclosehour=22;//Час закрытия рынка
input int marketcloseminute=50;//Минута закрытия рынка
input int marketcloseendhour=1;//Час открытия рынка
input int marketcloseendminute=10;//Минута открытия рынка
int Slippage=123;
string Komment="EA_2_Activ";
double tralmag1,tralmag2;
double dolivka1,dolivka2;
int cdolivka1,cdolivka2;
double dolivka1perc,dolivka2perc;
int cdolivka1perc,cdolivka2perc;
double firstlot;
int kolkrug;
datetime daykrug;
datetime tektime;
void OnTick()
{
// код доступен только после оплаты
}
if(!PROTECT_STATUS) return;
if(SymbolInfoDouble(activ1,SYMBOL_ASK)==0||
SymbolInfoDouble(activ1,SYMBOL_BID)==0||
SymbolInfoDouble(activ2,SYMBOL_ASK)==0||
SymbolInfoDouble(activ2,SYMBOL_BID)==0)
return;
if(TimeCurrent()>tektime+3&&ShowPanel==da)
{
DrawTextLabel("profm1",0,5,204,"текущий профит по магику "+IntegerToString(magic1)+" : "+DoubleToString(f_profit(magic1),2),FontSize,TextColor);
DrawTextLabel("profm2",0,5,234,"текущий профит по магику "+IntegerToString(magic2)+" : "+DoubleToString(f_profit(magic2),2),FontSize,TextColor);
DrawTextLabel("lott",0,5,264,"общая лотность позиций : "+DoubleToString(f_lot(),2),FontSize,TextColor);
DrawTextLabel("alldd",0,5,294,"просадка в процентах : "+DoubleToString(
(100.0*(f_allprofit()/AccountInfoDouble(ACCOUNT_BALANCE))<0?MathAbs(100.0*(f_allprofit()/AccountInfoDouble(ACCOUNT_BALANCE))):0)
,2)+"%",FontSize,TextColor);
}
f_mouseclick();
if(daykrug!=iTime(_Symbol,PERIOD_D1,0))
{
daykrug=iTime(_Symbol,PERIOD_D1,0);
kolkrug=0;
krug1=false;
krug2=false;
krug3=false;
}
if(marketclose==da)
{
datetime tstart=StringToTime(IntegerToString(YearMQL4())+"."+IntegerToString(MonthMQL4())+"."
+IntegerToString(DayMQL4())+" "+IntegerToString(marketclosehour)+":"+IntegerToString(marketcloseminute)+":00");
datetime tend=StringToTime(IntegerToString(YearMQL4())+"."+IntegerToString(MonthMQL4())+"."
+IntegerToString(DayMQL4())+" "+IntegerToString(marketcloseendhour)+":"+IntegerToString(marketcloseendminute)+":00");
if(tstart<tend)
if(TimeCurrent()>tstart&&TimeCurrent()<tend)
return;
if(tstart>tend)
if(TimeCurrent()>tstart||TimeCurrent()<tend)
return;
}
if(f_count_of_magic(magic1)==0&&f_count_of_magic(magic2)>0)
{
if(f_profit(magic2)>=bezubitok)
f_close(magic2);
if(procentotdepo)
if(100.0*(f_profit(magic2)/AccountInfoDouble(ACCOUNT_BALANCE))>=procentotdepo)
f_close(magic2);
if(stoploss==da)
{
if(MathAbs(stoplossmoney)>0)
if(f_profit(magic2)<=(-1)*MathAbs(stoplossmoney))
f_close(magic2);
if(MathAbs(stoplosspercent)>0)
if(100.0*(f_profit(magic2)/AccountInfoDouble(ACCOUNT_BALANCE))<=(-1)*MathAbs(stoplosspercent))
f_close(magic2);
}
if(dolivka==da)
{
if(MathAbs(ddinmoney)>0)
{
if(f_profit(magic2)<=(-1)*MathAbs(ddinmoney)&&dolivka2==0)
{
dolivka2=f_profit(magic2);
cdolivka2=1;
double tradelot=firstlot*MathPow(koefmartin,cdolivka2);
double tradelot2=firstlot2*MathPow(koefmartin2,cdolivka2);
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic2,activ1)<0))
if(OrderSend(activ1,OP_BUY,
MathFloor(tradelot/SymbolInfoDouble(activ1,SYMBOL_VOLUME_STEP))*SymbolInfoDouble(activ1,SYMBOL_VOLUME_STEP),
SymbolInfoDouble(activ1,SYMBOL_ASK),Slippage,0,0,Komment,magic2,0,clrBlue)) {}
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic2,activ2)<0))
if(OrderSend(activ2,OP_SELL,
MathFloor(tradelot2/SymbolInfoDouble(activ2,SYMBOL_VOLUME_STEP))*SymbolInfoDouble(activ2,SYMBOL_VOLUME_STEP),
SymbolInfoDouble(activ2,SYMBOL_BID),Slippage,0,0,Komment,magic2,0,clrRed)) {}
cdolivka2++;
}
/*if(f_profit(magic2)<=(-1)*MathAbs(ddinmoney)+dolivka2&&dolivka2!=0){
dolivka2=f_profit(magic2);
double tradelot=firstlot*MathPow(koefmartin,cdolivka2);
double tradelot2=firstlot2*MathPow(koefmartin2,cdolivka2);
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic2,activ1)<0))
if(OrderSend(activ1,OP_BUY,tradelot,
SymbolInfoDouble(activ1,SYMBOL_ASK),Slippage,0,0,Komment,magic2,0,clrBlue)){}
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic2,activ2)<0))
if(OrderSend(activ2,OP_SELL,tradelot2,
SymbolInfoDouble(activ2,SYMBOL_BID),Slippage,0,0,Komment,magic2,0,clrRed)){}
cdolivka2++;
}*/
}
if(MathAbs(ddinpercent)>0)
{
if(100.0*(f_profit(magic2)/AccountInfoDouble(ACCOUNT_BALANCE))
<=(-1)*MathAbs(ddinpercent)&&dolivka2perc==0)
{
dolivka2perc=100.0*(f_profit(magic2)/AccountInfoDouble(ACCOUNT_BALANCE));
cdolivka2perc=1;
double tradelot=firstlot*MathPow(koefmartin,cdolivka2perc);
double tradelot2=firstlot2*MathPow(koefmartin2,cdolivka2perc);
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic2,activ1)<0))
if(OrderSend(activ1,OP_BUY,
MathFloor(tradelot/SymbolInfoDouble(activ1,SYMBOL_VOLUME_STEP))*SymbolInfoDouble(activ1,SYMBOL_VOLUME_STEP),
SymbolInfoDouble(activ1,SYMBOL_ASK),Slippage,0,0,Komment,magic2,0,clrBlue)) {}
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic2,activ2)<0))
if(OrderSend(activ2,OP_SELL,
MathFloor(tradelot2/SymbolInfoDouble(activ2,SYMBOL_VOLUME_STEP))*SymbolInfoDouble(activ2,SYMBOL_VOLUME_STEP),
SymbolInfoDouble(activ2,SYMBOL_BID),Slippage,0,0,Komment,magic2,0,clrRed)) {}
cdolivka2perc++;
}
/*if(100.0*(f_profit(magic2)/AccountInfoDouble(ACCOUNT_BALANCE))
<=(-1)*MathAbs(ddinpercent)+dolivka2perc&&dolivka2perc!=0){
dolivka2perc=100.0*(f_profit(magic2)/AccountInfoDouble(ACCOUNT_BALANCE));
double tradelot=firstlot*MathPow(koefmartin,cdolivka2perc);
double tradelot2=firstlot2*MathPow(koefmartin2,cdolivka2perc);
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic2,activ1)<0))
if(OrderSend(activ1,OP_BUY,tradelot,
SymbolInfoDouble(activ1,SYMBOL_ASK),Slippage,0,0,Komment,magic2,0,clrBlue)){}
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic2,activ2)<0))
if(OrderSend(activ2,OP_SELL,tradelot2,
SymbolInfoDouble(activ2,SYMBOL_BID),Slippage,0,0,Komment,magic2,0,clrRed)){}
cdolivka2perc++;
}*/
}
}
}
if(f_count_of_magic(magic2)==0&&f_count_of_magic(magic1)>0)
{
if(f_profit(magic1)>=bezubitok)
f_close(magic1);
if(procentotdepo)
if(100.0*(f_profit(magic1)/AccountInfoDouble(ACCOUNT_BALANCE))>=procentotdepo)
f_close(magic1);
if(stoploss==da)
{
if(MathAbs(stoplossmoney)>0)
if(f_profit(magic1)<=(-1)*MathAbs(stoplossmoney))
f_close(magic1);
if(MathAbs(stoplosspercent)>0)
if(100.0*(f_profit(magic1)/AccountInfoDouble(ACCOUNT_BALANCE))<=(-1)*MathAbs(stoplosspercent))
f_close(magic1);
}
if(dolivka==da)
{
if(MathAbs(ddinmoney)>0)
{
if(f_profit(magic1)<=(-1)*MathAbs(ddinmoney)&&dolivka1==0)
{
dolivka1=f_profit(magic1);
cdolivka1=1;
double tradelot=firstlot*MathPow(koefmartin,cdolivka1);
double tradelot2=firstlot2*MathPow(koefmartin2,cdolivka1);
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic1,activ1)<0))
if(OrderSend(activ1,OP_SELL,
MathFloor(tradelot/SymbolInfoDouble(activ1,SYMBOL_VOLUME_STEP))*SymbolInfoDouble(activ1,SYMBOL_VOLUME_STEP),
SymbolInfoDouble(activ1,SYMBOL_BID),Slippage,0,0,Komment,magic1,0,clrRed)) {}
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic1,activ2)<0))
if(OrderSend(activ2,OP_BUY,
MathFloor(tradelot2/SymbolInfoDouble(activ2,SYMBOL_VOLUME_STEP))*SymbolInfoDouble(activ2,SYMBOL_VOLUME_STEP),
SymbolInfoDouble(activ2,SYMBOL_ASK),Slippage,0,0,Komment,magic1,0,clrBlue)) {}
cdolivka1++;
}
/*if(f_profit(magic1)<=(-1)*MathAbs(ddinmoney)&&dolivka1!=0){
dolivka1=f_profit(magic1);
double tradelot=firstlot*MathPow(koefmartin,cdolivka1);
double tradelot2=firstlot2*MathPow(koefmartin2,cdolivka1);
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic1,activ1)<0))
if(OrderSend(activ1,OP_SELL,tradelot,
SymbolInfoDouble(activ1,SYMBOL_BID),Slippage,0,0,Komment,magic1,0,clrRed)){}
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic1,activ2)<0))
if(OrderSend(activ2,OP_BUY,tradelot2,
SymbolInfoDouble(activ2,SYMBOL_ASK),Slippage,0,0,Komment,magic1,0,clrBlue)){}
cdolivka1++;
}*/
}
if(MathAbs(ddinpercent)>0)
{
if(100.0*(f_profit(magic1)/AccountInfoDouble(ACCOUNT_BALANCE))
<=(-1)*MathAbs(ddinpercent)&&dolivka1perc==0)
{
dolivka1perc=100.0*(f_profit(magic1)/AccountInfoDouble(ACCOUNT_BALANCE));
cdolivka1perc=1;
double tradelot=firstlot*MathPow(koefmartin,cdolivka1perc);
double tradelot2=firstlot2*MathPow(koefmartin2,cdolivka1perc);
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic1,activ1)<0))
if(OrderSend(activ1,OP_SELL,
MathFloor(tradelot/SymbolInfoDouble(activ1,SYMBOL_VOLUME_STEP))*SymbolInfoDouble(activ1,SYMBOL_VOLUME_STEP),
SymbolInfoDouble(activ1,SYMBOL_BID),Slippage,0,0,Komment,magic1,0,clrRed)) {}
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic1,activ2)<0))
if(OrderSend(activ2,OP_BUY,
MathFloor(tradelot2/SymbolInfoDouble(activ2,SYMBOL_VOLUME_STEP))*SymbolInfoDouble(activ2,SYMBOL_VOLUME_STEP),
SymbolInfoDouble(activ2,SYMBOL_ASK),Slippage,0,0,Komment,magic1,0,clrBlue)) {}
cdolivka1perc++;
}
/*if(100.0*(f_profit(magic1)/AccountInfoDouble(ACCOUNT_BALANCE))
<=(-1)*MathAbs(ddinpercent)&&dolivka1perc!=0){
dolivka1perc=100.0*(f_profit(magic1)/AccountInfoDouble(ACCOUNT_BALANCE));
double tradelot=firstlot*MathPow(koefmartin,cdolivka1perc);
double tradelot2=firstlot2*MathPow(koefmartin2,cdolivka1perc);
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic1,activ1)<0))
if(OrderSend(activ1,OP_SELL,tradelot,
SymbolInfoDouble(activ1,SYMBOL_BID),Slippage,0,0,Komment,magic1,0,clrRed)){}
if(lossdolivka==net||(lossdolivka==da&&f_profit_mag_sym(magic1,activ2)<0))
if(OrderSend(activ2,OP_BUY,tradelot2,
SymbolInfoDouble(activ2,SYMBOL_ASK),Slippage,0,0,Komment,magic1,0,clrBlue)){}
cdolivka1perc++;
}*/
}
}
}
if(tralprofita==net)
{
if(startprofitmoney>0)
{
if(f_profit(magic1)>=startprofitmoney&&f_count_of_magic(magic2)>0)
f_close(magic1);
if(f_profit(magic2)>=startprofitmoney&&f_count_of_magic(magic1)>0)
f_close(magic2);
}
if(startprofitpercent>0)
{
if(100.0*(f_profit(magic1)/AccountInfoDouble(ACCOUNT_BALANCE))>=startprofitpercent&&f_count_of_magic(magic2)>0)
f_close(magic1);
if(100.0*(f_profit(magic2)/AccountInfoDouble(ACCOUNT_BALANCE))>=startprofitpercent&&f_count_of_magic(magic1)>0)
f_close(magic2);
}
}
else
{
if(f_profit(magic1)>=starttralaprofita&&tralmag1==0&&f_count_of_magic(magic2)>0)
{
tralmag1=f_profit(magic1);
if(starttrala==da)
Alert("алерт на старт трала профита");
}
if(f_profit(magic1)>=tralmag1+shagtralaprofita&&tralmag1>0&&f_count_of_magic(magic2)>0)
{
tralmag1=f_profit(magic1);
if(shagtrala==da)
Alert("алерт на каждый шаг трала профита");
}
if(f_profit(magic1)<=tralmag1-shagtralaprofita&&tralmag1>0&&f_count_of_magic(magic2)>0)
{
f_close(magic1);
}
if(f_profit(magic2)>=starttralaprofita&&tralmag2==0&&f_count_of_magic(magic1)>0)
{
tralmag2=f_profit(magic2);
if(starttrala==da)
Alert("алерт на старт трала профита");
}
if(f_profit(magic2)>=tralmag2+shagtralaprofita&&tralmag2>0&&f_count_of_magic(magic1)>0)
{
tralmag2=f_profit(magic2);
if(shagtrala==da)
Alert("алерт на каждый шаг трала профита");
}
if(f_profit(magic2)<=tralmag2-shagtralaprofita&&tralmag2>0&&f_count_of_magic(magic1)>0)
{
f_close(magic2);
}
}
if(timeinterval==da)
{
datetime tstart=StringToTime(IntegerToString(YearMQL4())+"."+IntegerToString(MonthMQL4())+"."
+IntegerToString(DayMQL4())+" "+IntegerToString(starthour)+":"+IntegerToString(startminute)+":00");
datetime tend=StringToTime(IntegerToString(YearMQL4())+"."+IntegerToString(MonthMQL4())+"."
+IntegerToString(DayMQL4())+" "+IntegerToString(endhour)+":"+IntegerToString(endminute)+":00");
if(TimeCurrent()<tstart)
return;
if(TimeCurrent()>tend)
{
Показано первые 50% кода (символов: 27929)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.