Результаты опроса:

Голосовавшие
0. Вы ещё не голосовали в этом опросе
  • 0 0%
Форум трейдеров » Торговые роботы, советники, индикаторы » Автотрейдинг. Вопросы новичков
+ Подписаться
Страница 30 из 33 ПерваяПервая ... 202829303132 ... ПоследняяПоследняя
  1. 26
    Комментарии
    0
    Темы
    26
    Репутация Pro
     
    Новичок

    2 Медалей
    В том-то и дело, что я все разрешаю, как надо. До этого сам писал советников, которые давали просто сигналы через алерт, и все работало. А вот открывать ордера не хотят.

    Вот код:

    //+------------------------------------------------------------------+
    //| Разработка1.mq4 |
    //| Copyright © 2010, MetaQuotes Software Corp. |
    //| http://www.metaquotes.net |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2010, MetaQuotes Software Corp."
    #property link "http://www.metaquotes.net"
    extern int MaxRisk=2;
    extern bool Buy=true;
    extern bool Sell=true;
    extern int TakeProfit=66656;
    extern int StopLoss=15666;
    //+------------------------------------------------------------------+
    int init(){ return(0);}
    int deinit(){return(0);}
    //+------------------------------------------------------------------+
    int start()
    {

    if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
    if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
    int oBuy=0;
    int oSell=0;
    for(int i=OrdersTotal() -1;i>=0;i--)


    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
    {
    if(OrderType()==OP_BUY) oBuy++;
    if(OrderType()==OP_SELL) oSell++;
    }

    double Lot=GetLot(MaxRisk);
    if(Lot==0) {Alert("Недостаточно средств!");return(0);}

    if(oBuy==0)
    {NewOrder("FDAXH1",OP_BUY,Lot);
    NewOrder("FESXH1",OP_SELL,Lot);}



    return(0);}
    //+------------------------------------------------------------------+
    double GetLot(int Risk)//получаем лот
    {double Free =AccountFreeMargin();
    double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
    double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
    double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
    double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
    double Lot =MathFloor(Free*Risk/100/One_Lot/Step)*Step;
    if(Lot<Min_Lot) Lot=Min_Lot;
    if(Lot>Max_Lot) Lot=Max_Lot;
    if(Lot*One_Lot>Free) return(0.0);
    return(Lot);}
    //+------------------------------------------------------------------+
    int NewOrder(string symbol, int Cmd,double Lot)//открываем ордер
    {double TP=0; //тейкпрофит
    double SL=0; //стоплосс
    double PR=0; //Цена
    while(!IsTradeAllowed()) Sleep(100);
    if(Cmd==OP_BUY)
    {PR=Ask;
    if(TakeProfit>0) TP=Ask+TakeProfit*Point;
    if(StopLoss>0) SL=Ask-StopLoss*Point;}
    if(Cmd==OP_SELL)
    {PR=Bid;
    if(TakeProfit>0) TP=Bid-TakeProfit*Point;
    if(StopLoss>0) SL=Bid+StopLoss*Point;}
    int tic=OrderSend(symbol,Cmd,Lot,PR,3,SL,TP,"",0,0,CLR _NONE);
    if(tic<0) Print("Ошибка открытия ордера: ",GetLastError());
    return(tic);}
  2. 6,556
    Комментарии
    18
    Темы
    6883
    Репутация Pro
    Аватар для greych  
    Старожил

    7 Медалей
    откровенно ругается на установленные уровни! очевидно ранее использовался на инструментах с равным значением тика и пипса, но здесь дакс, а нормализации цены в коде не видать.
  3. 26
    Комментарии
    0
    Темы
    26
    Репутация Pro
     
    Новичок

    2 Медалей
    Цитата Сообщение от greych Посмотреть сообщение
    откровенно ругается на установленные уровни! очевидно ранее использовался на инструментах с равным значением тика и пипса, но здесь дакс, а нормализации цены в коде не видать.
    А как нормализовать-то?!
  4. 6,556
    Комментарии
    18
    Темы
    6883
    Репутация Pro
    Аватар для greych  
    Старожил

    7 Медалей
    Цитата Сообщение от Думчев Артур Посмотреть сообщение
    А как нормализовать-то?!
    концепция изменилась:oldtimer: вы же сразу выставляете тейк и стоп, а в броко по рынку сразу низяяя:D сначала нули, а затем выставить операцией коррекции, но цифири по заданным параметрам не нравятся все равно, но не сегодня:bow:
  5. 26
    Комментарии
    0
    Темы
    26
    Репутация Pro
     
    Новичок

    2 Медалей
    Цитата Сообщение от greych Посмотреть сообщение
    концепция изменилась:oldtimer: вы же сразу выставляете тейк и стоп, а в броко по рынку сразу низяяя:D сначала нули, а затем выставить операцией коррекции, но цифири по заданным параметрам не нравятся все равно, но не сегодня:bow:
    Списибо. Очень помогли!
  6. 405
    Комментарии
    2
    Темы
    411
    Репутация Pro
     
    Member

    2 Медалей
    Цитата Сообщение от Думчев Артур Посмотреть сообщение
    А как нормализовать-то?!
    NormalizeDouble(...,Digits) для всех вычисляемых цен применять.
    if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
    ...
    while(!IsTradeAllowed()) Sleep(100);
    ...
    IsTradeAllowed() совсем о другом сообщает, о запрете торговать, выставленном крыжиком в самом терминале. Если терминал занят, то тик вы вообще не получите и обрабатывать это событие не придется. Вам, вероятно, нужен IsTradeContextBusy(), и то, если у вас больше одного советника работают.
    Еще сильно рекомендую код перед публикацией приводить в удобочитаемый вид и ВВ # из менюшки использовать.
  7. 134
    Комментарии
    1
    Темы
    136
    Репутация Pro
    Аватар для G_Dark  
    В начале пути

    2 Медалей
    Добрый день! Скажите пожалуйста, можно ли сделать так, чтобы при наведении на люнии индекатора стрелки мышки отображалось не название индекатора, а название самой линии. Зарание благодарна.
  8. 405
    Комментарии
    2
    Темы
    411
    Репутация Pro
     
    Member

    2 Медалей
    Цитата Сообщение от G_Dark Посмотреть сообщение
    Добрый день! Скажите пожалуйста, можно ли сделать так, чтобы при наведении на люнии индекатора стрелки мышки отображалось не название индекатора, а название самой линии. Зарание благодарна.
    Надо линиям дать имена через SetIndexLabel(), тогда они будут отображаться в подсказке.
  9. 75
    Комментарии
    0
    Темы
    75
    Репутация Pro
     
    В начале пути

    2 Медалей
    Всем привет и профитов!
    Коллеги, нужна Ваша помощь.
    У меня стоит 7-ка. Соответственно, советники компилировать на домашнем компе не могу - запрещает, как и сохранять в ручном режиме профили, как оказывается тоже. Короче, невдобица.
    Как снять защиту?
  10. 75
    Комментарии
    0
    Темы
    75
    Репутация Pro
     
    В начале пути

    2 Медалей
    Еще вопрос такой.
    Я открываю сделку вручную. Затем включаю на эту же валюту советник.
    Как прикрепить советник к открытой сделке? В М'джике надо что-то менять (тогда что менять) или как?

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

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