← К каталогу
Исходный код · ID 4650

Market Long by Steve

$smgo_long.mq4
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Market Long by Steve — это торговый советник для MetaTrader 4, предназначенный исключительно для открытия длинных (BUY) позиций. Советник размещает рыночные ордера на покупку с возможностью автоматической установки стоп-лосса и тейк-профита как по цене, так и по пипсам.

Основная особенность — автоматический расчёт объёма лота на основе процента риска от баланса счёта и расстояния до стоп-лосса. Если параметр Lots установлен в 0, советник вычисляет размер позиции самостоятельно, учитывая минимальные и максимальные лимиты лота.

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

Встроенные текстовые параметры (ins0–ins3) служат описаниями групп настроек и не влияют на торговую логику. Продукт не содержит библиотечных API-функций.

Настройки программы

НастройкаОписание
ins0 Текстовая метка группы настроек «Number orders to place». Служит описанием параметра количества ордеров и не влияет на торговую логику.
Number_of_order Количество рыночных ордеров на покупку, которые будут размещены за один запуск советника.
UseExistingStops Переключатель режима использования стоп-лосса и тейк-профита первого существующего ордера с заданным магическим номером. При значении true и наличии позиций новые ордера получают стопы первой позиции.
Lots Ручной размер лота для открытия позиции. Если установлен в 0, объём рассчитывается автоматически на основе процентя риска и расстояния до стоп-лосса с учётом минимального и максимального размера лота на рынке.
ins1 Текстовая метка группы настроек «Risk Percent. 0=Disabled». Служит описанием параметра процента риска и не влияет на торговую логику.
Risk Процент от баланса счёта, который рискуется при расчёте размера лота. Если установлен в 0, автоматический расчёт объёма отключается.
ins2 Текстовая метка группы настроек «Stop loss and take profit as price». Служит описанием параметров стоп-лосса и тейк-профита по цене и не влияет на торговую логику.
SlAsPrice Стоп-лосс, заданный как абсолютное значение цены. Если ненулевое, используется как уровень стоп-лосса для ордера.
TpAsPrice Тейк-профит, заданный как абсолютное значение цены. Если ненулевое, используется как уровень тейк-профита для ордера.
ins3 Текстовая метка группы настроек «Stop loss and take profit as pips». Служит описанием параметров стоп-лосса и тейк-профита в пипсах и не влияет на торговую логику.
SlAsPips Стоп-лосс, заданный в пипсах относительно цены Ask. Используется при ненулевом значении для расчёта уровня стоп-лосса открытого ордера.
TpAsPips Тейк-профит, заданный в пипсах относительно цены Ask. Если значение ненулевое, используется как уровень тейк-профита открытого ордера.
Slippage Допустимое проскальзывание цены при размещении ордера. Для 5-значных и 3-значных котировок, а также для XAUUSD значение умножается на 10.
MagicNumber Магический номер, идентифицирующий ордера, размещённые данным советником. Используется для фильтрации позиций при подсчёте ордеров и привязке стоп-лоссов и тейк-профитов существующих позиций.
TradeComment Текстовый комментарий, присваиваемый каждому размещённому ордеру для идентификации в истории торгов.
Получить полный код

Поиск по коду файла

#property show_inputs
#include <stdlib.mqh>

extern string  ins0="Number orders to place";   
extern int     Number_of_order = 1;
extern bool    UseExistingStops = true;
extern double  Lots=0;
extern string  ins1="Risk Percent. 0=Disabled";
extern double  Risk=0.5;
extern string  ins2="Stop loss and take profit as price";    
extern double  SlAsPrice;
extern double  TpAsPrice;
extern string  ins3="Stop loss and take profit as pips";    
extern double  SlAsPips=25;
extern double  TpAsPips=50;
extern double  Slippage = 1;
extern int     MagicNumber=8088;
extern string  TradeComment = "";

int Width = 1376;
int Height = 768;
double takeprofit,StopLoss,StopLossPips, Slip;
int Divisor=1, ticket=0, buyOrders, totalOrders;

double MinLotSize,MaxLotSize,point,AmountAtRisk,PointCostValue,LotSize;
double FirstOrderTicket,FirstOrderTakeProfit, FirstOrderStopLoss,FirstOrderOpenPrice;
string Currency="";
string SymbolExtra="";
string Lot="";

int start()
  {
      // код доступен только после оплаты
   }
  int err ;
  int i = 0;
  Slip = Slippage;
  double     FiveDigitM;

  if(StringFind(Symbol(), "JPY",0) > 0)
         FiveDigitM = 100 ;
      else  
         FiveDigitM = 10000 ;

   point=Point;
   if(Digits == 5 || Digits == 3 || Symbol() == "XAUUSD")
   { 
      point = Point * 10 ; 
      Slip = Slippage * 10;   
      Divisor = 10;
   }         

   buyOrders = CountOrders(Symbol(), MagicNumber, OP_BUY);

   if(TpAsPips==0 && TpAsPrice==0) takeprofit=0;
   if (!TpAsPips==0) takeprofit= Ask + TpAsPips/FiveDigitM ;
   if (!TpAsPrice==0) takeprofit=TpAsPrice;

   if (SlAsPips==0 && SlAsPrice) StopLoss=0;
   if (!SlAsPips==0) StopLoss = Ask - SlAsPips/FiveDigitM;  
   if (!SlAsPrice==0) StopLoss=SlAsPrice;

   StopLossPips = (Ask - StopLoss) / point;

   if(UseExistingStops && buyOrders>0)
   {
      FirstOrderTicket=GetFirstTicketBymagic(MagicNumber); 
      StopLossPips = (Ask - FirstOrderStopLoss) / point;
   }

    PointCost();
    if(Lots==0) Calc();

if(!UseExistingStops || buyOrders==0)
{  
   ticket=0;
   for(i = 0; i < Number_of_order; i++)
   {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,TradeComment,MagicNumber,0,Green);

      err = GetLastError() ;

      if ( err  != 0)
          Alert("Failed to create Order. Error = ",ErrorDescription(err)) ;
      else
      {

         OrderModify(ticket ,OrderOpenPrice(), StopLoss,takeprofit,0,CLR_NONE);

         err = GetLastError() ;

         if ( err  != 0)
                Alert("Failed to Modify Order. Error = ",ErrorDescription(err), " Order Id:, ", ticket, " Limit = ", takeprofit, " Stop loss = ", StopLoss ) ;
         else
                PlaySound("ok.wav") ;
      }
      WindowScreenShot("ScreenShots\\"+Symbol()+"_M"+Period()+"\\"+Symbol()+"_M"+ Period()+"_"+TimeToStr(iTime(NULL, 0, 0),TIME_DATE)+"_"+TimeHour(TimeCurrent())+"_"+Time

Показано первые 50% кода (символов: 4449)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
444,90₽ ≈ $5.54