Ищу помощи в изменении скрипта в советник. - страница 3

 
master_crypto:

Здравствуйте

Кто может помочь переделать работающий скрипт в советник? Информацию об этом не нашел в открытом доступе. 

Вот ещё пример - сюда добавил два скрипта, один устанавливает отложенные ордера а другой удаляет.

из этого добавлено https://www.mql5.com/ru/code/30709

из этого добавлено https://www.mql5.com/ru/code/33777  

//+------------------------------------------------------------------+
//|                                                      OnStart.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- include
#include <Trade\Trade.mqh>
#include <Trade\OrderInfo.mqh>
//---
CTrade         m_trade; // object of CTrade class
COrderInfo     m_order; // object of COrderInfo class
//--- input parameters
input double   FixedLot=0.1;    // Fixed lot
input ushort   TakeProfit=200;  // Take profit
input ushort   Grid_step=100;   // Grid step
input ushort   N_orders=10;     // Number of orders in one direction
input ushort   Distance=50;     // Price offset
input bool     LimitGrid=false; // Set a grid of limit orders
//--- input parameters
input group             "Trading settings"
input bool     InpBuyLimit          = true;        // Delete Buy Limit
input bool     InpSellLimit         = true;        // Delete Sell Limit
input bool     InpBuyStop           = true;        // Delete Buy Stop
input bool     InpSellStop          = true;        // Delete Sell Stop
//---
string   m_name[]= {"УСТАНОВИТЬ","УДАЛИТЬ"};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   int _y=70;
   for(int i=0; i<ArraySize(m_name); i++)
     {
      ButtonCreate(m_name[i],5,_y,110,15,8);
      _y=_y+17;
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(m_name); i++)
     {
      ObjectDelete(0,Symbol()+m_name[i]);
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(ObjectGetInteger(0,Symbol()+"УСТАНОВИТЬ",OBJPROP_STATE,0)==true)
     {
      ObjectSetInteger(0,Symbol()+"УСТАНОВИТЬ",OBJPROP_STATE,false);
      funOnStart_Buy();
     }
//---
   if(ObjectGetInteger(0,Symbol()+"УДАЛИТЬ",OBJPROP_STATE,0)==true)
     {
      ObjectSetInteger(0,Symbol()+"УДАЛИТЬ",OBJPROP_STATE,false);
      funOnStart_Sell();
     }
//---
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void funOnStart_Buy(void)
  {
//--- тут ваша функция
   for(int j=1; j<=N_orders; j++)
     {
      if(!LimitGrid)
        {
         double _pricebuy = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK)+Distance*_Point+Grid_step*j*_Point,_Digits);
         double _pricesell = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID)-Distance*_Point-Grid_step*j*_Point,_Digits);
         m_trade.BuyStop(FixedLot,_pricebuy,NULL,0,_pricebuy+TakeProfit*_Point,0,0,NULL);
         m_trade.SellStop(FixedLot,_pricesell,NULL,0,_pricesell-TakeProfit*_Point,0,0,NULL);
        }
      else
        {
         double _pricebuy = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK)-Distance*_Point-Grid_step*j*_Point,_Digits);
         double _pricesell = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID)+Distance*_Point+Grid_step*j*_Point,_Digits);
         m_trade.SellLimit(FixedLot,_pricesell,NULL,0,_pricesell-TakeProfit*_Point,0,0,NULL);
         m_trade.BuyLimit(FixedLot,_pricebuy,NULL,0,_pricebuy+TakeProfit*_Point,0,0,NULL);
        }
     }
   PlaySound("ok.wav");
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void funOnStart_Sell(void)
  {
//--- тут ваша функция
   for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of current orders
      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
        {
         if(m_order.OrderType()==ORDER_TYPE_BUY_LIMIT && InpBuyLimit)
           {
            if(!m_trade.OrderDelete(m_order.Ticket()))
               Print(__FILE__," ",__FUNCTION__,", ERROR: ","CTrade.OrderDelete ",m_order.Ticket());
            continue;
           }
         if(m_order.OrderType()==ORDER_TYPE_BUY_STOP && InpBuyStop)
           {
            if(!m_trade.OrderDelete(m_order.Ticket()))
               Print(__FILE__," ",__FUNCTION__,", ERROR: ","CTrade.OrderDelete ",m_order.Ticket());
            continue;
           }
         if(m_order.OrderType()==ORDER_TYPE_SELL_LIMIT && InpSellLimit)
           {
            if(!m_trade.OrderDelete(m_order.Ticket()))
               Print(__FILE__," ",__FUNCTION__,", ERROR: ","CTrade.OrderDelete ",m_order.Ticket());
            continue;
           }
         if(m_order.OrderType()==ORDER_TYPE_SELL_STOP && InpSellStop)
           {
            if(!m_trade.OrderDelete(m_order.Ticket()))
               Print(__FILE__," ",__FUNCTION__,", ERROR: ","CTrade.OrderDelete ",m_order.Ticket());
            continue;
           }
        }
   PlaySound("ok.wav");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ButtonCreate(string name,int Xdist,
                  int Ydist,int Xsize,int Ysize,int FONTSIZE=12)
  {
   if(ObjectFind(0,Symbol()+name)<0)
      ObjectCreate(0,Symbol()+name,OBJ_BUTTON,0,100,100);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_COLOR,clrWhite);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_BGCOLOR,clrBlack);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_XDISTANCE,Xdist);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_YDISTANCE,Ydist);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_XSIZE,Xsize);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_YSIZE,Ysize);
   ObjectSetString(0,Symbol()+name,OBJPROP_FONT,"Sans Serif");
   ObjectSetString(0,Symbol()+name,OBJPROP_TEXT,name);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_FONTSIZE,FONTSIZE);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_SELECTABLE,false);
  }
//+------------------------------------------------------------------+

GBPUSDbM1

Grid
Grid
  • www.mql5.com
Скрипт выставляет сетку отложенных ордеров.
 
SanAlex:

Вам сюда! Вам помогут 

Торговые приложения для MetaTrader 5 на заказ

А какого , мы тут портянки из Г кода постим? К чему это все?

 
Evgeny Belyaev:

А какого , мы тут портянки из Г кода постим? К чему это все?

мы здесь пытаемся помогать друг другу. а Вы если специалист, можете и не смотреть на наши портянки.

 
SanAlex:

мы здесь пытаемся помогать друг другу. а Вы если специалист, можете и не смотреть на наши портянки.

Тебе вопрос задали. как из скрипта сделать советник?

Твои портянки явно не в тему. Делай больше портянок, куда их выставлять?

А кому ты тут помог?

Это такой маркетинг?

 
Evgeny Belyaev:

Тебе вопрос задали. как из скрипта сделать советник?

Твои портянки явно не в тему. Делай больше портянок, куда их выставлять?

А кому ты тут помог?

Это такой маркетинг?

У Вас вопросы вообще не по теме. Вы задираетесь, вам хочется меня достать. 

 
SanAlex:

У Вас вопросы вообще не по теме. Вы задираетесь, вам хочется меня достать. 

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

Ищу помощи в изменении скрипта в советник.

master_crypto, 2021.05.17 12:47

Здравствуйте

Кто может помочь переделать работающий скрипт в советник? Информацию об этом не нашел в открытом доступе. 


В смысле не по теме?

Вопрос задан,  есть решение?

 
Evgeny Belyaev:

В смысле не по теме?

Вопрос задан,  есть решение?

master_crypto:

Здравствуйте

Кто может помочь переделать работающий скрипт в советник?

     

(это - я вас уже прошу) - из этого скрипта переделать в эксперт

//+------------------------------------------------------------------+
//|                                                         grid.mq5 |
//|                             Copyright 2020, Zakhvatkin Aleksandr |
//|                              https://www.mql5.com/ru/users/z.a.m |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, Zakhvatkin Aleksandr"
#property link      "https://www.mql5.com/ru/users/z.a.m"
#property version   "1.00"
#property script_show_inputs
//--- input parameters
input double   FixedLot=0.1;    // Fixed lot
input ushort   TakeProfit=200;  // Take profit
input ushort   Grid_step=100;   // Grid step
input ushort   N_orders=10;     // Number of orders in one direction
input ushort   Distance=50;     // Price offset
input bool     LimitGrid=false; // Set a grid of limit orders
//--- include
#include <Trade\Trade.mqh>
CTrade trade;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for (int j=1; j<=N_orders; j++)
      {
      if (!LimitGrid)
         {
         double _pricebuy = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK)+Distance*_Point+Grid_step*j*_Point,_Digits);
         double _pricesell = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID)-Distance*_Point-Grid_step*j*_Point,_Digits);
         trade.BuyStop(FixedLot,_pricebuy,NULL,0,_pricebuy+TakeProfit*_Point,0,0,NULL);
         trade.SellStop(FixedLot,_pricesell,NULL,0,_pricesell-TakeProfit*_Point,0,0,NULL);
         }
      else
         {
         double _pricebuy = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK)-Distance*_Point-Grid_step*j*_Point,_Digits);
         double _pricesell = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID)+Distance*_Point+Grid_step*j*_Point,_Digits);
         trade.SellLimit(FixedLot,_pricesell,NULL,0,_pricesell-TakeProfit*_Point,0,0,NULL);
         trade.BuyLimit(FixedLot,_pricebuy,NULL,0,_pricebuy+TakeProfit*_Point,0,0,NULL);
         }
      }
  }
//+------------------------------------------------------------------+

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

вот моя версия помощи человеку https://www.mql5.com/ru/forum/369472/page3#comment_22368841

Ищу помощи в изменении скрипта в советник.
Ищу помощи в изменении скрипта в советник.
  • 2021.05.17
  • www.mql5.com
Здравствуйте Кто может помочь переделать работающий скрипт в советник? Информацию об этом не нашел в открытом доступе...
 

Всех благодарю за помощь, помогли на другом форуме. Человек написал личное сообщение, и через 5 мин. после ответа, сделал мне советник из работающего скрипта. Очевидно, что надо было выложить код  в этой ветке и это решилось бы прямо здесь.

ps

Дело в том, что скрипт вызывает кучу ненужных вопросов после публикации, типа - а зачем вам так , а может так, а может это вам не нужно, а может нужно вот это.

 
SanAlex:
master_crypto:

(это - я вас уже прошу) - из этого скрипта переделать в эксперт

Это стоит 50$. Твоя портянки не в тему, все делается одной строчкой. Вон даже автор темы сказал что твой код не помог.

Причина обращения: