//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseTimeAll(int ot=-1){
bool cl=1;
int closeTime=CloseTime();
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if(TimeCurrent()-OrderOpenTime()>closeTime*3600){
if(OrderType()==0 && (ot==0 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
}
if(OrderType()==1 && (ot==1 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1){
bool cl;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if(OrderType()==0 && (ot==0 || ot==-1)){
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
}
if(OrderType()==1 && (ot==1 || ot==-1)){
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
}
}
}
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double lo=Low[iLowest(NULL,0,MODE_LOW,CountH1,0)];
double hi=High[iHighest(NULL,0,MODE_HIGH,CountH1,0)];
double midl=(hi+lo)/2;
double x=(hi-lo)/_Point;
if(FletClose && x<Y() && CountTrades()!=0)CloseAll();
if(_CloseTime)CloseTimeAll();
if(Trailing)TrailingPositions();
if(CountTrades()<1 && x>Y())
{
if(Bid<hi && Bid>(hi+lo)/2)
PutOrder(0,Ask);
if(Bid>lo && Bid<(hi+lo)/2)
PutOrder(1,Bid);
}
/*
Comment( "\n ПОКАЗАТЕЛИ РАССЧИТАННЫЕ СИСТЕМОЙ ATS",
"\n Недельная норма движения : -- ",NormalizeDouble(Y(),0),
"\n Текущее движение на H1 : -- ",NormalizeDouble(x,0),
"\n Рассчитанный Трейлинг-стоп(Stop loss): -- ",NormalizeDouble(Y()*H,0),
"\n Рассчетное время закрытия позиции : -- ",NormalizeDouble(CloseTime(),0));
*/
SetLabel("Label1", "ПОКАЗАТЕЛИ РАССЧИТАННЫЕ СИСТЕМОЙ ATS", LineColor, 5, 75, corner, raz);
SetLabel("Label2", "Недельная норма движения : -- "+DoubleToStr(Y(),0)+" пп", LineColor, 5, 60, corner, raz);
SetLabel("Label3", "Текущее движение на H1 : -- "+DoubleToStr(x,0)+" пп", LineColor, 5, 45, corner, raz);
SetLabel("Label4", "Рассчитанный Трейлинг-стоп(Stop loss): -- "+DoubleToStr(Y()*H,0)+" пп", LineColor, 5, 30, corner, raz);
SetLabel("Label5", "Рассчетное время закрытия позиции : -- "+DoubleToStr(CloseTime(),0)+" часов", LineColor, 5, 15, corner, raz);
SetHLine(clrRed, "lo", lo, STYLE_SOLID, 1);
SetHLine(clrYellow, "midl", midl, STYLE_SOLID, 1);
SetHLine(clrLime, "hi", hi, STYLE_SOLID, 1);
double _lo=(lo+midl)/2;// линия Middle.L
double _hi=(hi+midl)/2;// линия Middle.H
double _lov=Low[iLowest(NULL,0,MODE_LOW,_CountH1,0)];//High и Low на промежутке 120 свечей на графике H1 за последние 48 часов.
double _hig=High[iHighest(NULL,0,MODE_HIGH,_CountH1,0)];//High и Low на промежутке 120 свечей на графике H1 за последние 48 часов.
if(lo<_lov && hi>_hig){
SetHLine(clrWhiteSmoke, "_lo", _lo, STYLE_SOLID, 1);
SetHLine(clrAqua, "_hi", _hi, STYLE_SOLID, 1);
SetLabel("Label6"," High и Low не обновились за последние 48 часов = Флет", clrRed, 5, 15, 0, 12);
}
else{
SetLabel("Label6"," High и Low обновились за последние 48 часов = Тренд", clrLime, 5, 15, 0, 12);
}
if((lo<_lov && hi<=_hig) || (lo>=_lov && hi>_hig)){
SetLabel("Label7"," High и Low частично обновились за последние 48 часов = Сужение канала",clrYellow, 5, 30, 0, 12);
}
else{SetLabel("Label7","", clrNONE, 5, 30, 0, 12);}
}
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 30.03.2008 |
//| Описание : Установка объекта OBJ_HLINE горизонтальная линия |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| cl - цвет линии |
//| nm - наименование ("" - время открытия текущего бара) |
//| p1 - ценовой уровень (0 - Bid) |
//| st - стиль линии (0 - простая линия) |
//| wd - ширина линии (0 - по умолчанию) |
//+----------------------------------------------------------------------------+
void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (p1<=0) p1=Bid;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0);
ObjectSet(nm, OBJPROP_PRICE1, p1);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_STYLE , st);
ObjectSet(nm, OBJPROP_WIDTH , wd);
}
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 12.10.2007 |
//| Описание : Установка текстовой метки, объект OBJ_LABEL. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| nm - наименование объекта |
//| tx - текст |
//| cl - цвет метки |
//| xd - координата X в пикселах |
//| yd - координата Y в пикселах |
//| cr - номер угла привязки (0 - левый верхний, |
//| 1 - правый верхний, |
//| 2 - левый нижний, |
//| 3 - правый нижний ) |
//| fs - размер шрифта (9 - по умолчанию ) |
//+----------------------------------------------------------------------------+
void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER , cr);
ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
//+----------------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------+
//| Weakly Советник с мультитаймфреймовым анализом от Lerdon, AM2 и SSG_flet.mq4 |
//| Copyright 2019, Lerdon, AM2 и SSG_flet|
//| http://www.forexsystems.biz |
//+-------------------------------------------------------------------------------------+
#property copyright "Разработан 2022, Lerdon, AM2 и SSG_flet"
#property link "ATS-TALLROCK"
#property version "1.04"
#property strict
//--- Inputs
extern double Lots = 0.1; // Фикс. размер позиции
extern double Risk = 10; // Размер в процентах от баланса
extern bool Trailing = true; // Tralling STOP
extern bool ProfitTrailing = false; // Авто STOPLOSS(рекомендуемое FALSE)
extern double H = 0.7; // Расчет автотрейлинга(с 0 до 1)
extern bool _CloseTime = true; // Авторасчет времени закрытия позиции
extern bool FletClose = true; // Закрывать открытые позиции при флете
extern int Magic = 123; //ID orders |показатели ниже не трогать|
extern int StopLoss = 0; // Stop Loss(ОБЯЗАТЕЛЬНО УСТАНОВИТЬ В СЛУЧАЕ АвтоSTOPLOSS TRUE!)
extern int TakeProfit = 0; // Take Profit
extern int TrailingStep = 10; // Шаг трала
extern int Slip = 30; // размер реквот
extern int corner = 2; // Текстовые метки в левом нижнем углу (0-3)
extern color LineColor = clrLime;//Цвет текстовых меток
extern int raz = 10; //Размер шрифта
// Движок системы, не влезать!
int CountW1 = 50; // свечей для расчета W1
int CountH1 = 120; // свечей для расчета Н1
int _CountH1 = 48; // свечей для расчета Н1 flet последние 48 часов
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price){
int r=0;
color clr=Green;
double sl=0,tp=0;
if(type==1 || type==3 || type==5)
{
clr=Red;
if(StopLoss>0)
sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
if(TakeProfit>0)
tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
}
if(type==0 || type==2 || type==4)
{
clr=Blue;
if(StopLoss>0)
sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
if(TakeProfit>0)
tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
}
r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Lot(){
double lot=Lots;
if(Lots==0) lot=AccountBalance()*Risk/100000;// 10000*Risk/100000=1
return(lot);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()<2) count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Y(){
double y=0;
for(int i=0; i<CountW1; i++)
{
y+=(iHigh(NULL,PERIOD_W1,i)-iLow(NULL,PERIOD_W1,i))/_Point;
}
return(y/(CountW1*2));
}
//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом |
//+------------------------------------------------------------------+
void TrailingPositions() {
bool rez;
int TrailingStop = (int)NormalizeDouble((Y()*H),0);// Фиксированный размер трейлинг стопа
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderMagicNumber()==Magic) {
if (OrderSymbol()==Symbol()) {
if (OrderType()==OP_BUY) {
if (!ProfitTrailing || (Bid-OrderOpenPrice())>TrailingStop*Point) {
if (OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*Point) {
rez=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*_Point,OrderTakeProfit(),0,clrBlue);
}
}
}
if (OrderType()==OP_SELL) {
if (!ProfitTrailing || OrderOpenPrice()-Ask>TrailingStop*Point) {
if (OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*Point || OrderStopLoss()==0) {
rez=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*_Point,OrderTakeProfit(),0,clrRed);
}
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CloseTime(){
int count=0;
double K=0, L=0, N=0;
double lo=Low[iLowest(NULL,0,MODE_LOW,CountH1,1)];
double hi=High[iHighest(NULL,0,MODE_HIGH,CountH1,1)];
double x=(hi-lo)/_Point;
K=NormalizeDouble(Y()*2,0);
L=x/120;
N=K/L;
count=(int)NormalizeDouble(N,0); // время закрытия в часах
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseTimeAll(int ot=-1){
bool cl=1;
int closeTime=CloseTime();
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if(TimeCurrent()-OrderOpenTime()>closeTime*3600){
if(OrderType()==0 && (ot==0 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
}
if(OrderType()==1 && (ot==1 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1){
bool cl;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if(OrderType()==0 && (ot==0 || ot==-1)){
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
}
if(OrderType()==1 && (ot==1 || ot==-1)){
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
}
}
}
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double lo=Low[iLowest(NULL,0,MODE_LOW,CountH1,0)];
double hi=High[iHighest(NULL,0,MODE_HIGH,CountH1,0)];
double midl=(hi+lo)/2;
double x=(hi-lo)/_Point;
if(FletClose && x<Y() && CountTrades()!=0)CloseAll();
if(_CloseTime)CloseTimeAll();
if(Trailing)TrailingPositions();
if(CountTrades()<1 && x>Y())
{
if(Bid<hi && Bid>(hi+lo)/2)
PutOrder(0,Ask);
if(Bid>lo && Bid<(hi+lo)/2)
PutOrder(1,Bid);
}
Comment( "\n ПОКАЗАТЕЛИ РАССЧИТАННЫЕ СИСТЕМОЙ ATS",
"\n Недельная норма движения : -- ",NormalizeDouble(Y(),0),
"\n Текущее движение на H1 : -- ",NormalizeDouble(x,0),
"\n Рассчитанный Трейлинг-стоп(Stop loss): -- ",NormalizeDouble(Y()*H,0),
"\n Рассчетное время закрытия позиции : -- ",NormalizeDouble(CloseTime(),0));
SetLabel("Label1", "ПОКАЗАТЕЛИ РАССЧИТАННЫЕ СИСТЕМОЙ ATS", LineColor, 5, 75, corner, raz);
SetLabel("Label2", "Недельная норма движения : -- "+DoubleToStr(Y(),0)+" пп", LineColor, 5, 60, corner, raz);
SetLabel("Label3", "Текущее движение на H1 : -- "+DoubleToStr(x,0)+" пп", LineColor, 5, 45, corner, raz);
SetLabel("Label4", "Рассчитанный Трейлинг-стоп(Stop loss): -- "+DoubleToStr(Y()*H,0)+" пп", LineColor, 5, 30, corner, raz);
SetLabel("Label5", "Рассчетное время закрытия позиции : -- "+DoubleToStr(CloseTime(),0)+" часов", LineColor, 5, 15, corner, raz);
SetHLine(clrRed, "io", lo, STYLE_SOLID, 1);
SetHLine(clrYellow, "midl", midl, STYLE_SOLID, 1);
SetHLine(clrLime, "hi", hi, STYLE_SOLID, 1);
}
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 30.03.2008 |
//| Описание : Установка объекта OBJ_HLINE горизонтальная линия |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| cl - цвет линии |
//| nm - наименование ("" - время открытия текущего бара) |
//| p1 - ценовой уровень (0 - Bid) |
//| st - стиль линии (0 - простая линия) |
//| wd - ширина линии (0 - по умолчанию) |
//+----------------------------------------------------------------------------+
void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (p1<=0) p1=Bid;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0);
ObjectSet(nm, OBJPROP_PRICE1, p1);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_STYLE , st);
ObjectSet(nm, OBJPROP_WIDTH , wd);
}
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 12.10.2007 |
//| Описание : Установка текстовой метки, объект OBJ_LABEL. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| nm - наименование объекта |
//| tx - текст |
//| cl - цвет метки |
//| xd - координата X в пикселах |
//| yd - координата Y в пикселах |
//| cr - номер угла привязки (0 - левый верхний, |
//| 1 - правый верхний, |
//| 2 - левый нижний, |
//| 3 - правый нижний ) |
//| fs - размер шрифта (9 - по умолчанию ) |
//+----------------------------------------------------------------------------+
void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER , cr);
ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
//+----------------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------+
//| Weakly Советник с мультитаймфреймовым анализом от Lerdon, AM2 и SSG_mdf.mq4 |
//| Copyright 2019, Lerdon, AM2 и SSG_mdf|
//| http://www.forexsystems.biz |
//+-------------------------------------------------------------------------------------+
#property copyright "Разработан 2022, Lerdon, AM2 и SSG_mdf"
#property link "ATS-TALLROCK"
#property version "1.04"
#property strict
//--- Inputs
extern double Lots = 0.1; // Фикс. размер позиции
extern double Risk = 10; // Размер в процентах от баланса
extern bool Trailing = true; // Tralling STOP
extern bool ProfitTrailing = false; // Авто STOPLOSS(рекомендуемое FALSE)
extern double H = 0.7; // Расчет автотрейлинга(с 0 до 1)
extern bool _CloseTime = true; // Авторасчет времени закрытия позиции
extern bool FletClose = true; // Закрывать открытые позиции при флете
extern int Magic = 123; //ID orders |показатели ниже не трогать|
extern int StopLoss = 0; // Stop Loss(ОБЯЗАТЕЛЬНО УСТАНОВИТЬ В СЛУЧАЕ АвтоSTOPLOSS TRUE!)
extern int TakeProfit = 0; // Take Profit
extern int TrailingStep = 10; // Шаг трала
extern int Slip = 30; // размер реквот
extern int corner = 2; // Текстовые метки в левом нижнем углу (0-3)
extern color LineColor = clrLime;//Цвет текстовых меток
extern int raz = 10; //Размер шрифта
// Движок системы, не влезать!
int CountW1 = 50; // свечей для расчета W1
int CountH1 = 120; // свечей для расчета Н1
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price){
int r=0;
color clr=Green;
double sl=0,tp=0;
if(type==1 || type==3 || type==5)
{
clr=Red;
if(StopLoss>0)
sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
if(TakeProfit>0)
tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
}
if(type==0 || type==2 || type==4)
{
clr=Blue;
if(StopLoss>0)
sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
if(TakeProfit>0)
tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
}
r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Lot(){
double lot=Lots;
if(Lots==0) lot=AccountBalance()*Risk/100000;// 10000*Risk/100000=1
return(lot);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()<2) count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Y(){
double y=0;
for(int i=0; i<CountW1; i++)
{
y+=(iHigh(NULL,PERIOD_W1,i)-iLow(NULL,PERIOD_W1,i))/_Point;
}
return(y/(CountW1*2));
}
//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом |
//+------------------------------------------------------------------+
void TrailingPositions() {
bool rez;
int TrailingStop = (int)NormalizeDouble((Y()*H),0);// Фиксированный размер трейлинг стопа
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderMagicNumber()==Magic) {
if (OrderSymbol()==Symbol()) {
if (OrderType()==OP_BUY) {
if (!ProfitTrailing || (Bid-OrderOpenPrice())>TrailingStop*Point) {
if (OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*Point) {
rez=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*_Point,OrderTakeProfit(),0,clrBlue);
}
}
}
if (OrderType()==OP_SELL) {
if (!ProfitTrailing || OrderOpenPrice()-Ask>TrailingStop*Point) {
if (OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*Point || OrderStopLoss()==0) {
rez=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*_Point,OrderTakeProfit(),0,clrRed);
}
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CloseTime(){
int count=0;
double K=0, L=0, N=0;
double lo=Low[iLowest(NULL,0,MODE_LOW,CountH1,1)];
double hi=High[iHighest(NULL,0,MODE_HIGH,CountH1,1)];
double x=(hi-lo)/_Point;
K=NormalizeDouble(Y()*2,0);
L=x/120;
N=K/L;
count=(int)NormalizeDouble(N,0); // время закрытия в часах
return(count);
}
mishelbb