Заработай до
50000$
на приглашении друзей
получить StartUp Bonus
от ИнстаФорекс
Вложений не требуется!
Начни торговлю
без вложений и риска
С новым STARTUP бонусом 1000$
Получи бонус
55%
от ИнстаФорекс
на каждое пополнение
Ответить в теме
Страница 3 из 6
Первая ... 2 3 4 ... Последняя ◄╝

Показаны сообщения: с 41 по 60 из 117

Тема: Помогите с написанием функции

 Перейти в классический вид темы
  1. линк#41
    Свой человек
    В думах
     
    Vyasheslav стараюсь положительно себя зарекомендовать Аватар для Vyasheslav
    Регистрация:
    02.09.2010
    Сообщений:
    520
    Накопленные выплаты (Подробнее):
    5136 RUB
    Поставил(а) лайков:
    15
    Получено лайков:  76
    в 58 сообщениях
    15%
    Здравствуйте уважаемые программисты.
    Очень хочется вставить в советник, кусок кода, чтобы появилась функция StartTime.
    Пытался слизать с одного советника этот кусочек. Вроде все без ошибок, но функция не работает. Что-то где-то не учел видимо. Хочется именно самому в последствии это делать, так-как часто такое желание появляется.
    Не могли бы вы помочь несчастному челу, а то хожу без StartTime как дурак, целыми днями..
    Заранее благодарен.


  2. <a href="https://www.instaforex.com/ru/company_news">Форекс портал</a>
     
  3. ТОП сообщений
    2018-08-13   21:59
    Лучший ответ #1
    Накопленные выплаты 4581 RUB

    Всем привет!
    Господа програмисты, нужна такая функция: при срабатывании отложки, или SL или TP, на графике рисуются стрелки открытия, частичного закрытия и закрытия сделки, и между ними линия. Уже второй день рою вместе с Яндексом, но ничего похожего не нашел. А вообще проблема в том, если возникнут вопросы типа: "зачем тебе, перенеси из истории", что я поставил советник, который делает скрины при установке отложки и при её срабатывании, при закрытии ордера, но скриншот получается с голым графиком, так как нужные стрелочки не рисуются.
    За ранее спасибо за помощь!
    PS: На этом графике было около десятка сделок отложками, но как видите скриншот пустой.
    Вложение 2093344

    Вложение
    Превью
    2010-10-10   13:08
    Лучший ответ #2
     

    Цитата Сообщение от Vyasheslav Посмотреть сообщение
    Здравствуйте уважаемые программисты.
    Очень хочется вставить в советник, кусок кода, чтобы появилась функция StartTime.
    Пытался слизать с одного советника этот кусочек. Вроде все без ошибок, но функция не работает. Что-то где-то не учел видимо. Хочется именно самому в последствии это делать, так-как часто такое желание появляется.
    Не могли бы вы помочь несчастному челу, а то хожу без StartTime как дурак, целыми днями..
    Заранее благодарен.
    Vyasheslav, поменьше флуда - побольше смысла в сообщении! И на будущее - название темы выбирайте более осмысленное. На первый раз прощается.
    И приведите здесь код функции, которая у Вас не работает, или же опишите, что именно она должна делать.

    2010-10-10   14:04
    Лучший ответ #3
     

    Цитата Сообщение от Vyasheslav Посмотреть сообщение
    За флуд извиняюсь
    . Код функции не могу предоставить, потому как я не программист, а лишь могу поковыряться в коде, если что-то боле-менее знакомо.
    А функция должна запускать советник по назначенному времени. То есть ставлю я в настройках, чтобы советник начал работать в
    3 часа ночи к примеру. Он в 3 и начинает торговать.
    И все. Более от этой функции мне не надо. Окончание торговли тоже не нужно. Но если предоставите код целиком с окончанием торговли, и это сойдет... Спасибо что обратили внимание.
    Да, и в какое место его надо вставить, тоже нужно указать.. А то ведь в любое
    место не вставить, насколько я понимаю.
    Спасибо еще раз.
    1. Советник работает всё время, пока накинут на график, и терминал запущен.
    2. Но время для активных его действий можно выбирать с помощью этакой вот конструкции из двух функций:
    if (TimeHour(TimeCurrent())>=3) { *что-то делаем */}
    Описание этих, и других функций типа Дата/Время есть в справке МетаЭдитора...

    2010-10-10   14:20
    Лучший ответ #4
     

    Цитата Сообщение от Vyasheslav Посмотреть сообщение
    Спасибо, попробую. А куда это вставить? В раздел старт или инит? И что вы называете "Что-то делаем? - Основные функции?
    Если глупые вопросы, извиняюсь. Хочется все быстро.. А получается как всегда.
    Всё нормально - на то и раздел придуман этот...
    Что касается места, куда вставить код - лучше всего так:
    MQL код:

    // Объявляем триггер активности советника ДО ФУНКЦИИ start(), например, в теле функции init()
    int trg = 0; // 0 - советник НЕ работает, 1 - работает
    int start() { // это уже у нас есть
    if (TimeHour(TimeCurrent())>=3) trg=1; // с 3 часов ночи советник начинает работать - переключаем триггер.
    if (trg!=1) return 0; // выход из start(), если триггер не переключен в состояние активности
    // ну и дальше собственно код советника
    ...

    2010-10-10   18:07
    Лучший ответ #5
    Накопленные выплаты 1228 RUB

    Цитата Сообщение от Vyasheslav Посмотреть сообщение
    Прошу прощения. Я еще не пробовал, отвлекали. Но мне еще не ясно, как вывести это все в настройки общие. Ну, накинул советник на график, вышли настройки, и надо чтоб в перечисленных настройках присутствовала и эта, установка "время активности" Как ее правильно обозвать и чтобы она была связана с этим блоком. Ведь сегодня я хочу запустить в 3 часа ночи, а завтра... у меня 7 пятниц на неделю, другое время понадобится, А каждый раз лезть в код для смены времени, не очень удобно...
    Думаю вопрос ясен.
    Спасибо
    MQL код:
    //Внешняя переменная - это переменная, значение которой доступно из окна свойств программы.
    //При объявлении внешней переменной перед типом её значения необходимо указать модификатор extern
    extern int vremya_aktivnosti = 3;

    Не проще открыть первый попавшийся советник и посмотреть воочию что да как.

    2010-10-11   00:04
    Лучший ответ #6
     

    Vyasheslav, как Вам уже вышел ответил коллега Britney - чтобы иметь возможность при навешивании советника на график менять значение переменных - их нужно в самом начале программы объявить как extern.
    Т.е., код, который я предлагал Вам выше, теперь будет состоять из трёх частей. Первая, в самом начале программы, где у советника находятся остальные extern:

    MQL код:

    extern int startTime = 3;

    Вторая часть, в теле функции init():
    MQL код:

    // Объявляем триггер активности советника ДО ФУНКЦИИ start(), например, в теле функции init()
    int trg = 0; // 0 - советник НЕ работает, 1 - работает

    И последняя часть, модифицированный вариант того, что было дано выше, вставляется в самом начале функции start():
    MQL код:

    int start() { // это уже у нас есть
    // с заданного часа в переменной startTime советник начинает работать - переключаем триггер.
    if (TimeHour(TimeCurrent())>= startTime) trg=1;
    // выход из start(), если триггер не переключен в состояние активности
    if (trg!=1) return 0;
    // ну и дальше собственно код советника

  4. линк#47
    Свой человек
    ВалераВВ приемлемый уровень репутации ВалераВВ приемлемый уровень репутации Аватар для ВалераВВ
    Регистрация:
    07.03.2011
    Пол:
    Мужчина
    Сообщений:
    269
    Накопленные выплаты (Подробнее):
    16571 RUB
    Поставил лайков:
    100
    Получено лайков:  142
    в 83 сообщениях
    53%
    Цитата Сообщение от vdmitrich Посмотреть сообщение
    Здраствуйте. В советнике на экран вывел инфо. " Терминальное время ". Но время изменяется только на следующем открытом баре, а нужно, что бы минута за минутой.
    MQL код:
    ObjectCreate("info  1.3",OBJ_LABEL,0,0,0);
    ObjectSet("info 1.3",OBJPROP_CORNER,3);
    ObjectSet("info 1.3",OBJPROP_XDISTANCE,5);
    ObjectSet("info 1.3",OBJPROP_YDISTANCE,50);
    ObjectSetText("info 1.3","Терминальное время: " + TimeToStr(TimeCurrent(), TIME_SECONDS),11,"Arial",Yellow);

    Буду признателен, если кто-то подправит.
    Ваш код , представленный здесь, вполне рабочий. Обновляет время на каждом новом тике. Проверил , поставив в функцию int start(). Значит причина вашей проблемы не в данной части кода , а в месте ее расположения, необходимо просто поставить эту часть кода в начало функции int start() и все заработает.

    Последний раз редактировалось Gold; 23.08.2013 в 05:01.

  5. post_thanks Получено лайков: 1

    vdmitrich (02.11.2011)

  6. линк#48
    Частый гость
    vdmitrich стараюсь положительно себя зарекомендовать Аватар для vdmitrich
    Регистрация:
    30.09.2011
    Пол:
    Мужчина
    Сообщений:
    161
    Накопленные выплаты (Подробнее):
    1574 RUB
    Поставил лайков:
    39
    Получено лайков:  31
    в 30 сообщениях
    19%
    Цитата Сообщение от ВалераВВ Посмотреть сообщение
    Ваш код , представленный здесь, вполне рабочий. Обновляет время на каждом новом тике. Проверил , поставив в функцию int start(). Значит причина вашей проблемы не в данной части кода , а в месте ее расположения, необходимо просто поставить эту часть кода в начало функции int start() и все заработает.
    Да, я его поставил в самое начало start(), стал обновлять на каждом новом тике.

    ПАММ-счёт (Manual-Auto Trade)

  7. линк#49
    Частый гость
    vdmitrich стараюсь положительно себя зарекомендовать Аватар для vdmitrich
    Регистрация:
    30.09.2011
    Пол:
    Мужчина
    Сообщений:
    161
    Накопленные выплаты (Подробнее):
    1574 RUB
    Поставил лайков:
    39
    Получено лайков:  31
    в 30 сообщениях
    19%
    Здраствуйте! Подскажите, как написать функцию перевод в безубыток. Опишу ситуацию: открыто 2 ордера (Buy и Sell), к примеру, ордер Buy закрылся по Т/Р, по Sell имеем минус и вот нужно чтобы по ордеру Sell T/P превёлся на 0.

    ПАММ-счёт (Manual-Auto Trade)

  8. линк#50
    Частый гость
    KimIV хорошая репутация KimIV хорошая репутация KimIV хорошая репутация KimIV хорошая репутация KimIV хорошая репутация KimIV хорошая репутация Аватар для KimIV
    Регистрация:
    01.12.2011
    Пол:
    Мужчина
    Сообщений:
    135
    Накопленные выплаты (Подробнее):
    1290 RUB
    Поставил лайков:
    224
    Получено лайков:  556
    в 101 сообщениях
    412%
    vdmitrich, вот код моего советника по переводу позиции в безубыток. Если будут вопросы, непонятки, обращайтесь

    MQL код:

    //+----------------------------------------------------------------------------+
    //| e-MovingInWL.mq4 |
    //| Ким Игорь В. aka KimIV |
    //| [url]http://www.kimiv.ru[/url] |
    //| 21.09.2005 Двигает стоп в безубыток. |
    //+----------------------------------------------------------------------------+
    #property copyright "Ким Игорь В. aka KimIV"
    #property link "http://www.kimiv.ru"

    //------- Внешние параметры ----------------------------------------------------
    extern int LevelWLoss = 1; // Уровень безубытка
    extern int LevelProfit = 10; // Уровень профита
    extern bool ShowComment = True; // Показывать комментарии
    extern bool SoundAlert = True; // Звук

    //+----------------------------------------------------------------------------+
    //| Custor expert deinitialization function |
    //+----------------------------------------------------------------------------+
    void deinit() { Comment(""); }

    //+----------------------------------------------------------------------------+
    //| expert start function |
    //+----------------------------------------------------------------------------+
    void start() {
    bool fm;
    double pBid, pAsk, pp;
    int i, nd, o=OrdersTotal();
    string comm="";

    for (i=0; i if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    nd=MarketInfo(OrderSymbol(), MODE_DIGITS);
    pp=MarketInfo(OrderSymbol(), MODE_POINT);
    comm=comm+OrderSymbol()+" Цена: "+DoubleToStr(OrderOpenPrice(), nd)+
    " SL="+DoubleToStr(OrderStopLoss(), nd);
    if (OrderType()==OP_BUY) {
    comm=comm+"("+DoubleToStr((OrderStopLoss()-OrderOpenPrice())/pp, 0)+")\n";
    if (OrderStopLoss()-OrderOpenPrice() pBid=MarketInfo(OrderSymbol(), MODE_BID);
    if (pBid-OrderOpenPrice()>LevelProfit*pp) {
    fm=OrderModify(OrderTicket(),OrderOpenPrice(),Orde rOpenPrice()+LevelWLoss*pp,OrderTakeProfit(),CLR_N ONE);
    }
    }
    }
    if (OrderType()==OP_SELL) {
    comm=comm+"("+DoubleToStr((OrderOpenPrice()-OrderStopLoss())/pp,0)+")\n";
    if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss() pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
    if (OrderOpenPrice()-pAsk>LevelProfit*pp) {
    fm=OrderModify(OrderTicket(),OrderOpenPrice(),Orde rOpenPrice()-LevelWLoss*pp,OrderTakeProfit(),CLR_NONE);
    }
    }
    }
    if (fm) {
    if (SoundAlert) PlaySound("alert2");
    break;
    }
    }
    }
    if (ShowComment) Comment(comm);
    }
    //+------------------------------------------------------------------+

    Последний раз редактировалось Gold; 23.08.2013 в 05:00. Причина: заменил на тег MQL
    Бывает, сделаешь вид, что работаешь, и затягивает! Работаешь и работаешь...

  9. линк#51
    Частый гость
    Сама доброта
     
    boka80 стараюсь положительно себя зарекомендовать Аватар для boka80
    Регистрация:
    10.06.2011
    Пол:
    Мужчина
    Сообщений:
    87
    Накопленные выплаты (Подробнее):
    699 RUB
    Поставил лайков:
    41
    Получено лайков:  13
    в 10 сообщениях
    15%
    подскажите где ошибка. вставляю код работы по времени



    Последний раз редактировалось Gold; 23.08.2013 в 04:59.

  10. линк#52
    Частый гость
    Сама доброта
     
    abdul стараюсь положительно себя зарекомендовать Аватар для abdul
    Регистрация:
    04.02.2010
    Сообщений:
    181
    Накопленные выплаты (Подробнее):
    1999 RUB
    Поставил(а) лайков:
    11
    Получено лайков:  26
    в 22 сообщениях
    14%
    Не подскажет кто нибудь кусочек кода какого нибудь индикатора который собирает статистику. В лучшем случаии хотелось бы такой инд который собирает статистику длины тренда по МА


  11. линк#53
    В начале пути
    Все пучком
     
    rusnik стараюсь положительно себя зарекомендовать Аватар для rusnik
    Регистрация:
    25.01.2012
    Пол:
    Мужчина
    Сообщений:
    12
    Накопленные выплаты (Подробнее):
    129 RUB
    Поставил лайков:
    4
    Поблагодарили 1 раз в
    1 сообщении
    8%
    Уважаемые программисты. Помогите создать пользовательскую функцию на основании пользовательского индикатора. Вот индикатор.
    paperclip Вложения


  12. линк#54
    Частый гость
    Хитер
     
    DRAKON стараюсь положительно себя зарекомендовать Аватар для DRAKON
    Регистрация:
    15.06.2011
    Пол:
    Мужчина
    Сообщений:
    154
    Накопленные выплаты (Подробнее):
    12719 RUB
    Поставил лайков:
    14
    Получено лайков:  44
    в 27 сообщениях
    29%
    подскажите пожалуйста мне нужно что бы ордера открывались не по индюку а через определённое количество пунктов и где есть открытый, новый не открывается если кто знает киньте пожалуйста код буду очень благодарен

    границ нет границы придумали люди!!!

  13. линк#55
    Частый гость
    Maks2703 стараюсь положительно себя зарекомендовать Аватар для Maks2703
    Регистрация:
    30.05.2012
    Пол:
    Мужчина
    Сообщений:
    101
    Накопленные выплаты (Подробнее):
    965 RUB
    Поставил лайков:
    1
    Получено лайков:  3
    в 3 сообщениях
    3%
    Ребята помогите разобраться в чем ошибка кода


    MQL код:
    extern double Lots       = 00.1;
    extern int TakeProfit = 50;
    extern int StopLoss = 50;
    extern int Slippage = 5;
    extern int Magic = 777;
    extern string comment = "$$$777$$$";
    extern string indi = "Данные индикатора";
    extern int FastEMA = 3;
    extern int SlowEMA = 6;
    extern int SignalSMA = 3;
    extern bool AlertSoundOn = false;
    extern string SoundFile = "10.wav";

    double PriceHigh, PriceLow, SL, TP;
    int ticket;

    //+------------------------------------------------------------------+
    //| expert initialization function |
    //+------------------------------------------------------------------+
    int init()
    {
    if (Digits ==3 || Digits ==5)

    {
    TakeProfit * = 10;
    StopLoss * = 10;
    Slippage * = 10;

    }
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert deinitialization function |
    //+------------------------------------------------------------------+
    int deinit()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert start function |
    //+------------------------------------------------------------------+
    int start()
    {
    PriceHigh = iCustom(Symbol(), 0, "FR-Signals", FastEMA, SlowEMA, SignalSMA, AlertSoundOn, SoundFile, 1, 0);
    PriceLow = iCustom(Symbol(), 0, "FR-Signals", FastEMA, SlowEMA, SignalSMA, AlertSoundOn, SoundFile, 2, 0);

    if (Bid >=PriceHigh && CountSell() == 0)
    {
    SL = NormalizeDouble (Bid + StopLoss * Point, Digits);
    TP = NormalizeDouble (Bid - TakeProfit * Point, Digits);

    ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, comment, Magic, 0, Red);
    if (ticket > 0)
    {
    if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
    OrderModify(ticket, OrderOpenPrice(), SL, TP,0);

    }
    }

    if (Ask <=PriceLow && CountBuy() == 0)
    {
    SL = NormalizeDouble(Ask - StopLoss * Point, Digits);
    TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);

    ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, comment, Magic, 0, Blue);
    if (ticket > 0)
    {
    if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
    OrderModify(ticket, OrderOpenPrice(), SL, TP,0);
    }
    }



    return(0);
    }
    //+------------------------------------------------------------------+
    int CountSell()
    {
    int count = 0;
    for(int trade = OrdersTotal() -1; trade >=0; trade--)
    {
    OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
    if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
    {
    if (OrderType() == OP_SELL)
    count++;

    }
    }
    return(count);
    }
    //+------------------------------------------------------------------+
    int CountBay()
    {
    int count=0;
    for (int trade = OrdersTotal() -1; trade >=0; trade--)
    {
    OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
    if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
    {
    if (OrderType() == OP_BUY)
    count++;

    }
    }
    return(count);
    }

    Последний раз редактировалось Gold; 23.08.2013 в 04:57.

  14. линк#56
    Кандидат форумных наук
    В эйфории
     
    ACA приемлемый уровень репутации Аватар для ACA
    Регистрация:
    18.07.2013
    Пол:
    Мужчина
    Сообщений:
    1,036
    Накопленные выплаты (Подробнее):
    11376 RUB
    Поставил лайков:
    26
    Получено лайков:  108
    в 97 сообщениях
    10%
    Ребят извините меня пожалуйста. Может я пишу не в ту ветку. Но мне пришла вот такая мысль в голову. Как можно прикрутить звуковой сигнал к советнику? Чтоб он активировался при закрытие сделки. Желательно чтоб данный сигнал воспроизводился в формате mp3 чтоб можно было вставить любую мелодию.
    Заранее огромное спасибо.

    Всем огромное спасибо за форум и советы! На этом форуме и правда есть бескорыстные люди! Всем удачного

  15. линк#57
    В начале пути
    malking стараюсь положительно себя зарекомендовать Аватар для malking
    Регистрация:
    25.05.2013
    Пол:
    Мужчина
    Сообщений:
    33
    Накопленные выплаты (Подробнее):
    318 RUB
    Поставил лайков:
    0
    Поблагодарили 1 раз в
    1 сообщении
    3%
    Цитата Сообщение от ACA Посмотреть сообщение
    Как можно прикрутить звуковой сигнал к советнику?
    Есть функция PlaySound("alert.wav"), но она играет вавы, но это не критично, можешь любой мп3-шник перевести в вав. Закрытие сделки можно определить по изменению количества открытых ордеров. Если их стало меньше, чем было при последней проверке, значит какой-то ордер закрылся, в этом месте программы вызывай эту функцию.


  16. линк#58
    В начале пути
    malking стараюсь положительно себя зарекомендовать Аватар для malking
    Регистрация:
    25.05.2013
    Пол:
    Мужчина
    Сообщений:
    33
    Накопленные выплаты (Подробнее):
    318 RUB
    Поставил лайков:
    0
    Поблагодарили 1 раз в
    1 сообщении
    3%
    Цитата Сообщение от Maks2703 Посмотреть сообщение
    Ребята помогите разобраться в чем ошибка кода
    Ты вызываешь
    Цитата Сообщение от Maks2703 Посмотреть сообщение
    CountBuy() == 0
    , а объявляешь
    Цитата Сообщение от Maks2703 Посмотреть сообщение
    int CountBay() {
    Имя функции в объявлении и при вызове должны совпадать. Исправь там или там. Должно заработать.


  17. линк#59
    Частый гость
    Maks2703 стараюсь положительно себя зарекомендовать Аватар для Maks2703
    Регистрация:
    30.05.2012
    Пол:
    Мужчина
    Сообщений:
    101
    Накопленные выплаты (Подробнее):
    965 RUB
    Поставил лайков:
    1
    Получено лайков:  3
    в 3 сообщениях
    3%
    Спасибо я уже нашол эти 2 ошибки, он все равно не хочет с индикатором работать, он либо только продает и то непонятно как либо меняешь буферы покупает и продает по 1000 ордеров в минуту.
    Вот 2 полных кода если кто сможет помочь совместить их, пожалуйста помогите. смысел работы стрелка вниз продаем стрелка в верх SELL закрываем BUY покупаем.

    Сова



    Последний раз редактировалось Gold; 01.09.2013 в 15:18.

  18. линк#60
    В начале пути
    malking стараюсь положительно себя зарекомендовать Аватар для malking
    Регистрация:
    25.05.2013
    Пол:
    Мужчина
    Сообщений:
    33
    Накопленные выплаты (Подробнее):
    318 RUB
    Поставил лайков:
    0
    Поблагодарили 1 раз в
    1 сообщении
    3%
    Цитата Сообщение от rusnik Посмотреть сообщение
    Уважаемые программисты. Помогите создать пользовательскую функцию на основании пользовательского индикатора. Вот индикатор.
    MAAngle.mq4
    Что должна делать функция и при каких условиях? Задание нужно... :-)


  19. линк#61
    отдыхает от форума
    Gerbys хорошая репутация Gerbys хорошая репутация Gerbys хорошая репутация Gerbys хорошая репутация Gerbys хорошая репутация Gerbys хорошая репутация Аватар для Gerbys
    Регистрация:
    17.05.2013
    Пол:
    Мужчина
    Сообщений:
    5,227
    Накопленные выплаты (Подробнее):
    57984 RUB
    Поставил лайков:
    284
    Получено лайков:  622
    в 577 сообщениях
    12%
    Подскажите правильную функцию(код). Функционал функции следующий. Мы от дали сигнал на проверку отложных ордеров, скажем есть 10 ордеров. Нужно найти среди данных ордеров, ордер. Непонятно, скажем по другому. Фильтр вставлен на то, в каком ордере самое маленькое расстояние заданной цены от настоящей, измеряем в пунктах. И отдаем номер ордера, наиболее подходящего. Надеюсь задумка функции ясна.


  20. линк#62
    В начале пути
    malking стараюсь положительно себя зарекомендовать Аватар для malking
    Регистрация:
    25.05.2013
    Пол:
    Мужчина
    Сообщений:
    33
    Накопленные выплаты (Подробнее):
    318 RUB
    Поставил лайков:
    0
    Поблагодарили 1 раз в
    1 сообщении
    3%
    Цитата Сообщение от Maks2703 Посмотреть сообщение
    он все равно не хочет с индикатором работать, он либо только продает и то непонятно как либо меняешь буферы покупает и продает по 1000 ордеров в минуту
    Такое поведение, как мне кажется, определено кодом индикатора. Он сначала обнуляет значение переменных:
    MQL код:
    tia_0[li_24] = EMPTY_VALUE;
    gda_116[li_24] = EMPTY_VALUE;

    И только потом заполняет их значением:
    MQL код:
    tia_0[li_24] = Low[li_24] - 10.0 * Point;
    gda_116[li_24] = High[li_24] + 10.0 * Point;

    Скорее всего из-за этого происходит закрытие ордеров. Попробую разобраться. Видимо через глобальную переменную нужно работать с индикатором.

    Последний раз редактировалось Gold; 01.09.2013 в 15:19.

  21. линк#63
    В начале пути
    malking стараюсь положительно себя зарекомендовать Аватар для malking
    Регистрация:
    25.05.2013
    Пол:
    Мужчина
    Сообщений:
    33
    Накопленные выплаты (Подробнее):
    318 RUB
    Поставил лайков:
    0
    Поблагодарили 1 раз в
    1 сообщении
    3%
    Цитата Сообщение от Gerbys Посмотреть сообщение
    Подскажите правильную функцию(код). Функционал функции следующий. Мы от дали сигнал на проверку отложных ордеров, скажем есть 10 ордеров. Нужно найти среди данных ордеров, ордер. Непонятно, скажем по другому. Фильтр вставлен на то, в каком ордере самое маленькое расстояние заданной цены от настоящей, измеряем в пунктах. И отдаем номер ордера, наиболее подходящего. Надеюсь задумка функции ясна.
    Например для Sell Limit ордеров можно сделать так:
    MQL код:
    int nearest()
    {
    double mindev = 1000.0;
    int orderNum;
    for (int i = 0; i < OrdersTotal(); i++)
    {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)
    if (OrderType == OP_SELLLIMIT)
    if ((OrderOpenPrice() - Bid) / Point < mindev)
    {
    mindev = (OrderOpenPrice() - Bid) / Point;
    orderNum = OrderTicket();
    }
    }
    return(orderNum);
    }

    Для проверки ордеров других типов можно или отдельно написать функцию, или добавить условие для соответствующего типа ордера.

    Последний раз редактировалось Gold; 01.09.2013 в 15:19.

  22. post_thanks Получено лайков: 1

    Gerbys (30.08.2013)

  23. линк#64
    Кандидат форумных наук
    cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация Аватар для cgon
    Регистрация:
    17.06.2013
    Пол:
    Мужчина
    Сообщений:
    1,454
    Накопленные выплаты (Подробнее):
    15893 RUB
    Поставил лайков:
    34
    Получено лайков:  423
    в 391 сообщениях
    29%
    Цитата Сообщение от Gerbys Посмотреть сообщение
    Подскажите правильную функцию(код). Функционал функции следующий. Мы от дали сигнал на проверку отложных ордеров, скажем есть 10 ордеров. Нужно найти среди данных ордеров, ордер. Непонятно, скажем по другому. Фильтр вставлен на то, в каком ордере самое маленькое расстояние заданной цены от настоящей, измеряем в пунктах. И отдаем номер ордера, наиболее подходящего. Надеюсь задумка функции ясна.
    Я так понял, нужно найти минимальное расстояния до цены открытых ордеров. Следовательно используем математическую функцию :
    double MathMin( double value1, double value2)
    Функция возвращает минимальное из двух числовых значений.
    Параметры:
    value1 - Первое числовое значение.
    value2 - Второе числовое значение.
    код выглядит так;

    extern int Mag = 2;
    int SELL,BUY,tiket_B,tiket_S;
    int proverka()
    {
    int total=OrdersTotal();
    for (int i=0; i<=total; i++)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==false) continue;
    if (OrderType() == OP_SELLSTOP && OrderSymbol()== Symbol() && OrderMagicNumber() == Mag)
    SELL = (OrderOpenPrice()-Ask)/Point;
    double result_S = MathMin(result_S,SELL);
    if (SELL == result_S)tiket_S = OrderTicket();
    if (OrderType() == OP_BUYSTOP && OrderSymbol()== Symbol() && OrderMagicNumber() == Mag)
    BUY = (Bid-OrderOpenPrice())/Point;
    double result_B = MathMin(result_B,BUY);
    if (SELL ==result_B)tiket_B = OrderTicket();
    }
    return(0);
    }
    Вроде ничего не напутал.


  24. линк#65
    Кандидат форумных наук
    cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация Аватар для cgon
    Регистрация:
    17.06.2013
    Пол:
    Мужчина
    Сообщений:
    1,454
    Накопленные выплаты (Подробнее):
    15893 RUB
    Поставил лайков:
    34
    Получено лайков:  423
    в 391 сообщениях
    29%
    Цитата Сообщение от boka80 Посмотреть сообщение
    подскажите где ошибка. вставляю код работы по времени
    Если Вы хотите встроить подпрограмму в советник, то её вставляете за пределами исполняемого блока функции start( ){.....................} , можно перед ней, можно
    после неё, но ни как не внутри. Внутри присутствуют только обращения к внешним функциям и передача параметров для их работы. Выносите функцию за пределы,
    опрашиваете её в самом начале программы, если вернётся if (TimeCurrent()>=dtBegin && TimeCurrent()<=dtEnd) return(True); то работаем,если вернётся
    else return(False); то не работаем.


  25. линк#66
    Кандидат форумных наук
    cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация cgon хорошая репутация Аватар для cgon
    Регистрация:
    17.06.2013
    Пол:
    Мужчина
    Сообщений:
    1,454
    Накопленные выплаты (Подробнее):
    15893 RUB
    Поставил лайков:
    34
    Получено лайков:  423
    в 391 сообщениях
    29%
    Цитата Сообщение от DRAKON Посмотреть сообщение
    подскажите пожалуйста мне нужно что бы ордера открывались не по индюку а через определённое количество пунктов и где есть открытый, новый не открывается если кто знает киньте пожалуйста код буду очень благодарен
    Пока не понятно, что собственно надо. Если это открытие одного ордера на определённом расстоянии от цены и после его закрытия на этом расстоянии не открывать,
    или это сетка ордеров, и пока они все не закроются, больше не открывать. Разъясните данный вопрос, а то мысли читать пока не научился. Вариантов получается слишком много.



Страница 3 из 6
Первая ... 2 3 4 ... Последняя ◄╝

Подписанные на тему (5)

Похожие темы

  1. MQL4: Некоторые полезные функции
    от Nick'Otin в разделе MQL-программирование, АТС
    Replies: 206
    Последнее сообщение: 17.10.2019, 17:42
  2. Фондовые биржи и их функции
    от Андрей Сырбу в разделе Опционы, фьючерсы, CFD, фондовый рынок
    Replies: 33
    Последнее сообщение: 24.01.2011, 20:53
  3. Replies: 15
    Последнее сообщение: 29.11.2010, 00:05
  4. Replies: 0
    Последнее сообщение: 09.08.2010, 16:06