Форум трейдеров » Торговые роботы, советники, индикаторы » Эксперты, индикаторы, мтс, и т.д. - бесплатные
+ Подписаться
Страница 85 из 130 ПерваяПервая ... 3575838485868795 ... ПоследняяПоследняя
  1. 176
    Комментарии
    8
    Темы
    159
    Репутация Pro
    Аватар для cmillion  
    В начале пути

    3 Медалей
    Цитата Сообщение от XCOMP Посмотреть сообщение
    Да, а было бы совсем не плохо к имеющемуся советнику EMA WMA RSI реализовать еще один MACD.mq4 на основе стандартного MACD. Уважаемый cmillion, пожалуйста сотворите ЧУДО! Заранее спасибо...
    Как Вы хотите использовать MACD? Как фильтр? Тогда опишите принцип фильтрации по MACD. Будет свободное время, обязательно допишу, только необходимо четко сформулировать задачу.

    Удачи!
  2. 64
    Комментарии
    4
    Темы
    65
    Репутация Pro
     
    В начале пути

    2 Медалей
    Кто-нибудь подскажет советник.

    Нужно, чтобы он по заданному магику (или комментарию) закрывал все ордера, которые отмечены этим магиком / комментарием при достижении определенной прибыли (в валюте или пипсах).

    Спасибо!
  3. 176
    Комментарии
    8
    Темы
    159
    Репутация Pro
    Аватар для cmillion  
    В начале пути

    3 Медалей
    Цитата Сообщение от FLevel Посмотреть сообщение
    Кто-нибудь подскажет советник.

    Нужно, чтобы он по заданному магику (или комментарию) закрывал все ордера, которые отмечены этим магиком / комментарием при достижении определенной прибыли (в валюте или пипсах).

    Спасибо!
    Скрипт закрытия сделок.
    Есть возможность ввести Magic номер, тогда будут закрываться только ордера помеченные Magic.

    PHP код:
    //+------------------------------------------------------------------+
    #property copyright "Vladimir Khlistov"
    #property link      "http://cmillion.narod.ru"
    #property show_inputs
    #include <WinUser32.mqh>
    //+------------------------------------------------------------------+
     
    extern int   Magic  0//закрывать только сделки с магиком, если Magic  = 0 закрывать все
    extern int   Profit  0//закрывать только сделки с профитом больше Profit

    //+------------------------------------------------------------------+
    int start()
    {  
       
    bool error=true;
       
    int Ошибка;
       
    string txt="Cкрипт закрытия ордеров";
       if (
    Magic!=0)  txt=StringConcatenate(txt," с Magic=",Magic);
       
    Comment("");
       
    int ret=MessageBox("Закрыть все ордера (Да)   Закрыть только профитные (Нет)",
           
    txtMB_YESNOCANCEL|MB_TOPMOST);
       if (
    ret==IDCANCEL) return;
       while(
    true)
       {
          for (
    int j 0OrdersTotal(); j++)
          {
             if (
    OrderSelect(jSELECT_BY_POS))
             {
                if (
    OrderSymbol() == Symbol() && (OrderMagicNumber() == Magic || Magic == 0))
                {
                   if (
    OrderType()==OP_BUY 
                   {
                      if (
    ret==IDNO && Profit > (Bid-OrderOpenPrice())/Point) continue;
                      
    error=OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
                      if (
    errorAlert("Закрыт ордер N ",OrderTicket(),"  прибыль ",OrderProfit(),
                                         
    "     ",TimeToStr(TimeCurrent(),TIME_MINUTES));
                   }
                   if (
    OrderType()==OP_SELL
                   {
                      if (
    ret==IDNO && Profit > (OrderOpenPrice()-Ask)/Point) continue;
                      
    error=OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
                      if (
    errorAlert("Закрыт ордер N ",OrderTicket(),"  прибыль ",OrderProfit(),
                                         
    "     ",TimeToStr(TimeCurrent(),TIME_MINUTES));
                   }
                   
                   if (!
    error
                   {
                      
    j--;
                      
    Ошибка GetLastError();
                      if (
    Ошибка<2) continue;
                      if (
    Ошибка==129
                      {
                         
    Sleep(5000);
                         
    RefreshRates();
                         continue;
                      }
                      if (
    Ошибка==146
                      {
                         
    int ret1=MessageBox("Подсистема торговли занята"," "
                             
    MB_RETRYCANCEL|MB_TOPMOST|MB_ICONWARNING);
                         if (
    ret1==IDCANCEL) return;
                         if (
    IsTradeContextBusy()) Sleep(2000);
                         continue;
                      }
                      
    Comment("Ошибка ",Ошибка," закрытия ордера N ",OrderTicket(),
                              
    "     ",TimeToStr(TimeCurrent(),TIME_MINUTES));
                   }
                }
             }
          }
          
    int n;
          for (
    0OrdersTotal(); j++)
          {
             if (
    OrderSelect(jSELECT_BY_POS))
             {
                if (
    OrderSymbol() == Symbol() && (OrderMagicNumber() == Magic || Magic == 0)) n++;
             }  
          }
          if (
    n==0) break; else Sleep(2000);
       }
       return(
    0);
    }
    //+------------------------------------------------------------------+ 
    CloseAllOrders.rar
    Удачи!
  4. 64
    Комментарии
    4
    Темы
    65
    Репутация Pro
     
    В начале пути

    2 Медалей
    Цитата Сообщение от cmillion Посмотреть сообщение
    Скрипт закрытия сделок.
    Есть возможность ввести Magic номер, тогда будут закрываться только ордера помеченные Magic.

    Удачи!
    Спасибо!

    Как я понимаю, уровень суммарной прибыли по всем ордерам, отмеченным магиком, при котором будет происходить закрытие всех этих ордеров, не регулируется?
  5. 176
    Комментарии
    8
    Темы
    159
    Репутация Pro
    Аватар для cmillion  
    В начале пути

    3 Медалей
    Цитата Сообщение от FLevel Посмотреть сообщение
    Спасибо!

    Как я понимаю, уровень суммарной прибыли по всем ордерам, отмеченным магиком, при котором будет происходить закрытие всех этих ордеров, не регулируется?
    Про суммарный профит Вы не писали, Вам как я понял нужно закрывать ордера, достигшие определенной прибыли в пунктах, а суммарную прибыль не корректно переводить в пункты, т.к. лот каждого ордера может быть разным.
  6. 64
    Комментарии
    4
    Темы
    65
    Репутация Pro
     
    В начале пути

    2 Медалей
    Цитата Сообщение от cmillion Посмотреть сообщение
    Про суммарный профит Вы не писали, Вам как я понял нужно закрывать ордера, достигшие определенной прибыли в пунктах, а суммарную прибыль не корректно переводить в пункты, т.к. лот каждого ордера может быть разным.
    может, я не так выразился в начале. но идея именно в этом - закрывать несколько ордеров с одинаковым магиком при достижении заданной прибыли - в валюте. и лучше робот, чтобы постоянно работал.
  7. 64
    Комментарии
    4
    Темы
    65
    Репутация Pro
     
    В начале пути

    2 Медалей
    Цитата Сообщение от FLevel Посмотреть сообщение
    может, я не так выразился в начале. но идея именно в этом - закрывать несколько ордеров с одинаковым магиком при достижении заданной прибыли - в валюте. и лучше робот, чтобы постоянно работал.
    уже нашел:

    [PHP]//+------------------------------------------------------------------+
    //| СLOSE_ALL+MAGIC.mq4 |
    //| |
    //| |
    //+------------------------------------------------------------------+
    #property copyright ""
    #property link ""
    //+------------------------------------------------------------------+
    extern string сlose ="= 1 -баланс, 2 -пункты ,3 -проценты =";
    extern int close = 1; //закрывает 1 по балансу
    // 2 по пунктам
    // 3 по процентам
    extern bool magic = True;//если True то по магику,если False то все открытые
    extern int Magic = 7654321; // ставим нужный Magic експерта,если 0 то открытые вручную
    extern int Profit = 5000; // профит при котором закрываем
    extern int Loss = 5000; // лосс при котором закрываем
    int Slippage = 2; // проскальзывание
    extern bool Orderdelete = True; // удалять отложенные ордера True=ДА,False=НЕТ
    extern bool comment = True; // Показывать комментарий True=ДА,False=НЕТ
    //---------------------- Глобальные переменные советника --------------------------------------------------
    double price;
    int ordertype,err;
    bool result,first;
    #include <stdlib.mqh>
    //+--------------------------------------------------------------------------------------------------------
    int init() {
    if (!IsTesting())
    Comment(""); }
    //+--------------------------------------------------------------------------------------------------------
    int deinit() {
    if (!IsTesting())
    Comment(""); }
    //-----------------------------------поехали---------------------------------------------------------------
    int start() {
    double ask,bid,open,Prc,point,buy_e,sell_e,Equity,_close;
    int Pips,buy_p,sell_p,flag=0;
    string com,mg;
    //-------------------------------смотрим открытые----------------------------------------------------------
    if( magic) mg=Magic;if(!magic) mg="НЕ ВЫБРАН";
    for(int Q=0;Q<OrdersTotal();Q++) {
    if (OrderSelect(Q,SELECT_BY_POS,MODE_TRADES))
    if(!magic||OrderMagicNumber()==Magic){
    if (OrderType()==OP_SELL) {
    point=MarketInfo(OrderSymbol(),MODE_POINT);
    ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
    open=MathRound(OrderOpenPrice()/point);
    sell_e+=OrderProfit()+OrderSwap();
    sell_p+=(open-ask);
    }
    if (OrderType()==OP_BUY) {
    point=MarketInfo(OrderSymbol(),MODE_POINT);
    bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
    open=MathRound(OrderOpenPrice()/point);
    buy_e+=OrderProfit()+OrderSwap();
    buy_p+=(bid-open);
    }
    //-----------------------------------считаем---------------------------------------------------------------
    Pips=(buy_p+sell_p);
    Equity=(buy_e+sell_e);
    Prc=NormalizeDouble((Equity*100)/AccountBalance(),2);
    //----------------------------------выбираем---------------------------------------------------------------
    switch(close)
    {
    case 1: _close=Equity; com = "балансу"; break;
    case 2: _close=Pips; com = "пунктам"; break;
    case 3: _close=Prc; com = "процентам"; break;
    default: com = "НЕ УКАЗАНО"; break;
    }
    //--------------------Комментарии---------------------------------------------------------------------------
    if(comment)
    Comment(
    "\nЗакрытие по ",com," ",
    "\nMagic номер N ",mg," ",
    "\nПрибыль закрытия ",Profit," ",
    "\nУбыток закрытия ",Loss," ",
    "\nПрибыль BUY пунктов ",buy_p," п.",
    "\nПрибыль Sell пунктов ",sell_p," п.",
    "\nОбщих пунктов ",Pips," п.",
    "\nПрибыль BUY $ ",buy_e," $",
    "\nПрибыль Sell $ ",sell_e," $",
    "\nОбщий Equity $ ",Equity," $",
    "\nПрибыль процент % ",Prc," %"
    );
    }}
    //---------------------------условия для закрытия---------------------------------------------------------------------
    if (_close <=-Loss) { Alert("ЗАКРЫВАЕМ УБЫТОК O_o"," , ",OrderSymbol()," , ",OrderMagicNumber()," , ",OrderComment());flag=1;}
    if (_close >=Profit){ Alert("ЗАКРЫВАЕМ ПРОФИТ !!!" ," , ",OrderSymbol()," , ",OrderMagicNumber()," , ",OrderComment());flag=1;}
    //-----------------------------все позиции закрываем------------------------------------------------------------------
    if(flag>0)
    for(int i=OrdersTotal()-1;i>=0;i--){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    if(!magic||OrderMagicNumber()==Magic) {
    ordertype=OrderType();
    if(ordertype==OP_BUY || ordertype==OP_SELL){
    while(true){
    if(ordertype==OP_BUY)
    price=MarketInfo(OrderSymbol(),MODE_BID);
    else
    price=MarketInfo(OrderSymbol(),MODE_ASK);
    result=OrderClose(OrderTicket(),OrderLots(),price, Slippage,CLR_NONE);
    if(result!=true) {err=GetLastError(); Print("Ошибка закрытия ",err);}
    else err=0;
    if(err==135 || err==138) RefreshRates();
    else break;
    }}
    //---------------------------все ордера удаляем-----------------------------------------------------------------------
    if (Orderdelete) {
    if ( ordertype == OP_BUYSTOP || ordertype == OP_SELLSTOP || ordertype == OP_BUYLIMIT || ordertype == OP_SELLLIMIT )
    OrderDelete(OrderTicket(),CLR_NONE);
    }
    else Print( "возникла ошибка ",GetLastError());
    }}}
    return(0);
    }
    [PHP]
  8. 2
    Комментарии
    1
    Темы
    2
    Репутация Pro
     
    Новичок

    2 Медалей
    Цитата Сообщение от FLevel Посмотреть сообщение
    может, я не так выразился в начале. но идея именно в этом - закрывать несколько ордеров с одинаковым магиком при достижении заданной прибыли - в валюте. и лучше робот, чтобы постоянно работал.
    я так и сделал, еще кусочек кода взял из Илана.
    я частично его принцип применил и вот получился такой форекс стиль
    логин - 231104
    пароль - 62f2aew2h
    сервер - 195.95.151.168:444

    правда показал себя хорошо он только на EUR/CHF (M1)
    что тоже есть приятно
  9. 6,556
    Комментарии
    18
    Темы
    6883
    Репутация Pro
    Аватар для greych  
    Старожил

    7 Медалей
    Люди добрыя! Поможите с функцией!:bow:
    Не могу найти, нужна функция для определения текущего таймфрейма, т.е. переключая физически таймфрейм она должна выдавать фактическое значение открытого.
  10. 4,819
    Комментарии
    10
    Темы
    4852
    Репутация Pro
    Аватар для Максимъ  
    Снеговик-флудовик

    5 Медалей
    Неверноятно, но это Period(). :evil:
    Возвращает целое число - минуты текущего периода. :)

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

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