Советники: Cidomo - страница 2

 

Далее код:

//--- check Freeze and Stops levels
/*
   Type of order/position  |  Activation price  |  Check
   ------------------------|--------------------|--------------------------------------------
   Buy Limit order         |  Ask               |  Ask-OpenPrice  >= SYMBOL_TRADE_FREEZE_LEVEL
   Buy Stop order          |  Ask                   |  OpenPrice-Ask  >= SYMBOL_TRADE_FREEZE_LEVEL
   Sell Limit order        |  Bid                   |  OpenPrice-Bid  >= SYMBOL_TRADE_FREEZE_LEVEL
   Sell Stop order            |  Bid                |  Bid-OpenPrice  >= SYMBOL_TRADE_FREEZE_LEVEL
   Buy position            |  Bid                   |  TakeProfit-Bid >= SYMBOL_TRADE_FREEZE_LEVEL 
                           |                    |  Bid-StopLoss   >= SYMBOL_TRADE_FREEZE_LEVEL
   Sell position           |  Ask                   |  Ask-TakeProfit >= SYMBOL_TRADE_FREEZE_LEVEL
                           |                    |  StopLoss-Ask   >= SYMBOL_TRADE_FREEZE_LEVEL
                           
   Buying is done at the Ask price                 |  Selling is done at the Bid price
   ------------------------------------------------|----------------------------------
   TakeProfit        >= Bid                        |  TakeProfit        <= Ask
   StopLoss          <= Bid                          |  StopLoss          >= Ask
   TakeProfit - Bid  >= SYMBOL_TRADE_STOPS_LEVEL   |  Ask - TakeProfit  >= SYMBOL_TRADE_STOPS_LEVEL
   Bid - StopLoss    >= SYMBOL_TRADE_STOPS_LEVEL   |  StopLoss - Ask    >= SYMBOL_TRADE_STOPS_LEVEL
*/
   if(!RefreshRates() || !m_symbol.Refresh())
     {
      PrevBars=0;
      return;
     }
//--- FreezeLevel -> for pending order and modification
   double freeze_level=m_symbol.FreezeLevel()*m_symbol.Point();
   if(freeze_level==0.0)
      freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;
   freeze_level*=1.1;

Здесь не понятны расчеты:

freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;

freeze_level*=1.1;

Для чего? И зачем умножили *3.0 и *=1.1

 
Sysmart:

Далее код:

Здесь не понятны расчеты:

freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;

freeze_level*=1.1;

Для чего? И зачем умножили *3.0 и *=1.1

Главная задача - отсечь скальперов и любителей пипсовки.

 

Очень загадочна для меня функция OnTradeTransaction, если возможно, поясните пожалуйста на сколько возможно подробно, что тут происходит:

void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- get transaction type as enumeration value 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {
      long     deal_ticket       =0;
      long     deal_order        =0;
      long     deal_time         =0;
      long     deal_time_msc     =0;
      long     deal_type         =-1;
      long     deal_entry        =-1;
      long     deal_magic        =0;
      long     deal_reason       =-1;
      long     deal_position_id  =0;
      double   deal_volume       =0.0;
      double   deal_price        =0.0;
      double   deal_commission   =0.0;
      double   deal_swap         =0.0;
      double   deal_profit       =0.0;
      string   deal_symbol       ="";
      string   deal_comment      ="";
      string   deal_external_id  ="";
      if(HistoryDealSelect(trans.deal))
        {
         deal_ticket       =HistoryDealGetInteger(trans.deal,DEAL_TICKET);
         deal_order        =HistoryDealGetInteger(trans.deal,DEAL_ORDER);
         deal_time         =HistoryDealGetInteger(trans.deal,DEAL_TIME);
         deal_time_msc     =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC);
         deal_type         =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_entry        =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_magic        =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_reason       =HistoryDealGetInteger(trans.deal,DEAL_REASON);
         deal_position_id  =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID);

         deal_volume       =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
         deal_price        =HistoryDealGetDouble(trans.deal,DEAL_PRICE);
         deal_commission   =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION);
         deal_swap         =HistoryDealGetDouble(trans.deal,DEAL_SWAP);
         deal_profit       =HistoryDealGetDouble(trans.deal,DEAL_PROFIT);

         deal_symbol       =HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_comment      =HistoryDealGetString(trans.deal,DEAL_COMMENT);
         deal_external_id  =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID);
        }
      else
         return;
      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_IN)
            if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)
              {
               m_need_delete_buy_stop  = true;
               m_need_delete_sell_stop = true;
              }
     }
  }
 

В выражении:

      double tp=(InpTakeProfit==0)?0.0:price+ExtTakeProfit;
      if(tp!=0.0 && ExtTakeProfit<level) // check price
         tp=price+ExtTakeProfit;

по моему ошибочка, должно быть: tp=price+level;

 

Здравствуйте мой друг спасибо за ea, я попробовал его в демо и он работает нормально, открывать и делать пиндинг ордеров.


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


с моей благодарностью

 
Mazyad AlAdwani :

привет мой друг спасибо за еа, я попробовал ее на демо и она работает отлично, открываю и делаю пиндинг ордера.


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


с моей благодарностью

К сожалению, я не могу читать мысли на расстоянии. Кроме того, штатный телепат находится в отпуске. Поэтому: предоставьте такие данные (и это хорошая практика - предоставлять технические данные на техническом ресурсе)

  • валюта и баланс торгового счета
  • настройки советника
  • лог-файл (из вкладки "Эксперты" и вкладки "Журнал")
 
Vladimir Karputov:

К сожалению, я не могу читать мысли на расстоянии. Кроме того, штатный телепат находится в отпуске. Поэтому: предоставьте такие данные (и это хорошая практика - предоставлять технические данные на техническом ресурсе)

  • валюта и баланс торгового счета
  • настройки советника
  • лог-файл (с вкладки "Эксперты" и вкладки "Журнал")
  • валюта и баланс торгового счета
  • GPBUSD - 80 $



  • лог-файл (из вкладки "Эксперты" и вкладки "Журнал")

Заранее спасибо, и извините, что не с первого раза, я новичок во всем этом, но учусь.



 

Привет еще раз, я ждал, чтобы вы решили мою проблему с советником. я хочу использовать его на реальном счете, есть ли новые новости?

 
Mazyad AlAdwani :

Привет еще раз, я ждал, чтобы вы решили мою проблему с советником. я хочу использовать его на реальном счете, есть ли новые новости?

Научитесь сначала читать. Здесь технический форум и если вас просят выполнить какие-то действия - вы должны их выполнить.


Форум о трейдинге, автоматических торговых системах и тестировании торговых стратегий

Эксперты: Cidomo

Владимир Карпутов, 2020.06.03 05:08

К сожалению, я не могу читать мысли на расстоянии. Кроме того, штатный телепат находится в отпуске. Поэтому: предоставьте такие данные (и это хорошая практика - предоставлять технические данные на техническом ресурсе)

  • валюта и баланс торгового счета
  • настройки советника
  • лог-файл (из вкладки "Эксперты" и вкладки "Журнал")

 
Vladimir Karputov:

Сначала научитесь читать. Здесь технический форум, и если вас просят выполнить какие-то действия - вы должны их выполнить.



Извините. Я отправил изображение в первом ответе, но я не заметил, что они удалены!


В любом случае, я снял видео, чтобы вы могли посмотреть его.