Неужели такого не существует в МТ4!!! Гуру и профи автотрейдинга дайте свое экспертное заключение!!! - страница 2

 
mason:
Благодарю, попробую! 
Денег не жалко на новое, когда действительно пишется новый код! 
А, когда такие элементарные алгоритмы, на которые уже 100% есть готовый продукт и я думаю ни одно решение, а с десяток и уже как ни один год... 
Ладно, я суть понял! Что ошибся, форумом! Сюда надо за граалем за 30 баксов приходить))! 
Но вам за человечность и отзывчивость от всей души большое спасибо и благодарность! 

Вот статья неплохая по Вашему вопросу - также автор прикрепил файлы с советником для мт4 и мт5

https://www.mql5.com/ru/articles/5596

Создаем кроссплатформенный советник-сеточник (гридер)
Создаем кроссплатформенный советник-сеточник (гридер)
  • www.mql5.com
Думаю, на данном сайте ни для кого не является секретом, что язык MQL5 является наилучшим вариантом для создания своих советников. Но вот беда — не все брокеры позволяют создавать счета, доступные в MetaTrader 5. И даже если сейчас вы работаете с брокером, который это позволяет, вполне возможна ситуация, когда в будущем вам придется перейти к...
 

Вот хорошая функция - правда она для мт5.

эту функцию можно задать в эксперте, при сигнале от любого индикатора будет выставлять ордера

https://www.mql5.com/ru/code/30709 

Grid
Grid
  • www.mql5.com
Описание настроек скрипта: FixedLot - объем лота каждого ордера. TakeProfit - тейк-профит каждого ордера. Стоп-лосс не используется. Добавить не трудно. Grid_step - шаг сетки в пунктах. Значение для брокеров с пятизначными котировками. N_orders - количество ордеров в одном направлении Distance - отступ в пунктах от текущей цены. Первые ордера в...
 
SanAlex:

Вот хорошая функция - правда она для мт5.

эту функцию можно задать в эксперте, при сигнале от любого индикатора будет выставлять ордера

https://www.mql5.com/ru/code/30709 

Вот из этого скрипта простенький эксперт - что бы проверить в тестере работу этого скрипта.

//+------------------------------------------------------------------+
//|                                                    ButonGrid.mq5 |
//|                             Copyright 2020, Zakhvatkin Aleksandr |
//|                              https://www.mql5.com/ru/users/z.a.m |
//|                           Copyright © 2020, Aleksandr Klapatyuk. |
//|                            https://www.mql5.com/ru/users/sanalex |
//+------------------------------------------------------------------+
#property copyright   "Copyright © 2020, Aleksandr Klapatyuk"
#property link        "https://www.mql5.com/ru/users/sanalex"
#property description "Copyright 2020, Zakhvatkin Aleksandr"
#property description "https://www.mql5.com/ru/users/z.a.m"
#property version   "1.00"
//---
#define InpMagic 182979245
//--- include
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
//---
CPositionInfo  m_position; // trade position object
CTrade         m_trade;    // trading object
CSymbolInfo    m_symbol;   // symbol info object
//--- 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
//---
double m_adjusted_point;   // point value adjusted for 3 or 5 points
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!m_symbol.Name(Symbol())) // sets symbol name
      return(INIT_FAILED);;
//---
   m_trade.SetExpertMagicNumber(InpMagic);
   m_trade.SetMarginMode();
   m_trade.SetTypeFillingBySymbol(m_symbol.Name());
//--- tuning for 3 or 5 digits
   int digits_adjust=1;
   if(m_symbol.Digits()==3 || m_symbol.Digits()==5)
      digits_adjust=10;
   m_adjusted_point=m_symbol.Point()*digits_adjust;
//---
   m_trade.SetDeviationInPoints(3*digits_adjust);
//---
   if(!m_position.Select(Symbol()))
     {
      CheckObject();
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   if(ObjectFind(0,"Stop")==0)
     {
      ObjectDelete(0,"Stop");
     }
   if(ObjectFind(0,"Limit")==0)
     {
      ObjectDelete(0,"Limit");
     }
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(!m_position.Select(Symbol()))
     {
      CheckObject();
      CheckButon();
     }
//---
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void TickStartStop()
  {
//---
   for(int j=1; j<=N_orders; j++)
     {
      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);
     }
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void TickStartLimit()
  {
//---
   for(int j=1; j<=N_orders; j++)
     {
      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);
     }
  }
//+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool CheckButon(void)
  {
//---
   bool res=false;
     {
      if(ObjectGetInteger(0,"Stop",OBJPROP_STATE)!=0)
        {
         ObjectSetInteger(0,"Stop",OBJPROP_STATE,0);
         TickStartStop();
         PlaySound("ok.wav");
        }
      if(ObjectGetInteger(0,"Limit",OBJPROP_STATE)!=0)
        {
         ObjectSetInteger(0,"Limit",OBJPROP_STATE,0);
         TickStartLimit();
         PlaySound("ok.wav");
        }
      res=true;
     }
//--- result
   return(res);
  }
//+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool CheckObject(void)
  {
//---
   bool res=false;
     {
      ObjectCreate(0,"Stop",OBJ_BUTTON,0,0,0);
      ObjectSetInteger(0,"Stop",OBJPROP_XDISTANCE,ChartGetInteger(0,CHART_WIDTH_IN_PIXELS)-102);
      ObjectSetInteger(0,"Stop",OBJPROP_YDISTANCE,37);
      ObjectSetString(0,"Stop",OBJPROP_TEXT,"Stop");
      ObjectSetInteger(0,"Stop",OBJPROP_BGCOLOR,clrMediumSeaGreen);
      ObjectCreate(0,"Limit",OBJ_BUTTON,0,0,0);
      ObjectSetInteger(0,"Limit",OBJPROP_XDISTANCE,ChartGetInteger(0,CHART_WIDTH_IN_PIXELS)-50);
      ObjectSetInteger(0,"Limit",OBJPROP_YDISTANCE,37);
      ObjectSetString(0,"Limit",OBJPROP_TEXT,"Limit");
      ObjectSetInteger(0,"Limit",OBJPROP_BGCOLOR,clrDarkOrange);
      res=true;
     }
//--- result
   return(res);
  }
//+------------------------------------------------------------------+


 

Файлы:
ButonGrid.PNG  116 kb
ButonGrid.mq5  13 kb
 
mason:
...
Ну благо есть места и форумы, в отличие от этого, где можно надеется не только на одну Вселенную, но и на то, что на твой призыв откликнуться и люди! Туда и пойдём!)) 

Не покидайте нас, мы будем без вас скучать!!!

 
mason:
Причём здесь Грааль, я не слова не говорил про Грааль! Мне уже не 6, я в сказки не верю)) ! И никому я ничего не судил, никаких богатст! По человечески спросил, может кто подсобит? А мне сразу, давай минимум 30 баксов! 
И я же не говорю про воплощение каких-то сложных систем с мега кодом и супер стратегией! Элементарная вещь, под которую есть база, да я думаю и готовые решения у кого-нибудь есть!  А вы мне про спец автомобиль и трубки теплообменника, а я вам про просто поковыряться в носу! Чтобы в нем поковыряться спец. автомобиль не нужен и арматуру наваривать на сверло не надо! Просто человечнее надо быть и не мерить все деньгами, хотя бы элементарные вещи! Видимо ошибся форумом, думал здесь сообщество профессионалов, готовых помогать, хотя бы в элементарных вещах, раз им был дан талант и они обладают спец. знаниями! А тут оказывается банально-дай 30 баксов! 

Вы самого главного в моём повествовании не прочли.

Не считайте кто сколько заработает за воплощение вашей мечты. Считайте сколько вам облегчения принесёт это и готовы-ли вы платить за облегчение?

Или просто ваша стратегия не даёт прибыли и вы предпочли уйти от этого вопроса.

 
transcendreamer:

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

)))

 
SanAlex:

Вот из этого скрипта простенький эксперт - что бы проверить в тестере работу этого скрипта.


 

#property version     "1.001"

добавил кнопочку - удалить все отложенные ордера 


Файлы:
ot7x7q.PNG  79 kb
ButonGrid.mq5  21 kb
 
mason:


Вы можете пойти в ДЦ, использующие Румус - там отложенники прописаны в платформу.