Форум трейдеров » Торговые роботы, советники, индикаторы » Язык MQL4 для "чайников"
+ Подписаться
Страница 9 из 16 ПерваяПервая ... 7891011 ... ПоследняяПоследняя
  1. 55
    Комментарии
    6
    Темы
    55
    Репутация Pro
     
    В начале пути

    3 Медалей
    Вот теперь работает! На всех инструментах.
    Спасибо за помощь!
  2. 1,294
    Комментарии
    16
    Темы
    1297
    Репутация Pro
     
    Мастер форумных наук

    5 Медалей
    Так в чём загвоздка то была?
  3. 1,401
    Комментарии
    13
    Темы
    1408
    Репутация Pro
    Аватар для Karakurt  
    Мастер форумных наук

    5 Медалей
    -> Vlad_FX, Dark67

    Господа, вам дали отличный, и главное, правильный совет. А то если так под каждый инструмент размер тика прописывать - можно забыть, зачем код писали. ;)

    Цитата Сообщение от Aalex Посмотреть сообщение
    а еще лучше использовать MarketInfo(Symbol(),MODE_TICKSIZE) - потом не надо будет адаптировать к инструментам у которых например размер тика 0,25 или 0,5 или еще какой
  4. 55
    Комментарии
    6
    Темы
    55
    Репутация Pro
     
    В начале пути

    3 Медалей
    Цитата Сообщение от Petrovich Посмотреть сообщение
    Так в чём загвоздка то была?
    Dark67 привел первый вариант кода, в котором было так:
    Код:
    // GBPUSD ----------------------------------------------------------
    
    double bid = MarketInfo("GBPUSD",MODE_BID);
    double ask = MarketInfo("GBPUSD",MODE_ASK);
    int Ticket;
    double SL_long = bid-25*0.0001;
    double TP_long = bid+50*0.0001;
    
    Ticket = OrderSend("GBPUSD", OP_BUY, 0.1, Ask, 5, 0, 0);
    OrderModify(Ticket, 0, SL_long, TP_long,0);
    Потом вот такой вариант:
    Код:
    // GBPUSD ----------------------------------------------------------
    
    double bid = MarketInfo("GBPUSD",MODE_BID);
    int Ticket;
    double SL_long = bid-25*0.0001;
    double TP_long = bid+50*0.0001;
    
    Ticket = OrderSend("GBPUSD", OP_BUY, 0.1, 0, 5, 0, 0);
    OrderModify(Ticket, 0, SL_long, TP_long,0);
    Ask не определяется через MarketInfo, а просто указывается - 0.
    Второй вариант работает. Первый - нет.
  5. 1,294
    Комментарии
    16
    Темы
    1297
    Репутация Pro
     
    Мастер форумных наук

    5 Медалей
    Понятно.. т.е. покупаешь фунт, а аск берётся с текущего графика ...Т.к. Ask - предопределённая переменная...
    А я и не знал, что в рыночном ордере цену можно не указывать....
    Возможно у меня по этой причине советник иногда ордера не открывает...
    (когда цена быстро убегает)
  6. 776
    Комментарии
    6
    Темы
    781
    Репутация Pro
    Аватар для fidel_fx  
    В начале пути

    3 Медалей
    Помогите сделать индикатор показывающий корреляцию между индикаторами. Сначала пытался сделать сам, потом переделать другие, не получается... В архиве мой вариант и вариант для валют с которого я пытался переделать. Подправте пожалуйста.
    Вложения Вложения
    • Тип файла: zip tc_.zip (1.7 Кб, Просмотров: 6)
  7. 55
    Комментарии
    6
    Темы
    55
    Репутация Pro
     
    В начале пути

    3 Медалей
    Подскажите, как правильно определять, что позиция по данному инструменту уже открыта и новые по нему же открывать не надо?
    Использую такую строку: if (OrdersTotal() != 0) return;
    Но если один советник наложен на несколько инструментов (графиков), то позиция открывается только по одному из них, который успел раньше, а по остальным - нет.
  8. 776
    Комментарии
    6
    Темы
    781
    Репутация Pro
    Аватар для fidel_fx  
    В начале пути

    3 Медалей
    Цитата Сообщение от Vlad_FX Посмотреть сообщение
    Подскажите, как правильно определять, что позиция по данному инструменту уже открыта и новые по нему же открывать не надо?
    Использую такую строку: if (OrdersTotal() != 0) return;
    Но если один советник наложен на несколько инструментов (графиков), то позиция открывается только по одному из них, который успел раньше, а по остальным - нет.
    Точно не скажу, сам начинающий.
    Нужно выбрать открытый ордер и сравнить OrderSymbol() с ткущим инструментом. А дальше как Вам нужно. Если OrderSymbol() совпадает с инструментом на котором появился сигнал значит не открывать, если не совпадает значит открывать.
  9. 1,294
    Комментарии
    16
    Темы
    1297
    Репутация Pro
     
    Мастер форумных наук

    5 Медалей
    OrderSymbol()
    и ещё можно использовать магическое число,
    #define MAGIC 12345
    ............................
    ............................
    if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue;
  10. 55
    Комментарии
    6
    Темы
    55
    Репутация Pro
     
    В начале пути

    3 Медалей
    Что-то я не пойму, как перебрать все открытые ордера и узнать, по каким инструментам они открыты?

Вверх
РегистрацияX

чтобы писать, читать, комментировать