Упростите и сократите код, тогда самим более менее ясно станет, где проблема.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Помогите, голову сломал. Почему графические объекты не прорисовывается при изменении ситуации на рынке
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit(){
ObjectsDeleteAll(0,OBJ_TREND);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
WindowRedraw();
SPR=MarketInfo(SMB,MODE_SPREAD);
counted_bars=IndicatorCounted();
if(counted_bars==0){limit=Bars-1;}//подсчитанных баров нет, считаем индикатор с самого начала
if(counted_bars>0){limit=Bars-counted_bars-1;}//подсчитанные бары есть. Поэтому из числа доступных баров вычитаем
// количество уже подсчитанных и уменьшаем на 1.
for(int i=limit;i>=0;i--){
//--- записываем значения временных координат линии поддержки в переменные
if(
(High[i+5]<High[i+3] && High[i+4]<High[i+3] && High[i+2]<High[i+3] && High[i+1]<High[i+3])
|| (High[i+6]<High[i+3] && High[i+5]<=High[i+3] && High[i+4]<=High[i+3] && High[i+2]<High[i+3] && High[i+1]<High[i+3])
|| (High[i+7]<High[i+3] && High[i+6]<=High[i+3] && High[i+5]<=High[i+3] && High[i+4]<=High[i+3] && High[i+2]<High[i+3] && High[i+1]<High[i+3])
){
ExtMapBuffer1[i+3]=High[i+3];
ExtMapBuffer1[i+3]=NormalizeDouble(ExtMapBuffer1[i+3],Digits);
if(priceUp!=ExtMapBuffer1[i+3]){
priceUp=ExtMapBuffer1[i+3];
if(i==0 && UseSound){PlaySound(NameSound);}
}
}
if(
(Low[i+5]>Low[i+3] && Low[i+4]>Low[i+3] && Low[i+2]>Low[i+3] && Low[i+1]>Low[i+3])
|| (Low[i+6]>Low[i+3] && Low[i+5]>=Low[i+3] && Low[i+4]>=Low[i+3] && Low[i+2]>Low[i+3] && Low[i+1]>Low[i+3])
|| (Low[i+7]>Low[i+3] && Low[i+6]>=Low[i+3] && Low[i+5]>=Low[i+3] && Low[i+4]>=Low[i+3] && Low[i+2]>Low[i+3] && Low[i+1]>Low[i+3])
){
ExtMapBuffer2[i+3]=Low[i+3];
ExtMapBuffer2[i+3]=NormalizeDouble(ExtMapBuffer2[i+3],Digits);
if(priceDown!=ExtMapBuffer2[i+3]){
priceDown=ExtMapBuffer2[i+3];
if(i==0 && UseSound){PlaySound(NameSound);}
}
}
// Удаление всех построенных линий
double buf = 0; // буферной значение наличие фрактала, если 0, то фрактала нет
//---- основной цикл
//Если он есть, то заносим его в массив фракталов
buf = ExtMapBuffer1[i+3];
if (buf>0)
{
Up++;
bufUpPrice[Up]= ExtMapBuffer1[i+3];
bufUpDate[Up]=Time[i+3];
}
if (Up>2&&(bufUpPrice[Up-1]>bufUpPrice[Up])&&(bufUpPrice[Up-1]>bufUpPrice[Up-2]))
{
ObjectCreate("ObjLine"+Up,OBJ_TREND,0,bufUpDate[Up],bufUpPrice[Up],bufUpDate[Up-1],bufUpPrice[Up-1]);
ObjectSet( "ObjLine"+Up, OBJPROP_RAY, false );
ObjectSet("ObjLine"+Up, OBJPROP_COLOR ,Red);
ObjectSet("ObjLine"+Up,OBJPROP_WIDTH,3);
ObjectCreate("ObjLine2"+Up,OBJ_TREND,0,bufUpDate[Up-2],bufUpPrice[Up-2],bufUpDate[Up-1],bufUpPrice[Up-1]);
ObjectSet( "ObjLine2"+Up, OBJPROP_RAY, false );
ObjectSet("ObjLine2"+Up, OBJPROP_COLOR ,Red);
ObjectSet("ObjLine2"+Up,OBJPROP_WIDTH,3);
if (Up>lines+1)
{
ObjectDelete("ObjLine"+(Up-lines));
ObjectDelete("ObjLine2"+(Up-lines));
}
}
//Аналогичный блок, но на Down фракталы
buf = ExtMapBuffer2[i+3];
if (buf>0)
{
Down++;
bufDownPrice[Down]= ExtMapBuffer2[i+3];
bufDownDate[Down]=Time[i+3];
}
if (Down>2&&(bufDownPrice[Down-1]<bufDownPrice[Down])&&(bufDownPrice[Down-1]<bufDownPrice[Down-2]))
{
ObjectCreate("ObjLine3"+Down,OBJ_TREND,0,bufDownDate[Down],bufDownPrice[Down],bufDownDate[Down-1],bufDownPrice[Down-1]);
ObjectSet( "ObjLine3"+Down, OBJPROP_RAY, false );
ObjectSet("ObjLine3"+Down, OBJPROP_COLOR ,Blue);
ObjectSet("ObjLine3"+Down,OBJPROP_WIDTH,3);
ObjectCreate("ObjLine4"+Down,OBJ_TREND,0,bufDownDate[Down-2],bufDownPrice[Down-2],bufDownDate[Down-1],bufDownPrice[Down-1]);
ObjectSet( "ObjLine4"+Down, OBJPROP_RAY, false );
ObjectSet("ObjLine4"+Down, OBJPROP_COLOR ,Blue);
ObjectSet("ObjLine4"+Down,OBJPROP_WIDTH,3);
if (Down>lines+1)
{
ObjectDelete("ObjLine3"+(Down-lines));
ObjectDelete("ObjLine4"+(Down-lines));
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+