ZUP Проект "Феникс"

Тема в разделе "Зиг-Заг. Системы с использованием ZigZag.", создана пользователем nen, 15 сен 2013.

  1. поручик

    поручик настоящий полковник

    NN - (New Nen) Это твои, что ты вначале проекта выкладывал
    многие дублированы, еще всю таблицу не шерстил
     
  2. Phillun

    Phillun Новичок

    Hi,

    Thank you for thinking about robot users.

    To use ZUPs with a Robot i need (but maybe other people to) a file to each pattern found to synchronize MT4 with an external program.
    Is not an input parameters file but an output file with the PRZ data.
    The minimum data: vBullBear, Period, Symbol and PRZ Time and value.
    Best data is all pattern points X, A, B, C, PRZ with Time and value.

    I put in attachement a file with a function to write the pattern.

    An option to allow the writing of image when a pattern is founded can also be very useful ( if (picture) WindowScreenShot ("all \ \" + FileName + ". Gif", 900.600); )

    Thank you,

    Phillun.
     

    Вложения:

  3. nen

    nen Профи форума

    Спасибо, Phillun
     
  4. nen

    nen Профи форума

    Вот это сообщение подвигло на это:
     
  5. поручик

    поручик настоящий полковник

    Она говорит, что мы по печеньке заработали
    ++++++

    Печенье реальное (поляки - любители гармонии пекут, Гартли называется)
     

    Вложения:

    1 человеку нравится это.
  6. nen

    nen Профи форума

    Получается вот так :

    A Butterfly _NZDUSD_M15_Bullish.gif

    A Cypher _NZDUSD_H1_Bearish.gif

    TOTAL 2 _NZDUSD_M5_Bullish.gif

    Если что-то лишнее или что-то еще необходимо, чтобы было на картинках, пишите.
     
  7. nen

    nen Профи форума

    Интерфейсы для вывода информации по паттернам.

    Картинка, как рекомендовал Phillun (записывается в папку \\experts\files\PicturePatterns\) :

    A Cypher _NZDUSD_H4_Bullish.gif

    Параметры паттерна в XML файле Посмотреть вложение A_Cypher_NZDUSD_H4_Bullish_xml.rar
    (записывается в папку \\experts\files\XML\)

    Выводятся следующие параметры:

    Symbol - название валютной пары
    TimeFrame
    BullBear
    Pattern - имя паттерна
    Цена точки X
    Время точки X
    Цена точки A
    Время точки A
    Цена точки B
    Время точки B
    Цена точки C
    Время точки C
    TimeForDmin
    LevelForDmin
    TimeForDmax
    LevelForDmax

    Параметры паттерна в CSV файле Посмотреть вложение A_Cypher_NZDUSD_H4_Bullish.rar
    (записывается в папку \\experts\files\CSV\)

    Выводятся следующие параметры:

    Symbol - название
    Номер паттерна в списке (используется либо встроенный список пятиточечных паттернов, либо внешний из файла listpatterns.csv. Тот список, с которым работает ZUP)
    Номер бара с точкой D паттерна
    TimeFrame - в минутах
    BullBear
    Наименование паттерна
    Цена точки X
    Время точки X
    Цена точки A
    Время точки A
    Цена точки B
    Время точки B
    Цена точки C
    Время точки C
    Цена точки D
    Время точки D
    TimeForDmin
    LevelForDmin
    TimeForDmax
    LevelForDmax

    ===================
    Параметры в файлы выводятся только для пятиточечных паттернов.
     
    1 человеку нравится это.
  8. поручик

    поручик настоящий полковник

    потянет :)
     

    Вложения:

    1 человеку нравится это.
  9. nen

    nen Профи форума

    Для Tatsyanka параметры в CSV файл записываются в позициях
    [background=rgb(247, 247, 247)]Номер паттерна в списке (используется либо встроенный список пятиточечных паттернов, либо внешний из файла listpatterns.csv. Тот список, с которым работает ZUP)[/background]
    [background=rgb(247, 247, 247)]Номер бара с точкой D паттерна[/background]
     
  10. поручик

    поручик настоящий полковник

    [​IMG]

    у Николая (Tatsyanka) такой вывод, можно и его данные добавить
     
  11. поручик

    поручик настоящий полковник

    от Phillun

    I have seen the last post on the CSV file and it's really a good news for me.
    Thanks a lot for this work and thanks to Nen for me.

    Я видел последний пост про файл CSV, и это - действительно хорошие новости для меня.
    Большое спасибо за эту работу и я благодарю Nen за это.
     
  12. поручик

    поручик настоящий полковник

    =========== из темы Феникс ===========
    Для Tatsyanka параметры в CSV файл записываются в позициях
    [background=rgb(247, 247, 247)]Номер паттерна в списке (используется либо встроенный список пятиточечных паттернов, либо внешний из файла listpatterns.csv. Тот список, с которым работает ZUP)[/background]
    [background=rgb(247, 247, 247)]Номер бара с точкой D паттерна[/background]
    [background=rgb(247, 247, 247)]++++++++++++++[/background]
    от Tatsyanka к nen
    Большое спасибо за доработку и вывод во внешний файл необходимых для автоматического анализа данных.
    Но. Текущую (135) версию я как мог облегчил по максимуму и прикрутил отдачу трёх параметров (перечислял в эхе) через буферы индекса - это необходимое условие для прямой передачи этих значений непосредственно в вызывающий советник (вызов по iCustom). Можно, конечно, и через промежуточную запись в файл и потом считывание, но это много медленнее и ненадёжнее (хотя для вывода на экран суммарной информации переработанной смотрелкой стива вполне годится). Не думаю, что всем нужна отдача через буферы необходимых мне данных, поэтому не прошу реализовать это в новой версии. Если дашь мне исходники - на твоих условиях - я сам подточу его под свои нужды. Облегчённая версия - идеально, нет - сам как смогу облегчу. Ещё раз - огромный респект за проделанную работу.
     
  13. nen

    nen Профи форума

    Можно получать доступ к параметрам следующим образом.
    Считываются параметры графических объектов непосредственно с графика.
    Точки привязки графических объектов являются точками паттернов.
    Достаточно знать координаты объектов. Из этих координат получается вся информация о паттернах.
    Это как вариант.

    Вот кусочек кода, ответственный за вывод паттернов на график:

    Код:
     if (Equilibrium && ExtGartleyTypeSearch==0 && !v50 && StringFind(vNamePattern,"AB=CD",0)==-1 && vNamePattern!=v4Point && vNamePattern!=v3Drives)
    
    {
    
    double tangens, h_ea=0, h_ec=0, delta;
    
    
    
    tangens=(zz[aXABCD[B]]-zz[aXABCD[X]])/(aXABCD[X]-aXABCD[B]);
    
    if (ReactionType)
    
    {
    
    h_ea=zz[aXABCD[A]]-(zz[aXABCD[X]]+(aXABCD[X]-aXABCD[A])*tangens);
    
    h_ec=zz[aXABCD[C]]-(zz[aXABCD[B]]+(aXABCD[B]-aXABCD[C])*tangens);
    
    }
    
    else
    
    {
    
    if (zz[aXABCD[X]]>zz[aXABCD[A]])
    
    {
    
    for (i=aXABCD[X]-1;i>=aXABCD[A];i--)
    
    {
    
    delta=Low[i]-(zz[aXABCD[X]]+(aXABCD[X]-i)*tangens);
    
    if (delta
    }
    
    
    
    for (i=aXABCD[B]-1;i>=aXABCD[C];i--)
    
    {
    
    delta=Low[i]-(zz[aXABCD[B]]+(aXABCD[B]-i)*tangens);
    
    if (delta
    }
    
    }
    
    else
    
    {
    
    for (i=aXABCD[X]-1;i>=aXABCD[A];i--)
    
    {
    
    delta=High[i]-(zz[aXABCD[X]]+(aXABCD[X]-i)*tangens);
    
    if (delta>h_ea) h_ea=delta;
    
    }
    
    
    
    for (i=aXABCD[B]-1;i>=aXABCD[C];i--)
    
    {
    
    delta=High[i]-(zz[aXABCD[B]]+(aXABCD[B]-i)*tangens);
    
    if (delta>h_ec) h_ec=delta;
    
    }
    
    }
    
    }
    
    
    
    nameObj="_"+ExtComplekt+"Equilibrium_" + countGartley;
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[B]],zz[aXABCD[B]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,ColorEquilibrium);
    
    ObjectSet(nameObj,OBJPROP_STYLE,EquilibriumStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,EquilibriumWidth);
    
    nameObj="_"+ExtComplekt+"Reaction1_" + countGartley;
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],zz[aXABCD[B]]+tangens*(aXABCD[B]-aXABCD[C])-h_ec,Time[0],zz[aXABCD[B]]+tangens*aXABCD[B]-h_ec);
    
    ObjectSet(nameObj,OBJPROP_COLOR,ColorReaction);
    
    ObjectSet(nameObj,OBJPROP_STYLE,EquilibriumStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,EquilibriumWidth);
    
    nameObj="_"+ExtComplekt+"Reaction2_" + countGartley;
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],zz[aXABCD[B]]+tangens*(aXABCD[B]-aXABCD[C])-h_ea,Time[0],zz[aXABCD[B]]+tangens*aXABCD[B]-h_ea);
    
    ObjectSet(nameObj,OBJPROP_COLOR,ColorReaction);
    
    ObjectSet(nameObj,OBJPROP_STYLE,EquilibriumStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,EquilibriumWidth);
    
    }
    
    
    
    vPatOnOff = true;
    
    
    
    //---------------------------------------------
    
    if(f==1 && ExtIndicator!=11)
    
    {
    
    f=0;
    
    if(ExtPlayAlert)
    
    {
    
    Alert (Symbol()," ",Period()," появился новый Паттерн");
    
    PlaySound("alert.wav");
    
    }
    
    if (ExtSendMail) _SendMail("There was a pattern","on " + Symbol() + " " + Period() + " pattern " + vBullBear + " " + vNamePattern + " " + vNameStrongPattern);
    
    }
    
    //---------------------------------------------
    
    
    
    if (StringLen(vBullBear)>0)
    
    {
    
    if (visibleABCDrayZZ && StringFind(vNamePattern,"AB=CD",0)>-1)
    
    {
    
    nameObj=StringSubstr("_"+ExtComplekt+"ABCDzz1_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[A]],zz[aXABCD[A]],Time[aXABCD[B]],zz[aXABCD[B]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    nameObj=StringSubstr("_"+ExtComplekt+"ABCDzz2_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[C]],zz[aXABCD[C]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    nameObj=StringSubstr("_"+ExtComplekt+"ABCDzz3_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],zz[aXABCD[C]],Time[aXABCD[D]],zz[aXABCD[D]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    }
    
    else
    
    {
    
    if (vNamePattern==v3Drives)
    
    {
    
    if (countDots==7)
    
    {
    
    vNamePattern="Alt "+vNamePattern+" ["+txtfiboAlt3Dr[ret3Dr]+"]";
    
    vNamePatternToNumberPattern = vNamePattern;
    
    }
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line1_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],zz[aXABCD[C]],Time[aXABCD[D]],zz[aXABCD[D]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line2_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[C]],zz[aXABCD[C]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line3_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[A]],zz[aXABCD[A]],Time[aXABCD[B]],zz[aXABCD[B]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line4_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[A]],zz[aXABCD[A]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    if (countDots==6)
    
    {
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line5_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[O]],zz[aXABCD[O]],Time[aXABCD[X]],zz[aXABCD[X]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    }
    
    
    
    if (countDots==7)
    
    {
    
    if (vBullBear==vBull)
    
    {
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line5_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[arr3Dr[0]],zz[arr3Dr[0]],Time[aXABCD[X]],zz[aXABCD[X]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line6_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[arr3Dr[1]],zz[arr3Dr[1]],Time[arr3Dr[0]],zz[arr3Dr[0]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line7_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[arr3Dr[1]],zz[arr3Dr[1]],Time[aXABCD[D]],zz[aXABCD[D]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    }
    
    else
    
    {
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line5_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[arr3Dr[1]],zz[arr3Dr[1]],Time[aXABCD[X]],zz[aXABCD[X]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line6_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[arr3Dr[0]],zz[arr3Dr[0]],Time[arr3Dr[1]],zz[arr3Dr[1]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line7_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[arr3Dr[0]],zz[arr3Dr[0]],Time[aXABCD[D]],zz[aXABCD[D]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    }
    
    }
    
    }
    
    else
    
    {
    
    if (vNamePattern==vDragon) {if (vBullBear==vBull) vBullBear=vBear; else vBullBear=vBull;}
    
    if (visibleLineOrTriangl)
    
    {
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line1_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[A]],zz[aXABCD[A]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line2_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[A]],zz[aXABCD[A]],Time[aXABCD[B]],zz[aXABCD[B]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line3_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[B]],zz[aXABCD[B]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line4_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[C]],zz[aXABCD[C]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line5_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],zz[aXABCD[C]],Time[aXABCD[D]],zz[aXABCD[D]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    nameObj=StringSubstr("_"+ExtComplekt+"Line6_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[D]],zz[aXABCD[D]]);
    
    ObjectSet(nameObj,OBJPROP_COLOR,colorPattern);
    
    ObjectSet(nameObj,OBJPROP_STYLE,PatternLineStyle);
    
    ObjectSet(nameObj,OBJPROP_WIDTH,PatternLineWidth);
    
    ObjectSet(nameObj, OBJPROP_RAY, false);
    
    }
    
    else
    
    {
    
    nameObj1=StringSubstr("_"+ExtComplekt+"Triangle1_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    nameObj2=StringSubstr("_"+ExtComplekt+"Triangle2_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern,0,63);
    
    
    
    if (vNamePattern == v4Point || StringFind(vNamePattern,"AB=CD",0)>-1)
    
    {
    
    ObjectCreate(nameObj1,OBJ_TRIANGLE,0,Time[aXABCD[A]],zz[aXABCD[A]],Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[C]],zz[aXABCD[C]]);
    
    }
    
    else
    
    {
    
    ObjectCreate(nameObj1,OBJ_TRIANGLE,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[A]],zz[aXABCD[A]],Time[aXABCD[B]],zz[aXABCD[B]]);
    
    }
    
    ObjectSet(nameObj1,OBJPROP_COLOR,colorPattern);
    
    
    
    if (vNamePattern==vDragon)
    
    {
    
    ObjectCreate(nameObj2,OBJ_TRIANGLE,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[C]],zz[aXABCD[C]],tDragonE,cDragonE);
    
    }
    
    else
    
    {
    
    ObjectCreate(nameObj2,OBJ_TRIANGLE,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[C]],zz[aXABCD[C]],Time[aXABCD[D]],zz[aXABCD[D]]);
    
    }
    
    ObjectSet(nameObj2,OBJPROP_COLOR,colorPattern);
    
    }
    
    }
    
    
    
    }
    
    }
    
    
    
    if (RangeForPointD>0 && LevelForDmin > 0) // Вывод прямоугольника для зоны точки D
    
    {
    
    // инициализация переменных для расчета рамки развития точки D паттерна
    
    int jj=-1, jmax=-1, jmin=-1;
    
    double jmax_=0, jmin_=0;
    
    TimeForDmin = 0;
    
    TimeForDmax = 0;
    
    
    
    for (j=aXABCD[C];j>=aXABCD[D];j--)
    
    {
    
    if (vBullBear == vBull)
    
    {
    
    if (LevelForDmax>=Low[j])
    
    {
    
    if (TimeForDmax==0) {TimeForDmax = Time[j]; jj=j; jmin_=Low[j];}
    
    if (jj>0)
    
    {
    
    if (jmax>=0) {if (jmin_>Low[j]) {TimeForDmax = Time[jmax]; jmax=-1;}}
    
    if (jmin_>Low[j]) {jmin_=Low[j];}
    
    }
    
    else if (TimeForDmax>0)
    
    {
    
    if (LevelForDmax>=Low[j]) {jj=j; jmax=j;}
    
    }
    
    }
    
    else if (jj>0)
    
    {
    
    if (LevelForDmax
    }
    
    }
    
    else if (vBullBear == vBear)
    
    {
    
    if (LevelForDmin<=High[j])
    
    {
    
    if (TimeForDmin==0) {TimeForDmin = Time[j]; jj=j; jmax_=High[j];}
    
    if (jj>0)
    
    {
    
    if (jmin>=0) {if (jmax_
    if (jmax_
    }
    
    else if (TimeForDmin>0)
    
    {
    
    if (LevelForDmin<=High[j]) {jj=j; jmin=j;}
    
    }
    
    }
    
    else if (jj>0)
    
    {
    
    if (LevelForDmin>High[j]) {jj=-1; jmin=-1;}
    
    }
    
    }
    
    }
    
    
    
    if (vBullBear == vBull)
    
    {
    
    j=iBarShift(NULL,Period(),TimeForDmin,true);
    
    jj=((LevelForDmax-LevelForDmin)/((zz[aXABCD[C]]-LevelForDmax)/(aXABCD[C]-j+1)));
    
    if (j-jj>=0) TimeForDmin = Time[j-jj]; else TimeForDmin = TimeForDmax+jj*Period()*60;
    
    }
    
    else if (vBullBear == vBear)
    
    {
    
    j=iBarShift(NULL,Period(),TimeForDmax,true);
    
    jj=((LevelForDmax-LevelForDmin)/((LevelForDmin-zz[aXABCD[C]])/(aXABCD[C]-j+1)));
    
    if (j-jj>=0) TimeForDmin = Time[j-jj]; else TimeForDmax = TimeForDmin+jj*Period()*60;
    
    }
    
    
    
    if (TimeForDmin>TimeForDmax)
    
    {
    
    timeLineD=TimeForDmin;
    
    TimeForDmin=TimeForDmax;
    
    TimeForDmax=timeLineD;
    
    }
    
    else
    
    {
    
    timeLineD=TimeForDmax;
    
    }
    
    
    
    if (VectorOfAMirrorTrend==1)
    
    {
    
    nameObj="_"+ExtComplekt+"VectorOfAMirrorTrend_1_" + countGartley + "";
    
    }
    
    else if (VectorOfAMirrorTrend==2)
    
    {
    
    nameObj="_"+ExtComplekt+"VectorOfAMirrorTrend_2_" + countGartley + "";
    
    
    
    if (vBullBear == vBear) ObjectCreate(nameObj,OBJ_TREND,0,TimeForDmin,LevelForDmax,TimeForDmax,LevelForDmin);
    
    else ObjectCreate(nameObj,OBJ_TREND,0,TimeForDmin,LevelForDmin,TimeForDmax,LevelForDmax);
    
    
    
    ObjectSet(nameObj, OBJPROP_BACK, false);
    
    ObjectSet(nameObj, OBJPROP_RAY, true);
    
    ObjectSet(nameObj, OBJPROP_COLOR, LawnGreen);
    
    ObjectSet(nameObj, OBJPROP_STYLE, STYLE_DASH);
    
    }
    
    
    
    nameObj="_"+ExtComplekt+"PointD_" + countGartley + "";
    
    ObjectCreate(nameObj,OBJ_RECTANGLE,0,TimeForDmin,LevelForDmin,TimeForDmax,LevelForDmax);
    
    ObjectSet(nameObj, OBJPROP_BACK, false);
    
    ObjectSet(nameObj, OBJPROP_COLOR, ExtColorRangeForPointD);
    
    
    
    if (ExtIndicator==11 && ExtHiddenPP==2)
    
    {
    
    k1=MathCeil((aXABCD[X]+aXABCD[B])/2);
    
    nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[B]] + "_" + Time[aXABCD[X]];
    
    ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[B]]+zz[aXABCD[X]])/2);
    
    ObjectSetText(nameObj,DoubleToStr(retXB,3),ExtSizeTxt,"Arial", ExtNotFibo);
    
    nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[B]] + "_" + Time[aXABCD[X]];
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[B]],zz[aXABCD[B]]);
    
    ObjectSet(nameObj,OBJPROP_RAY,false);
    
    ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
    
    ObjectSet(nameObj,OBJPROP_COLOR,ExtLine);
    
    ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
    
    
    
    k1=MathCeil((aXABCD[X]+aXABCD[D])/2);
    
    nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[D]] + "_" + Time[aXABCD[X]];
    
    ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[D]]+zz[aXABCD[X]])/2);
    
    ObjectSetText(nameObj,DoubleToStr(retXD,3),ExtSizeTxt,"Arial", ExtNotFibo);
    
    nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[D]] + "_" + Time[aXABCD[X]];
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[D]],zz[aXABCD[D]]);
    
    ObjectSet(nameObj,OBJPROP_RAY,false);
    
    ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
    
    ObjectSet(nameObj,OBJPROP_COLOR,ExtLine);
    
    ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
    
    
    
    k1=MathCeil((aXABCD[B]+aXABCD[D])/2);
    
    nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[D]] + "_" + Time[aXABCD[B]];
    
    ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[D]]+zz[aXABCD[B]])/2);
    
    ObjectSetText(nameObj,DoubleToStr(retBD,3),ExtSizeTxt,"Arial", ExtNotFibo);
    
    nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[D]] + "_" + Time[aXABCD[B]];
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[D]],zz[aXABCD[D]]);
    
    ObjectSet(nameObj,OBJPROP_RAY,false);
    
    ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
    
    ObjectSet(nameObj,OBJPROP_COLOR,ExtLine);
    
    ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
    
    
    
    k1=MathCeil((aXABCD[A]+aXABCD[C])/2);
    
    nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[C]] + "_" + Time[aXABCD[A]];
    
    ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[C]]+zz[aXABCD[A]])/2);
    
    ObjectSetText(nameObj,DoubleToStr(retAC,3),ExtSizeTxt,"Arial", ExtNotFibo);
    
    nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[C]] + "_" + Time[aXABCD[A]];
    
    ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[A]],zz[aXABCD[A]],Time[aXABCD[C]],zz[aXABCD[C]]);
    
    ObjectSet(nameObj,OBJPROP_RAY,false);
    
    ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
    
    ObjectSet(nameObj,OBJPROP_COLOR,ExtLine);
    
    ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
    
    }
    
    }
    
    
     
  14. поручик

    поручик настоящий полковник

    Николай, что за значение?, напомни
     

    Вложения:

    • апыу.png
      апыу.png
      Размер файла:
      19,2 КБ
      Просмотров:
      4
  15. mikola2

    mikola2 Новичок

    Time[0] - время нулевого бара в момент заполнения csv-файла (секунды в формате mql), следующая цифра Close[0] - цена на момент заполнения csv-файла.
    Это ещё Стива набор выводимой информации. Я их не использую, но и не мешают пока... :)
     
  16. 52rus

    52rus Активный пользователь

    Советую в файл записывать время в секундах (тип int). Так, как минимум, будет проще его прочитать из советника.
     
  17. nen

    nen Профи форума

    Можно создавать два файла. Один как есть, во второй время в секундах.
     
  18. nen

    nen Профи форума

    Осталось сделать две новые функции. И далее надо тестировать.
    Планирую для начала отправить ограниченному кругу людей новую версию для тестирования.
    Чтобы не плодить версии.
    После отлова ошибок окончательную версию здесь опубликовать под номером 137.

    Предварительно тестировать будут поручик, Дмитрий (не запоминал ник)... и кого поручик порекомендует.

    Отправлю по почте тем, кто будет тестировать, когда будет готова новая версия.
     
  19. Phillun

    Phillun Новичок

    Hi,
    If you use the pattern name to create the CSV file there may be a problem with the * character (1.618*AB=CD for exemple) because it can't be used for a file name in Windows.
    You can add this code for replace this character:

    Привет,Если Вы используете имя паттерна, чтобы создать файл CSV может быть проблема с * характеристика (1.618*AB=CD для примера), потому что это не может быть использовано для имени файла в Windows.Вы можете добавить, что этот код для замены этой характеристики:

    if( StringFind(FileName,"*",0)>-1)
    {
    string str = FileName;
    int cpt = StringFind(FileName,"*",0);
    if (cpt >-1) FileName = StringSetChar(str, cpt, '_');
    }

    string Name = "CSV\\"+FileName+".csv";
    handle=FileOpen(Name,FILE_CSV|FILE_WRITE,';');[/CODE]
     
  20. nen

    nen Профи форума

    Сейчас CSV файлы создаются только для пятиточечных паттернов.
    Для паттернов ABCD, Дракона, 3 Drives, 4-Points не создаются CSV файлы.
    Информация об этих паттернах не выводится в файлы.
    Картинки выводятся для всех паттернов.
    Образовался любой паттерн - записывается картинка.
    И далее эта картинка меняется по мере развития баров.
     

Поделиться этой страницей