datetime TL_TimeLow2=(datetime)ObjectGet("TL_Support",OBJPROP_TIME2);// устанавливаем вторую координату времени линии поддержкиdatetime TL_TimeLow1=(datetime)ObjectGet("TL_Support",OBJPROP_TIME1); // устанавливаем первую координату времени линии поддержкиdatetime TL_Time1=(datetime)ObjectGet("TL_Buy",OBJPROP_TIME1); // устанавливаем первую координату времени линии Buydatetime TL_Time2=(datetime)ObjectGet("TL_Buy",OBJPROP_TIME2); // устанавливаем вторую координату времени линии Buy
//+------------------------------------------------------------------+//| фрактал.mq4 |//| Copyright 2014, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2014, MetaQuotes Software Corp."#property link"http://www.mql5.com"#property version"1.00"#property strictinputcolor Resistance_Color=Red;
inputENUM_LINE_STYLE Resistance_Style;
inputint Resistance_Width=1;
inputcolor Support_Color=Red;
inputENUM_LINE_STYLE Support_Style;
inputint Support_Width=1;
externdouble Lots = 0.1;
externint TakeProfit = 50;
externint StopLoss = 50;
externint ProfitSeriya = 5;
externint Profit = 5;
//extern int Step = 50;externint filtr =4;
externint slippage = 5;
double TP,price,lastlot,Pr,SL;
int ticket,Magic=123,op;
string TL_Support;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
ObjectDelete(0,"TL_Resistance"); //удаляем линию сопротевления на текущем графикеObjectDelete(0,"TL_Support"); //удаляем линию поддержки на текущем графикеObjectDelete(0,"TL_Buy"); //удаляем линию поддержки на текущем графикеObjectDelete(0,"TL_Sell"); //удаляем линию поддержки на текущем графике
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//---объявление переменныхint n,UpperFractal_1=0,UpperFractal_2=0,LowerFractal_1=0,LowerFractal_2=0;
double UpperPrice_1=0,UpperPrice_2=0,LowerPrice_1=0,LowerPrice_2=0,low_1,high_1 ,Line_Buy=0,Line_Sell=0;
low_1=iLow(Symbol(),PERIOD_CURRENT,1);
high_1=iHigh(Symbol(),PERIOD_CURRENT,1);
//--- находим индекс бара первого ближайшего верхнего фракталаfor(n=0; n<(Bars-1);n++)
{
if(iFractals(Symbol(),PERIOD_CURRENT,MODE_UPPER,n)!=NULL)
break;
UpperFractal_1=n+1;
UpperPrice_1=iHigh(Symbol(),PERIOD_CURRENT,UpperFractal_1);
}
//--- находим индекс бара второго ближайшего верхнего фракталаfor(n=UpperFractal_1+1; n<(Bars-1);n++)
{
if(iFractals(Symbol(),PERIOD_CURRENT,MODE_UPPER,n)!=NULL)
break;
UpperFractal_2=n+1;
UpperPrice_2=iHigh(Symbol(),PERIOD_CURRENT,UpperFractal_2);
}
//--- находим индекс бара первого ближайшего нижнего фракталаfor(n=0; n<(Bars-1);n++)
{
if(iFractals(Symbol(),PERIOD_CURRENT,MODE_LOWER,n)!=NULL)
break;
LowerFractal_1=n+1;
LowerPrice_1=iLow(Symbol(),PERIOD_CURRENT,LowerFractal_1);
}
//--- находим индекс бара второго ближайшего нижнего фракталаfor(n=LowerFractal_1+1; n<(Bars-1);n++)
{
if(iFractals(Symbol(),PERIOD_CURRENT,MODE_LOWER,n)!=NULL)
break;
LowerFractal_2=n+1;
LowerPrice_2=iLow(Symbol(),PERIOD_CURRENT,LowerFractal_2);
}
//-- Этап 1. Определение временного значения экстремума на таймфрейме: //--- определение времени фракталовdatetime UpFractalTime_1=iTime(Symbol(),PERIOD_CURRENT,UpperFractal_1);
datetime UpFractalTime_2=iTime(Symbol(),PERIOD_CURRENT,UpperFractal_2);
datetime LowFractalTime_1=iTime(Symbol(),PERIOD_CURRENT,LowerFractal_1);
datetime LowFractalTime_2=iTime(Symbol(),PERIOD_CURRENT,LowerFractal_2);
datetime time=iTime(Symbol(),PERIOD_CURRENT,0);
datetime time_1=iTime(Symbol(),PERIOD_CURRENT,1);
datetime time_2=iTime(Symbol(),PERIOD_CURRENT,2);
//--- создание линии поддержки// ObjectCreate(0,"TL_Support",OBJ_TREND,0,LowFractalTime_2,LowerPrice_2,// LowFractalTime_1,LowerPrice_1);ObjectCreate(0,"TL_Buy",OBJ_TREND,0,LowFractalTime_2,LowerPrice_2,
time_1,high_1);
//--- цвета линии поддержки
ObjectSet("TL_Buy",OBJPROP_COLOR,clrYellow);
ObjectSet("TL_Support",OBJPROP_COLOR,Support_Color);
// ObjectSet("TL_Support",OBJPROP_STYLE,Support_Style);// ObjectSet("TL_Support",OBJPROP_WIDTH,Support_Width);//--- создание линии сопротивления// ObjectCreate(0,"TL_Resistance",OBJ_TREND,0,UpFractalTime_2,UpperPrice_2,// UpFractalTime_1,UpperPrice_1);ObjectCreate(0,"TL_Sell",OBJ_TREND,0,UpFractalTime_2,UpperPrice_2,
time_1,low_1);
//--- цвета линии сопротивления
ObjectSet("TL_Sell",OBJPROP_COLOR,clrYellow);
ObjectSet("TL_Resistance",OBJPROP_COLOR,Resistance_Color);
// ObjectSet("TL_Resistance",OBJPROP_STYLE,Resistance_Style);// ObjectSet("TL_Resistance",OBJPROP_WIDTH,Resistance_Width);//--- перерисовка линии поддержки//--- записываем значения временных координат линии поддержки в переменные// string TL_Suppor=(string)TL_Support;datetime TL_TimeLow2=(datetime)ObjectGet("TL_Support",OBJPROP_TIME2);// устанавливаем вторую координату времени линии поддержкиdatetime TL_TimeLow1=(datetime)ObjectGet("TL_Support",OBJPROP_TIME1); // устанавливаем первую координату времени линии поддержкиdatetime TL_Time1=(datetime)ObjectGet("TL_Buy",OBJPROP_TIME1); // устанавливаем первую координату времени линии Buydatetime TL_Time2=(datetime)ObjectGet("TL_Buy",OBJPROP_TIME2); // устанавливаем вторую координату времени линии Buy //---если координаты линии не совпадают с текущимиif(TL_TimeLow2!=LowFractalTime_1 && TL_TimeLow1!=LowFractalTime_2)
/*вторую координату времени линии поддержки не равно второму времени N-точки привязки
и первая координату времени линии поддержки не равно первому времени N-точки привязки*/
{
//---удаляем линиюObjectDelete(0,"TL_Support");
}
if( TL_Time2!=time_1 )
/*вторую координату времени линии поддержки не равно второму времени N-точки привязки*/
{
//---удаляем линиюObjectDelete(0,"TL_Buy");
}
//--- перерисовка линии сопротивления//--- записываем значения временных координат линии сопротивления в переменныеdatetime TL_TimeUp2=(datetime)ObjectGet("TL_Resistance",OBJPROP_TIME2);
datetime TL_TimeUp1=(datetime)ObjectGet("TL_Resistance",OBJPROP_TIME1);
datetime TL_TimeS1=(datetime)ObjectGet("TL_Sell",OBJPROP_TIME1);
datetime TL_TimeS2=(datetime)ObjectGet("TL_Sell",OBJPROP_TIME2);
//--- если координаты линии не совпадают с текущимиif(TL_TimeUp2!=UpFractalTime_1 && TL_TimeUp1!=UpFractalTime_2)
{
//--- удаляем линиюObjectDelete(0,"TL_Resistance");
}
if(TL_TimeS2!=time_1 )
{
//--- удаляем линиюObjectDelete(0,"TL_Sell");
}
//--- контроль загруженности баров в истории//--- если на M15 не найден хотя бы один барif(UpperFractal_1==-1 || UpperFractal_2==-1
|| LowerFractal_1==-1 || LowerFractal_2==-1)
{
Alert("Для корректной работы недостаточно загружена история!");
}
Line_Sell=NormalizeDouble(ObjectGetValueByShift("TL_Sell",0),5);
Line_Buy=NormalizeDouble(ObjectGetValueByShift("TL_Buy",0),5);
Print( "Line_Buy: " + DoubleToStr( Line_Buy,5) + " , Line_Sel: " + DoubleToStr( Line_Sell,5) );
//поверить есть ли открытые ордера Buy. если нет открываем ордер когда цена будет выше линии Buyif(CountBuy()==0 && Line_Buy<Ask)
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,0,0,"",Magic,0,Blue);
//поверить есть ли открытые ордера Buy. если есть закрываем ордер когда цена будет ниже линии Sell if(CountBuy()==1&& Line_Sell>Bid )
{
for(int i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
bool a=OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Black);
}
}
}
if(CountSell()==0&& Line_Sell>Bid )
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,slippage,0,0,"",Magic,0,Red);
if(CountSell()==1&& Line_Buy<Ask)
{
for(int i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
bool x=OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Black);
}
}
}
}
//+------------------------------------------------------------------+int CountBuy()
{
int count=0;
for(int i= OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+int CountSell()
{
int count=0;
for(int i= OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
警告并不表示错误。
这个错误是由于数据类型 不匹配造成的
ObjectGet返回双数
而你给
日期时间
试试这个
亲爱的MQL4开发者
昨天晚上,我遇到了一个有趣的故障。在终端屏幕上,条形图与网格线并不重合。
如果我使用蜡烛图而不是柱状图,也会发生同样的情况。我正在使用所有的时间框架。我卸载了终端,从我的个人柜子里下载了一个新的。
- 同样的事情。我打电话给我们的Alpari顾问,得到了已经安装好的终端,启动它--同样的事情。
同样的事情。卡巴斯基说一切正常,"没有威胁"。4个网格期有5个时段的条形图,即
条的周期等于网格周期的0.75。如何才能解决这个问题?
亲爱的MQL4开发者
昨天晚上,我遇到了一个有趣的故障。在终端屏幕上,条形图与网格线并不重合。
如果我使用蜡烛图而不是柱状图,也会发生同样的情况。我正在使用所有的时间框架。我卸载了终端,从我的个人柜子里下载了一个新的。
- 同样的事情。我打电话给我们的Alpari顾问,得到了已经安装好的终端,启动它--同样的事情。
同样的事情。卡巴斯基说一切正常,"没有威胁"。4个网格期有5个时段的条形图,即
条的周期等于网格周期的0.75。如何才能解决这个问题?
你的终端是什么结构,什么操作系统,比特率?
它在哪个符号和哪个服务器上播放?
你的显示器设置是什么?
你改变了图形设置 吗?
在虚拟机的linux系统上,mt4需要代理设置,我不知道在那里输入什么,一切都可以工作,并通过NAT连接。
所有其他的程序在没有代理的情况下都能正常工作,上网也没有问题......。该怎么做?如何安装mt4 ...
在虚拟机的linux系统上,mt4需要代理设置,我不知道在那里输入什么,一切都可以工作,并通过NAT连接。
所有其他的程序在没有代理的情况下都能正常工作,上网也没有问题......。该怎么做?如何安装mt4 ...
你如何使它有可能插入电子邮件(skype)在
#属性链接
(如果只是电子邮件,点击后链接是不活跃的)
你如何使它有可能插入电子邮件(skype)在
#属性链接
(如果只是邮件,点击后链接是不活跃的)
现在我已经拿着它试了试。
它的作用;)
在虚拟机设置中,网络适配器是否有桥接功能?