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

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

Тема: Учимся программировать на MQL4 вместе с Mr.Артуром

 Перейти в классический вид темы
  1. линк#41
    Кандидат форумных наук
    Отдыхаю
     
    Artur приемлемый уровень репутации Artur приемлемый уровень репутации Аватар для Artur
    Регистрация:
    06.09.2010
    Пол:
    Мужчина
    Сообщений:
    2,038
    Накопленные выплаты (Подробнее):
    26207 RUB
    Поставил(а) лайков:
    49
    Получено лайков:   210
    в 174 сообщениях
    10%
    ПодписатьсяПодписаться
    Подписано: 0
    Приветствую всех новичков так же как я желающих самостоятельно научиться писать программы на MQL4. В этой теме я буду конспектировать нелегкий путь своего обучения с примерами и конкретными задачами которые предлагаю решать сообща . Думаю всем вместе нам будет легче разобраться и освоиться в этом языке программирования.

    Код:
    //+------------------------------------------------------------------+
    //|                                                          111.mq4 |
    //|                      Copyright © 2011, MetaQuotes Software Corp. |
    //|                                        http://www.metaquotes.net |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2011, MetaQuotes Software Corp."
    #property link      "http://www.metaquotes.net"
    
    //+++-здесь вписываются переменные-+++
    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    int init()
      {
    //----
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //----
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    int start() //+++- старт самой программы и написание его основного кода тут-+++
      {
    //----
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    это код простого советника
    дальше я буду выкладывать прочее необходимое
    если будут вопросы пишите постараюсь ответить

    Последний раз редактировалось DGreen; 24.07.2011 в 22:51.

    Предлагаю к инвестированию ^ /-/ Перечитайте регламент найдёте много интерестного!

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

    Krashid (13.03.2012)

     
  3. ТОП сообщений
    2012-08-15   15:38
    Лучший ответ #1
    Накопленные выплаты 18175 RUB

    Цитата Сообщение от mechanic40 Посмотреть сообщение
    Это понятно - но вопрос как связан индекс ордера со временем его открытия?
    Представьте себе массив, в который записываются различные события, все идет по порядку, можно проверить:
    [PHP]void start()
    {
    for(int i = OrdersTotal() -1; i >= 0;i--)
    {
    if(OrderSelect(i,SELECT_BY_POS))
    Alert("index = ",i," open_time = ",TimeToStr(OrderOpenTime(), TIME_DATE|TIME_MINUTES|TIME_SECONDS));
    }
    }[/PHP]
    Но ситуации бывают разными, вот например: - "Есть ДЦ, где OrderOpenTime() показывает время выставления отложенного ордера, а не время его срабатывания. Поэтому затруднительно узнать, когда же открылась позиция".

    2019-05-07   23:11
    Лучший ответ #2
    Накопленные выплаты 164763 RUB

    Цитата Сообщение от kola16 Посмотреть сообщение
    советник привязан к брокеру , не могу отвязать советника.
    Вместо
    Код:
    if(StringSubstr(broker,0,2) == "XM")
    пропиши
    Код:
    if(true)

    2011-08-03   17:59
    Лучший ответ #3
    Накопленные выплаты 322 RUB

    Цитата Сообщение от TioSin Посмотреть сообщение
    чтоб наверняка быть уверенным что бот выбрал именно последний закрытый ордер
    Для поиска последнего закрытого ордера можно использовать время закрытия ордеров, пробегаем по всем ордерами находим максимальное время...
    int Magic = 0;
    int closetime= 0,lastorder=0;
    for(int i=0;i<OrdersHistoryTotal();i++)
    {
    if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
    if(OrderMagicNumber()!=Magic) continue;
    if(closetime<OrderCloseTime())
    {
    closetime = OrderCloseTime();
    lastorder = OrderTicket();
    }
    }
    OrderSelect(lastorder,SELECT_BY_TICKET,MODE_HISTOR Y);
    Alert("order_" + OrderTicket() + " close_time= "+ TimeYear(OrderCloseTime())+"."+TimeMonth(OrderClos eTime())+"."+TimeDay(OrderCloseTime())+ " " + TimeHour(OrderCloseTime())+":"+TimeMinute(OrderClo seTime())+":"+TimeSeconds(OrderCloseTime()) );

    2012-02-27   20:51
    Лучший ответ #4
    Накопленные выплаты 4855 RUB

    Цитата Сообщение от Artur Посмотреть сообщение
    а как закрепить по другому что когда отошла от цены открытия ордера до -31 пункта то тогда модифицировать...???
    Что модифицируешь от того и отталкивайся, если тп, то делай условие чтобы тп ордера модифился при подходе цены к текущему теикпрофиту на несколько пунктов.При открытии ордера ставишь тп на (31 пункт + расстояние модификации(5пип допустим) итого 36) от открытия ордера и далее запускаешь условие вида (для селл) if (bid<=OrderTakeProfit()+ 5*point) {Модифицирвать тп ордера на OrderTakeProfit() минус расстояние на которое нужно перенести тп +5пип}

    2018-05-26   02:56
    Лучший ответ #5
    Накопленные выплаты 8369 RUB

    Привет всем. Кто подскажет может, надо 2 советника объединить. На разных окнах не удобно. темболее что их надо одновременно запускать.сигналы не сразу со всех валют идут. евро допустим я включу. а вот далее беда. через функцию можно как то сделать.Как?

    2018-07-23   14:07
    Лучший ответ #6
    Накопленные выплаты 472 RUB

    Цитата Сообщение от MoneyDay Посмотреть сообщение
    Привет всем. Кто подскажет может, надо 2 советника объединить. На разных окнах не удобно. темболее что их надо одновременно запускать.сигналы не сразу со всех валют идут. евро допустим я включу. а вот далее беда. через функцию можно как то сделать.Как?
    Доброго дня MoneyDay .Подобные ситуации можно решить через Magicnumber самих советников.То есть.Поясню.Открываем один график и на него присоеденяем первый советник с первым magic number/.На второй график так же можно прикрепить другой советник с другим magic .На третий график прикрепляем третий советник и третий magic если надо и так далее.Если нужно пишите подскажу более детально,но советник должен быть с открытым кодом.Удачного тренда

  4. линк#42
    Кандидат форумных наук
    Отдыхаю
     
    Artur приемлемый уровень репутации Artur приемлемый уровень репутации Аватар для Artur
    Регистрация:
    06.09.2010
    Пол:
    Мужчина
    Сообщений:
    2,038
    Накопленные выплаты (Подробнее):
    26207 RUB
    Поставил(а) лайков:
    49
    Получено лайков:   210
    в 174 сообщениях
    10%
    ПодписатьсяПодписаться
    Подписано: 0
    Всё думал как можно разделить линии стохастика... может так?
    Код:
     double A1= iStochastic(NULL,0,PR_K,0,3,MODE_SMA,0,MODE_MAIN,0);
     double A2= iStochastic(NULL,0,0,PR_D,3,MODE_SMA,0,MODE_MAIN,0);
    что косатеся разносторонних ордеров то
    возможно if OP_BUY>1 then OP_SELL == False..... что то вроде этого
    или же при открытии ордера в бай (buy:=buy+1 а после if buy>1 then OP_BUY == StopOpenOrder;


    Предлагаю к инвестированию ^ /-/ Перечитайте регламент найдёте много интерестного!

  5. линк#43
    Кандидат форумных наук
    mell авторитетный пользователь mell авторитетный пользователь mell авторитетный пользователь mell авторитетный пользователь mell авторитетный пользователь mell авторитетный пользователь mell авторитетный пользователь mell авторитетный пользователь mell авторитетный пользователь mell авторитетный пользователь mell авторитетный пользователь Аватар для mell
    Регистрация:
    15.06.2011
    Пол:
    Мужчина
    Сообщений:
    2,079
    Накопленные выплаты (Подробнее):
    9596 RUB
    Поставил(а) лайков:
    1,141
    Получено лайков:   4,035
    в 1,229 сообщениях
    194%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от Artur Посмотреть сообщение
    Всё думал как можно разделить линии стохастика... может так?
    Код:
     double A1= iStochastic(NULL,0,PR_K,0,3,MODE_SMA,0,MODE_MAIN,0);
     double A2= iStochastic(NULL,0,0,PR_D,3,MODE_SMA,0,MODE_MAIN,0);
    тебе надо сделать быстрый и медленный стохастик. тогда будут пересечения. наподобие того, как сдвиг по барам у RSi чтоб вычислить момент выхода из зоны.

    Индикаторы зло! Не верю никому кроме Bollinger Bands. хотя.. и ему не верю!
    Тестирую новинку, сольет не сольет...:
    [img]http://widgets.********.com/widgets/1072581/mini.jpg[/img]

  6. линк#44
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,183
    Накопленные выплаты (Подробнее):
    164763 RUB
    Поставил(а) лайков:
    922
    Получено лайков:   7,267
    в 3,494 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от Artur Посмотреть сообщение
    Всё думал как можно разделить линии стохастика... может так?
    Код:
     double A1= iStochastic(NULL,0,PR_K,0,3,MODE_SMA,0,MODE_MAIN,0);
     double A2= iStochastic(NULL,0,0,PR_D,3,MODE_SMA,0,MODE_MAIN,0);
    Нет, не так. Даю наводку...

    Внимательно читаем справку по MQL:
    Нажмите на изображение для увеличения
Название: img_01.PNG
Просмотров: 28
Размер:	5.4 КБ
ID:	120408

    что косатеся разносторонних ордеров то
    возможно if OP_BUY>1 then OP_SELL == False..... что то вроде этого
    или же при открытии ордера в бай (buy:=buy+1 а после if buy>1 then OP_BUY == StopOpenOrder;
    Тоже не так. Даю наводку...
    Надо получить количество открытых ордеров, как для бай так и для селл. Это можно сделать раздельно, а можно одной простой функцией. Например вот такой, которой пользуюсь я сам:
    PHP код:
    int CalculateOrdersCount(int& CountOfBuy, int& CountOfSell)
    {
    int TotalCount = 0;
    CountOfBuy = TotalCount;
    CountOfSell = TotalCount;
    for(
    int i = 0; i < OrdersTotal(); i++)
    if(
    OrderSelect(i, SELECT_BY_POS))
    if(
    OrderSymbol() == Symbol())
    //if(OrderMagicNumber() == Magic) //Эта строка нужна когда для ордеров используется "Magic number"
    switch(OrderType())
    {
    case
    OP_BUY: CountOfBuy++; TotalCount++; break;
    case
    OP_SELL: CountOfSell++; TotalCount++; break;
    }
    return(
    TotalCount);
    }
    Она возвращает как общее количество ордеров, так и раздельно по бай и по селл.
    Использовать ее так:
    PHP код:
    TotalOrders = CalculateOrdersCount(BuyOrders, SellOrders);
    Предварительно должны быть определены переменные TotalOrders, BuyOrders, SellOrders с типом int.

    Затем на основании результатов работы этой функции строим свои условия для входа в рынок и опроса индикаторов.


  7. линк#45
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,183
    Накопленные выплаты (Подробнее):
    164763 RUB
    Поставил(а) лайков:
    922
    Получено лайков:   7,267
    в 3,494 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от mell Посмотреть сообщение
    тебе надо сделать быстрый и медленный стохастик. тогда будут пересечения. наподобие того, как сдвиг по барам у RSi чтоб вычислить момент выхода из зоны.
    Неправильно. В стохастике уже все есть. И "быстрый" и "медленный" стохастик. Читаем мой пост чуть выше.


  8. линк#46
    Кандидат форумных наук
    Отдыхаю
     
    Artur приемлемый уровень репутации Artur приемлемый уровень репутации Аватар для Artur
    Регистрация:
    06.09.2010
    Пол:
    Мужчина
    Сообщений:
    2,038
    Накопленные выплаты (Подробнее):
    26207 RUB
    Поставил(а) лайков:
    49
    Получено лайков:   210
    в 174 сообщениях
    10%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Нет, не так. Даю наводку...

    Внимательно читаем справку по MQL:
    if(iStochastic(NULL,0,8,5,5,MODE_SMA,0,MODE_MAIN,0 )>iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL, 0))
    return(0);

    MODE_MAIN 0 Основная линия
    MODE_SIGNAL 1 Сигнальная линия

    Тоже не так. Даю наводку...
    Надо получить количество открытых ордеров, как для бай так и для селл. Это можно сделать раздельно, а можно одной простой функцией. Например вот такой, которой пользуюсь я сам:
    PHP код:
    int CalculateOrdersCount(int& CountOfBuy, int& CountOfSell)
    {
    int TotalCount = 0;
    CountOfBuy = TotalCount;
    CountOfSell = TotalCount;
    for(
    int i = 0; i < OrdersTotal(); i++)
    if(
    OrderSelect(i, SELECT_BY_POS))
    if(
    OrderSymbol() == Symbol())
    //if(OrderMagicNumber() == Magic) //Эта строка нужна когда для ордеров используется "Magic number"
    switch(OrderType())
    {
    case
    OP_BUY: CountOfBuy++; TotalCount++; break;
    case
    OP_SELL: CountOfSell++; TotalCount++; break;
    }
    return(
    TotalCount);
    }
    Она возвращает как общее количество ордеров, так и раздельно по бай и по селл.
    Использовать ее так:
    PHP код:
    TotalOrders = CalculateOrdersCount(BuyOrders, SellOrders);
    Предварительно должны быть определены переменные TotalOrders, BuyOrders, SellOrders с типом int.

    Затем на основании результатов работы этой функции строим свои условия для входа в рынок и опроса индикаторов.
    int TotalOrders = 2, BuyOrders = 1, SellOrders = 1; так


    Предлагаю к инвестированию ^ /-/ Перечитайте регламент найдёте много интерестного!

  9. линк#47
    Кандидат форумных наук
    Отдыхаю
     
    Artur приемлемый уровень репутации Artur приемлемый уровень репутации Аватар для Artur
    Регистрация:
    06.09.2010
    Пол:
    Мужчина
    Сообщений:
    2,038
    Накопленные выплаты (Подробнее):
    26207 RUB
    Поставил(а) лайков:
    49
    Получено лайков:   210
    в 174 сообщениях
    10%
    ПодписатьсяПодписаться
    Подписано: 0
    if (Time = [0]){ /*число заключёное в квадратные скобочки округляется до целого числа*/
    это условие задаёт открытие ордера когда бар только открылся... вроде




    здесь я размещал свои индикаторы


    Предлагаю к инвестированию ^ /-/ Перечитайте регламент найдёте много интерестного!

  10. линк#48
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,183
    Накопленные выплаты (Подробнее):
    164763 RUB
    Поставил(а) лайков:
    922
    Получено лайков:   7,267
    в 3,494 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от Artur Посмотреть сообщение
    if(iStochastic(NULL,0,8,5,5,MODE_SMA,0,MODE_MAIN,0 )>iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL, 0))
    return(0);

    MODE_MAIN 0 Основная линия
    MODE_SIGNAL 1 Сигнальная линия
    Уже кое что. Вот только параметры в обоих функциях вызова стохастика должны быть одинаковые. Разница должна быть только в параметре mode.
    int TotalOrders = 2, BuyOrders = 1, SellOrders = 1; так
    Нет не так. Эти переменные можно объявлять и пустыми. Значения в них будут изменяться в процессе работы в зависимости от ситуации в рынке. Вот эти значения и надо будет проверять в процессе работы твоего скрипта прежде чем поставить ордер или опросить индикаторы.


  11. линк#49
    Кандидат форумных наук
    Отдыхаю
     
    Artur приемлемый уровень репутации Artur приемлемый уровень репутации Аватар для Artur
    Регистрация:
    06.09.2010
    Пол:
    Мужчина
    Сообщений:
    2,038
    Накопленные выплаты (Подробнее):
    26207 RUB
    Поставил(а) лайков:
    49
    Получено лайков:   210
    в 174 сообщениях
    10%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Эти переменные можно объявлять и пустыми. Значения в них будут изменяться в процессе работы в зависимости от ситуации в рынке. Вот эти значения и надо будет проверять в процессе работы твоего скрипта прежде чем поставить ордер или опросить индикаторы.
    подскажи ка как это сделать? предать им какие то значения букв и после чео оперировать в самой программе?


    Предлагаю к инвестированию ^ /-/ Перечитайте регламент найдёте много интерестного!

  12. линк#50
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,183
    Накопленные выплаты (Подробнее):
    164763 RUB
    Поставил(а) лайков:
    922
    Получено лайков:   7,267
    в 3,494 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от Artur Посмотреть сообщение
    if (Time = [0]){ /*число заключёное в квадратные скобочки округляется до целого числа*/
    это условие задаёт открытие ордера когда бар только открылся... вроде
    Это вообще полный бред.


  13. линк#51
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,183
    Накопленные выплаты (Подробнее):
    164763 RUB
    Поставил(а) лайков:
    922
    Получено лайков:   7,267
    в 3,494 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от Artur Посмотреть сообщение
    подскажи ка как это сделать? предать им какие то значения букв и после чео оперировать в самой программе?
    А подумать? Я уже и так вон сколько наводок дал. Осталась самая малость - увязать все это в кучу.


  14. линк#52
    Знающий
    Ангел
     
    JetRDS авторитетный пользователь JetRDS авторитетный пользователь JetRDS авторитетный пользователь JetRDS авторитетный пользователь JetRDS авторитетный пользователь JetRDS авторитетный пользователь JetRDS авторитетный пользователь JetRDS авторитетный пользователь JetRDS авторитетный пользователь JetRDS авторитетный пользователь JetRDS авторитетный пользователь Аватар для JetRDS
    Регистрация:
    23.07.2011
    Пол:
    Мужчина
    Сообщений:
    3,911
    Накопленные выплаты (Подробнее):
    44939 RUB
    Поставил(а) лайков:
    638
    Получено лайков:   3,048
    в 1,636 сообщениях
    78%
    ПодписатьсяПодписаться
    Подписано: 0
    Люди подскажите или покажите как написать скрипты чтобы отражались таймфреймы на Н2 Н6 и Н8 - а то на стандарте их нет - а сними очень удобно между прочим - как их написать - знает кто-нибудь - просто торгую в долгосрочку - сильные разрывы типа Н4 и D1 - не очень то и удобно


  15. линк#53
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,183
    Накопленные выплаты (Подробнее):
    164763 RUB
    Поставил(а) лайков:
    922
    Получено лайков:   7,267
    в 3,494 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от JetRDS Посмотреть сообщение
    Люди подскажите или покажите как написать скрипты чтобы отражались таймфреймы на Н2 Н6 и Н8 - а то на стандарте их нет - а сними очень удобно между прочим - как их написать - знает кто-нибудь - просто торгую в долгосрочку - сильные разрывы типа Н4 и D1 - не очень то и удобно
    Ищи решение на http://forum.mql4.com/ru/ .
    Цитата Сообщение от Artur Посмотреть сообщение
    это нужно не скрипты а саму программу мета4 переписовать.
    Не нужно. Решение уже есть и довольно давно реализовано.


  16. линк#54
    Кандидат форумных наук
    Отдыхаю
     
    Artur приемлемый уровень репутации Artur приемлемый уровень репутации Аватар для Artur
    Регистрация:
    06.09.2010
    Пол:
    Мужчина
    Сообщений:
    2,038
    Накопленные выплаты (Подробнее):
    26207 RUB
    Поставил(а) лайков:
    49
    Получено лайков:   210
    в 174 сообщениях
    10%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    А подумать? Я уже и так вон сколько наводок дал. Осталась самая малость - увязать все это в кучу.
    что то вроде этого
    Код:
    int start()
      {
    int CalculateOrdersCount(int& CountOfBuy, int& CountOfSell) 
    { 
      int TotalCount = 0; 
      CountOfBuy = TotalCount; 
      CountOfSell = TotalCount; 
      for(int i = 0; i < OrdersTotal(); i++)  
        if(OrderSelect(i, SELECT_BY_POS)) 
          if(OrderSymbol() == Symbol()) 
            //if(OrderMagicNumber() == Magic)      //Эта строка нужна когда для ордеров используется "Magic number" 
              switch(OrderType()) 
              {  
                case OP_BUY: CountOfBuy++; TotalCount++; break; 
                case OP_SELL: CountOfSell++; TotalCount++; break; 
              } 
      return(TotalCount); 
    }
      int TotalOrders = 2, BuyOrders = 1, SellOrders = 1; 
        if TotalOrders = CalculateOrdersCount(BuyOrders, SellOrders){
        if(iStochastic(NULL,0,8,5,4,MODE_SMA,0,MODE_MAIN,0 )>iStochastic(NULL,0,8,5,4,MODE_SMA,0,MODE_SIGNAL, 0)){
         OrderSend(Symbol(),OP_BUY, 0.1,NormalizeDouble(Ask,Digits),2,SL,TP,"+",123,3)}
         
        if(iStochastic(NULL,0,8,5,4,MODE_SMA,0,MODE_MAIN,0 )
    

    Последний раз редактировалось Artur; 25.07.2011 в 22:56.

    Предлагаю к инвестированию ^ /-/ Перечитайте регламент найдёте много интерестного!

  17. линк#55
    Кандидат форумных наук
    Отдыхаю
     
    Artur приемлемый уровень репутации Artur приемлемый уровень репутации Аватар для Artur
    Регистрация:
    06.09.2010
    Пол:
    Мужчина
    Сообщений:
    2,038
    Накопленные выплаты (Подробнее):
    26207 RUB
    Поставил(а) лайков:
    49
    Получено лайков:   210
    в 174 сообщениях
    10%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Это вообще полный бред.
    так лучше
    if(Time[0] == prevtime) return(0); //ждем нового бара
    prevtime = Time[0]; //если появился новый бар , включаемся
    ...


    Предлагаю к инвестированию ^ /-/ Перечитайте регламент найдёте много интерестного!

  18. линк#56
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,183
    Накопленные выплаты (Подробнее):
    164763 RUB
    Поставил(а) лайков:
    922
    Получено лайков:   7,267
    в 3,494 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от Artur Посмотреть сообщение

    Ё-ма-ё... Че это было-то? Ты хоть откомпилировать этот бред пробовал? Зачем пихать тело чужой функции в функцию start()?
    Возьми любой из моих советников, например вот этот, разложи его по запчастям и посмотри как там все устроено, как работает, как что и где пишется. А потом попробуй применить необходимые решения для своего скрипта. Ну не дело это с таким подходом.


  19. линк#57
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,183
    Накопленные выплаты (Подробнее):
    164763 RUB
    Поставил(а) лайков:
    922
    Получено лайков:   7,267
    в 3,494 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от Artur Посмотреть сообщение
    так лучше
    if(Time[0] == prevtime) return(0); //ждем нового бара
    prevtime = Time[0]; //если появился новый бар , включаемся
    ...
    Так значительно лучше. Но копипастить любой сможет. А вот понять для себя что же тут написано дано не каждому.


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

    Artur (25.07.2011)

  21. линк#58
    Кандидат форумных наук
    Отдыхаю
     
    Artur приемлемый уровень репутации Artur приемлемый уровень репутации Аватар для Artur
    Регистрация:
    06.09.2010
    Пол:
    Мужчина
    Сообщений:
    2,038
    Накопленные выплаты (Подробнее):
    26207 RUB
    Поставил(а) лайков:
    49
    Получено лайков:   210
    в 174 сообщениях
    10%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Ё-ма-ё... Че это было-то? Ты хоть откомпилировать этот бред пробовал? Зачем пихать тело чужой функции в функцию start()?
    Возьми любой из моих советников, например вот этот, разложи его по запчастям и посмотри как там все устроено, как работает, как что и где пишется. А потом попробуй применить необходимые решения для своего скрипта. Ну не дело это с таким подходом.
    Хорошо. я подумаю над ним

    мне кажется здесь скрыто кое что важное)
    Код:
    int CountOfOrders()
    {
      int count = 0;
      for (int i = 0; i < OrdersTotal(); i++) 
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          if ((OrderSymbol() == Symbol()) && ((OrderMagicNumber() == MN_Buy)||(OrderMagicNumber() == MN_Sell))) 
            if ((OrderType() == OP_SELL) || (OrderType() == OP_BUY)) 
              count++;
      return(count);
    }
    
    //+------------------------------------------------------------------+
    int CountOfBuy()
    {
      int count = 0;
      for (int i = 0; i < OrdersTotal(); i++) 
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          if ((OrderSymbol() == Symbol()) && (OrderMagicNumber() == MN_Buy)) 
            if (OrderType() == OP_BUY) 
              count++;
      return(count);
    }
    
    //+------------------------------------------------------------------+
    int CountOfSell()
    {
      int count = 0;
      for (int i = 0; i < OrdersTotal(); i++) 
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          if ((OrderSymbol() == Symbol()) && (OrderMagicNumber() == MN_Sell)) 
            if (OrderType() == OP_SELL) 
              count++;
      return(count);
    }
    
    //+------------------------------------------------------------------+
    int SignalCheck()
    {
      double Bar1Close = NormalizeDouble(iClose(Symbol(), 0, 1), Digits);
      double Bar2Close = NormalizeDouble(iClose(Symbol(), 0, 2), Digits);
      if (MathAbs(NormalizeDouble((Bar1Close - Bar2Close) / Point, 0)) < 3) 
        return(-1);
      if (Bar1Close > Bar2Close)
        if(NormalizeDouble((Bar1Close - Bar2Close) / Point, 0) >= 3) 
          return(OP_BUY);
      if (Bar1Close < Bar2Close) 
        if(NormalizeDouble((Bar2Close - Bar1Close) / Point, 0) >= 3) 
          return(OP_SELL);
      return(-1);
    }


    Предлагаю к инвестированию ^ /-/ Перечитайте регламент найдёте много интерестного!

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

    ir0407 (25.07.2011)

  23. линк#59
    Кандидат форумных наук
    no
     
    fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация fore-x хорошая репутация Аватар для fore-x
    Регистрация:
    18.03.2011
    Пол:
    Мужчина
    Сообщений:
    1,716
    Накопленные выплаты (Подробнее):
    18175 RUB
    Поставил(а) лайков:
    440
    Получено лайков:   588
    в 401 сообщениях
    34%
    ПодписатьсяПодписаться
    Подписано: 0
    Всем привет, зашел в тупик, направьте:
    PHP код:
    #property indicator_chart_window

    double sdvig,spread,x,priceHighvTele,priceLowvTele;
    int N;

    ObjectCreate( "high v tele",OBJ_HLINE,0,0,0);
    ObjectCreate( "low v tele",OBJ_HLINE,0,0,0);
    ObjectSet( "high v tele",6 ,Blue);
    ObjectSet( "low v tele",6 ,Red);

    int start()
    {
    spread = Ask - Bid;
    sdvig = spread/2;
    x = (High[N]- Low[N])/3;

    ObjectSet( "high v tele",OBJ_HLINE ,High[N] + sdvig - x);
    ObjectSet( "low v tele",OBJ_HLINE ,Low[N] + sdvig + x);

    return(
    0);
    }
    как с помощью вертикальной линии, присвоить переменной N значение индекса бара, на котором она находится? Вертикальную линию двигать буду вручную, а написанный код должен будет подхватывать этот индекс. Проблема - вертикальная линия возвращает значение типа datetime, не могу сообразить, как задуманное нужно осуществить технически?


  24. линк#60
    Кандидат форумных наук
    Отдыхаю
     
    Artur приемлемый уровень репутации Artur приемлемый уровень репутации Аватар для Artur
    Регистрация:
    06.09.2010
    Пол:
    Мужчина
    Сообщений:
    2,038
    Накопленные выплаты (Подробнее):
    26207 RUB
    Поставил(а) лайков:
    49
    Получено лайков:   210
    в 174 сообщениях
    10%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от fore-x Посмотреть сообщение

    наводка вертикальная линия=== DataTime ===возможно ещё это поможет


    Предлагаю к инвестированию ^ /-/ Перечитайте регламент найдёте много интерестного!

  25. <a href="https://www.instaforex.com/ru/forexcopy_system">Форекс портал</a>
  26. линк#61
    Знающий
    Сама доброта
     
    DGreen авторитетный пользователь DGreen авторитетный пользователь DGreen авторитетный пользователь DGreen авторитетный пользователь DGreen авторитетный пользователь DGreen авторитетный пользователь DGreen авторитетный пользователь DGreen авторитетный пользователь DGreen авторитетный пользователь DGreen авторитетный пользователь DGreen авторитетный пользователь Аватар для DGreen
    Регистрация:
    01.11.2010
    Пол:
    Мужчина
    Сообщений:
    4,018
    Накопленные выплаты (Подробнее):
    4855 RUB
    Поставил(а) лайков:
    3,491
    Получено лайков:   3,779
    в 1,500 сообщениях
    94%
    ПодписатьсяПодписаться
    Подписано: 0
    Цитата Сообщение от fore-x Посмотреть сообщение
    как с помощью вертикальной линии, присвоить переменной N значение индекса бара, на котором она находится? Вертикальную линию двигать буду вручную, а написанный код должен будет подхватывать этот индекс. Проблема - вертикальная линия возвращает значение типа datetime, не могу сообразить, как задуманное нужно осуществить технически?
    Ну так кроме дэиттаим тебе ничего не надо, в ней время на котором стоит линия , соответственно надо вычислить какая свеча была в то время, делается просто : берёшь TimeCurrent() (время в секундах прошедшее с 1.1. 1970 года ) вычитаешь из нее время твоей линии, получаешь разницу между текущим временем и временем линии , далее полученное делишь на фреим на котором стоит советник к примеру если фреим м5 то надо делить на 5*60сек=300сек . Получаем количество свечей текущего таимфреима способных поместиться в этом отрезке времени, значение выйдет дробное к примеру 5.7 свечи, тоесть по логике, время линии находится на времени 6й свечи, пишем NormalizeDouble(5.7+1,0); и делу конец.

    Нет я немного ошибся, лучше плясать не от TimeCurrent(), а от времени открытия текущей (0й) свечи, чтобы погрешность не возникала .



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

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

Похожие темы

  1. Торговать по Фибоуровням прибыльно.GBP\USD (Или учимся торговать по фибо сетке)
    от Viovol в разделе Каналы, ZigZag, волновой и графический анализ
    Replies: 68
    Последнее сообщение: 25.07.2017, 18:39
  2. MQL5: Учимся пошагово писать советника и разбираться со скриптами
    от Родионов Алексей в разделе MQL-программирование, АТС
    Replies: 299
    Последнее сообщение: 17.08.2016, 09:17
  3. MQL для тех, кто не умеет программировать
    от VDev в разделе MQL-программирование, АТС
    Replies: 45
    Последнее сообщение: 05.01.2014, 17:09