Questo errore è dovuto a una mancata corrispondenza del tipo di dati
ObjectGet restituisce doppio
e TU assegni un valore a
datetime
prova questo
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
Sì, grazie, l'ho già capito da solo, ma il mio Expert Advisor ancora non apre gli ordini quando Line_Buy e Line_Sell sono incrociate. Ho già controllato tutto, ma gli ordini sono aperti e chiusi non al momento dell'incrocio, forse qualcuno mi dirà
//+------------------------------------------------------------------+//| фрактал.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);
}
//+------------------------------------------------------------------+
Ieri sera ho avuto un interessante malfunzionamento. Sullo schermo del terminale le barre non coincidono con le linee della griglia.
Se uso le candele invece delle barre, succede la stessa cosa. Sto usando tutti i timeframe. Ho disinstallato il terminale, ne ho scaricato uno nuovo dal mio armadio personale.
- stessa cosa. Ho chiamato i nostri consulenti Alpari, ho avuto il terminale già installato, l'ho avviato - stessa cosa.
stessa cosa. Kaspersky dice che tutto va bene, "nessuna minaccia". Ci sono 5 periodi di barre per 4 periodi della griglia, cioè
il periodo delle barre è uguale a 0,75 del periodo della griglia. Come si può rimediare a questo?
Ieri sera ho avuto un interessante malfunzionamento. Sullo schermo del terminale le barre non coincidono con le linee della griglia.
Se uso le candele invece delle barre, succede la stessa cosa. Sto usando tutti i timeframe. Ho disinstallato il terminale, ne ho scaricato uno nuovo dal mio armadio personale.
- stessa cosa. Ho chiamato i nostri consulenti Alpari, ho avuto il terminale già installato, l'ho avviato - stessa cosa.
stessa cosa. Kaspersky dice che tutto va bene, "nessuna minaccia". Ci sono 5 periodi di barre per 4 periodi della griglia, cioè
il periodo delle barre è uguale a 0,75 del periodo della griglia. Come si può risolvere questo problema?
Che tipo di terminale hai, quale sistema operativo, bit rate?
un avvertimento non indica un errore.
Questo errore è dovuto a una mancata corrispondenza del tipo di dati
ObjectGet restituisce doppio
e TU assegni un valore a
datetime
prova questo
Cari sviluppatori di MQL4!
Ieri sera ho avuto un interessante malfunzionamento. Sullo schermo del terminale le barre non coincidono con le linee della griglia.
Se uso le candele invece delle barre, succede la stessa cosa. Sto usando tutti i timeframe. Ho disinstallato il terminale, ne ho scaricato uno nuovo dal mio armadio personale.
- stessa cosa. Ho chiamato i nostri consulenti Alpari, ho avuto il terminale già installato, l'ho avviato - stessa cosa.
stessa cosa. Kaspersky dice che tutto va bene, "nessuna minaccia". Ci sono 5 periodi di barre per 4 periodi della griglia, cioè
il periodo delle barre è uguale a 0,75 del periodo della griglia. Come si può rimediare a questo?
Cari sviluppatori di MQL4!
Ieri sera ho avuto un interessante malfunzionamento. Sullo schermo del terminale le barre non coincidono con le linee della griglia.
Se uso le candele invece delle barre, succede la stessa cosa. Sto usando tutti i timeframe. Ho disinstallato il terminale, ne ho scaricato uno nuovo dal mio armadio personale.
- stessa cosa. Ho chiamato i nostri consulenti Alpari, ho avuto il terminale già installato, l'ho avviato - stessa cosa.
stessa cosa. Kaspersky dice che tutto va bene, "nessuna minaccia". Ci sono 5 periodi di barre per 4 periodi della griglia, cioè
il periodo delle barre è uguale a 0,75 del periodo della griglia. Come si può risolvere questo problema?
Che tipo di terminale hai, quale sistema operativo, bit rate?
Su quale simbolo e su quale server sta giocando?
Quali sono le impostazioni del tuo monitor?
Hai cambiato leimpostazioni grafiche?
Sui sistemi linux su macchine virtuali mt4 richiede impostazioni proxy, non so cosa inserire lì, tutto funziona ed è collegato via NAT
Tutti gli altri programmi funzionano senza proxy e vanno online senza problemi... Cosa fare? Come installare mt4 ...
Sui sistemi linux su macchine virtuali mt4 richiede impostazioni proxy, non so cosa inserire lì, tutto funziona ed è collegato via NAT
Tutti gli altri programmi funzionano senza proxy e vanno online senza problemi... Cosa fare? Come installare mt4 ...
Come si fa a rendere possibile l'inserimento di email (skype) in
#collegamento di proprietà
(se solo email, il link è inattivo quando viene cliccato)
Come si fa a rendere possibile l'inserimento di email (skype) in
#collegamento di proprietà
(se solo la posta, il link è inattivo quando viene cliccato)
Ora l'ho preso e provato:
Funziona ;)
Il bridged è disponibile per l'adattatore di rete nelle impostazioni della macchina virtuale?