EA Проблема с идентификацией молотка
Страница 1 из 812 12 ПоследняяПоследняя
Results 1 to 10 of 13

Thread: EA Проблема с идентификацией молотка

  1. #1
    Я надеюсь, что кто-то может помочь с этой проблемой. Я очень новый кодер и пытаюсь создать логику, которая распознает молоток или перевернутый молоток. Как только он обнаружит их к моему удовлетворению, я продолжу создавать советник для ордеров и тому подобного.

    Код должен помечать все свечи, где закрытие = максимум или закрытие = минимум. Он отмечает одних, но не других. Любая помощь будет принята с благодарностью.

    Видит ли компьютер больше цифр в цене, чем мы? Например, мы видим 1,44551 как на закрытии, так и на максимуме; может компьютер видит 1.445519?


    Quote Originally Posted by ;
    #право собственности VMesquita
    #property indior_chart_window/индикация рисуется в основном окне графика
    #свойство indior_buffers 1
    внутренний предел;
    int инициализация ()
    {
    //----
    возврат (0);
    }
    целое число ()
    {
    возврат (0);
    }
    начало ()
    {
    двойной O,C,H,L,O1,C1,H1,L1,O2,C2,H2,L2;
    строковый текст;
    int counted_bars = IndiorCounted();
    limit=бары-counted_bars;
    //---- проверим возможные ошибки
    если (counted_barslt; 0) {
    Предупреждение (без баров..);
    возврат (-1);
    }
    //---- будет пересчитан последний посчитанный бар
    for(int i=1; ilt;limit; i ) {
    TO=Открыть(NULL,0,i);
    C=iClose(NULL,0,i);
    H=iHigh(NULL,0,i);
    L=iLow(NULL,0,i);

    O1=iOpen(NULL,0,i-1);
    C1=iClose(NULL,0,i-1);
    H1=iHigh(NULL,0,i-1);
    L1=iLow(NULL,0,i-1);
    O2=iOpen(NULL,0,i 1);
    C2=iClose(NULL,0,i 1);
    H2=iHigh(NULL,0,i 1);
    L2=iLow(NULL,0,i 1);


    текст =;
    if(((H-L)gt;4*(O-C))((C-L)/(0,001 H-L)gt;=0,75)((O-L)/(0,001 H-L)gt;=0,75)) text=Hang;
    если(H==C)текст=КУПИТЬ;
    если(C==L)текст=ПРОДАТЬ;

    //Если мы нашли особую свечу, пишем на графике
    если(текст!=)
    {
    ObjectCreate(DoubleToStr(i,0) метка, OBJ_TEXT, 0, Time[i], H);
    ObjectSetText(DoubleToStr(i,0) label, text, 15, Arial, Blue);
    Воспроизведение Звука(wait.wav);
    }
    }
    }
    Первоначальный кредит VMesquita за код ... Я изменил его очень мало.

  2. #2
    Codemeister, Да, вы предоставили код, и я очень благодарен вам за ваше время и энергию. Проблема во мне и в моей неспособности соединить части вместе, чтобы сформировать связный код. Конечно, я уверен, вы все время слышите, как легко должно быть кодировать то или иное. Я вернусь к чертежной доске, чтобы попытаться понять, как должны двигаться части. Знаете ли вы какую-нибудь книгу и т. д., с которой вы начинаете с малого и постепенно получаете то, что вам нужно? Все, что я видел, делает довольно много предположений об информации, о которой учащийся может не знать. Является ли C ближайшим к MQL языком программирования?

  3. #3

    Quote Originally Posted by ;
    Слава тем, кто научился программировать! Не могу поверить, как это тяжело. Это моя последняя попытка, но я не понимаю, что именно я пишу.
    эй, макс..... не позволяйте, чтобы это была ваша последняя попытка..... и имейте в виду, что довольно многие на этом форуме потратили много лет и/или много тысяч долларов в студенческих деньгах, чтобы узнать, что вы пытаетесь учиться самостоятельно через несколько месяцев....../--- если ваша цель состоит в том, чтобы идентифицировать свечной паттерн и размещать сделки в соответствии с ним, может быть лучше просто закодировать требования в советнике.... это проще и чище...... не совсем понятно, каково ваше определение молота и перевернутого молота, поэтому приведенный ниже пример представляет паттерн бычьего поглощения.....h Вставленный код bool bull() { if((Close #91;2#93;lt;Открыть#91;2#93 (Открыть#91;1#93;lt;Закрыть#91;2#93 (Закрыть#91;1#93;gt;Открыть #91;2#93) return(true); иначе вернуть (ложь); }/---/--- можно также использовать цифры для соответствия различным символам.... Inserted Code NormalizeDouble(Close#91;1#93;,Digits);

  4. #4
    Во-первых, как я уже говорил вам, вы не можете жестко кодировать вещи и ожидать, что они будут работать. Например, в вызове NormalizeDouble() у вас есть 5, которые не работают с парами иены. Вместо этого используйте предопределенную переменную Digits. Я уже предоставил этот код, но он не использовался должным образом. bool Hammer = MathAbs(High[1] - Close[1]) lt; нпс*точка; Остальной код мне непонятен. Вы должны правильно сделать отступ кода и поместить его в хэш-теги при публикации.

  5. #5
    Слава тем, кто научился программировать! Не могу поверить, как это тяжело. Это моя последняя попытка, но я не понимаю, что именно я пишу. Следующее продолжает давать мне ошибки. Моя цель заключается в следующем: размещать стрелку и печатать в файл журнала каждый раз, когда закрытие находится в пределах 0,00002 (0,002 на JPY) от максимума или минимума. Если в верхнем диапазоне я хотел бы, чтобы он сигнализировал, если выше 21 EMA и наоборот для минимума. int start() { int counter=1; for(int i=1; ilt;=Bars; i ) NormalizeDouble(Close[1],5); NormalizeDouble (Высокий [1], 5); NormalizeDouble (Низкий [1], 5); double nps=2 bool High[1]-Close[1]lt;= nps*Point; возврат (0);

  6. #6
    Сначала вам нужно проверить свой код, помещая оператор Print() всякий раз, когда генерируется сигнал. Предполагая, что проблема не в этом, она может быть в МТ4. У меня были проблемы с объектами, когда MT4 был занят или мой компьютер был под нагрузкой. Я не видел отложенных объектов, они никогда не создавались/удалялись/обновлялись. Предположим, что проблема в кодировании.

  7. #7
    Спасибо, Ганновер и CodeMeister! У меня сейчас проблема в том, что сигнал не размещается на графике при открытии следующего бара. В одном случае это не показывалось до 3 или 4 тактов позже. Какие-либо предложения?

  8. #8

    Quote Originally Posted by ;
    Что означает нпс?
    Это допуск (о котором вы говорили в предыдущем посте) в баллах. Пункт – это одна десятая пункта для 5-значного брокера. С 5-значным брокером Point = 0,00001 для пар, отличных от JPY, и 0,001 для пар с JPY. корректно работают на всех парах.

  9. #9
    Что означает нпс?

  10. #10
    Вам следует избегать жесткого кодирования чего-либо в вашей программе. Вместо сравнения с .00002 сравните с nps*Point, где nps равно 2 или некоторому числу. Это заставит код работать с парами иены, а также с другими парами и упростит внесение изменений. bool Hammer = MathAbs(High[1] - Close[1]) lt; нпс*точка;

Действующие разрешения

  • Вы не можете создавать новые темы
  • Вы не можете размещать ответы
  • Вы не можете использовать вложения
  • Вы не можете редактировать ваши записи
  •  
  • BB-код - Вкл.
  • Смайлики - Вкл.
  • Код [IMG] - Вкл.
  • Код [VIDEO] - Вкл.
  • HTML-код - Выкл.
Веб-сайт использует cookies
Веб-сайт использует cookies, в настоящее время некоторые из них уже установлены. Вы можете ознакомиться с более подробной информацией об использовании нами cookies здесь. Чтобы принять условия использования cookies, пожалуйста, нажмите на кнопку справа. Если вы продолжаете пользоваться веб-сайтом, вы по умолчанию принимаете условия использования cookies.