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

SilverTrendExpert_v2

silvertrendexpert_v2a.mq4

Похожие материалы по тегам

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 2 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговgeniusv101-ecn.mq4MQL4 / MetaTrader 4 · 2 общих теговmarket crusher ea guidlines.txtMQL · 2 общих тегов2 to 1 strategy with signals.pineTradingView · 2 общих теговfresh algo signals & overlays v25_6334471093901859175.pineTradingView · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

SilverTrendExpert_v2 — торговый советник для MetaTrader 4, использующий индикатор SilverTrend для определения направления тренда и генерации сигналов на покупку или продажу. Советник анализирует динамику цен с помощью собственной логики трендового индикатора и дополняет сигналы фильтром Juice на основе стандартного отклонения, который позволяет выявлять флэт-рынок и приостанавливать торговлю в таких условиях.

Продукт поддерживает управление денежными средствами с расчётом размера лота на основе процента риска от капитала, а также механизм уменьшения лота после серии убытков. Реализованы стандартные элементы управления рисками: стоп-лосс, трейлинг-стоп, тейк-профит и ограничение максимального количества открытых позиций.

Советник работает на нескольких валютных парах с автоматическим определением магического номера для каждой пары и таймфрейма. Имеется режим отладки с записью информации в файлы для анализа работы стратегии. Торговля может быть включена и отключена глобальным параметром Turnon.

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

НастройкаОписание
Change to 1 to allow print (Debug) Отладка — Включает вывод отладочной информации в файлы при значении 1
Change to 1 if trading live. (LiveTrading) Реальная торговля — Включает режим реальной торговли при значении 1
Change to 0 if you want to shutdown money management controls. Lots = 1 will be in effect and only 1 (mm) Управление рисками — Включает или отключает систему управления денежными средствами: при 0 лот фиксируется равным Lots
Change to whatever percent of equity you wish to risk. (Riskpercent) Процент риска — Процент от капитала, рискуемый на одну позицию
Used to decrease lot size after a loss is experienced to protect equity. Recommended not to change. (DecreaseFactor) Коэффициент уменьшения — Коэффициент уменьшения лота после убытка для защиты капитала
Maximum pips willing to lose per position. (StopLoss) Стоп-лосс — Максимальное количество пипсов для стоп-лосса на позицию
Change to whatever number of pips you wish to trail your position with. (TrailingStop) Трейлинг-стоп — Количество пипсов для трейлинг-стопа
Expert will stop trading if equity level decreases to that level. (Margincutoff) Порог маржи — Порог капитала — советник прекращает торговлю при снижении equity до этого уровня
Total number of positions on all currency pairs. You can change this number as you wish. (Maxtrades) Максимум сделок — Общее количество разрешённых открытых позиций на всех парах
Maximum profit level achieved. (TakeProfit) Тейк-профит — Максимальный уровень прибыли для фиксации на позицию
Possible fix for not getting filled or closed (Slippage) Проскальзывание — Допустимое проскальзывание при выполнении ордеров
SSP SSP — Параметр периода индикатора SilverTrend
Is this the same as RiskPercent?? (RISK) RISK — Параметр индикатора SilverTrend, влияющий на расчёт диапазона
UseJuice Использовать Juice — Включает или отключает фильтр Juice для определения флэт-рынка
JuicePeriod Период Juice — Период расчёта индикатора Juice
JuiceLevel Уровень Juice — Уровень фильтра Juice для определения флэт-рынка
standard lot size. (Lots) Лот — Стандартный размер лота
Turns expert on, change to 0 and no trades will take place even if expert is enabled. (Turnon) Включение — Включает или отключает советник: при значении 0 сделки не совершаются
Получить полный код

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

#include <stdlib.mqh>

extern int Debug = 0;               // Change to 1 to allow print

extern int AccountIsMini = 0;       // Change to 1 if trading mini account
extern int LiveTrading = 0;         // Change to 1 if trading live.

extern int mm = 1;                  // Change to 0 if you want to shutdown money management controls. Lots = 1 will be in effect and only 1 lot will be open regardless of equity.
extern double Riskpercent = 5;      // Change to whatever percent of equity you wish to risk.
extern double DecreaseFactor = 3;   // Used to decrease lot size after a loss is experienced to protect equity.  Recommended not to change.
extern double StopLoss = 45;        // Maximum pips willing to lose per position.
extern double TrailingStop = 0;     // Change to whatever number of pips you wish to trail your position with.
extern double Margincutoff = 800;   // Expert will stop trading if equity level decreases to that level.
extern double Maxtrades = 10;       // Total number of positions on all currency pairs. You can change this number as you wish.

extern int TakeProfit = 0;          // Maximum profit level achieved.
extern int Slippage = 10;           // Possible fix for not getting filled or closed    

extern int SSP=9;
extern int RISK=3;                  // Is this the same as RiskPercent??

extern bool UseJuice=true;

extern int JuicePeriod= 7;
extern int JuiceLevel= 4;

extern double Lots = 1;             // standard lot size. 
extern int Turnon = 1;              // Turns expert on, change to 0 and no trades will take place even if expert is enabled.

string OrderText = "";
double lotMM;
int TradesInThisSymbol;
datetime LastTime;
double Sl;
double Tr;
int ticket;
bool OK2Buy, OK2Sell;              // determines if buy or sell trades are allowed
bool FlatMarket;
int NumBuys, NumSells;             // Number of buy and sell trades in this symbol
bool first_time = true;

int SilverTrendVal;

double CurrentJuice;   // From Juice

int init()
  {
      // код доступен только после оплаты
   }

int deinit()
  {
     int handle;

    if (Debug == 1)
    {
      handle = GlobalVariableGet("MyHandle");
      FileFlush(handle);
      FileClose(handle);
      GlobalVariableDel("MyHandle");  
    }
   return(0);
  }

int Write(string str)
{
   int handle;

   handle = GlobalVariableGet("MyHandle");

   FileWrite(handle,str,"\r\n"); 
}

int SilverTrend(int SSPval, double Risk, int shift)
{
   int i,K;
   double Range,AvgRange,smin,smax,SsMax,SsMin,price;

   int trend;

   K=33-Risk; 
  	Range=0;
   AvgRange=0;
   for (i=0; i<=SSPval; i++)
	{
	  AvgRange=AvgRange+MathAbs(High[i+shift]-Low[i+shift]);
   }
   Range=AvgRange/(SSPval+1);

   SsMax=High[shift]; SsMin=Low[shift]; 
   for (i=0;i<=SSPval-1;i++)
   {
      price=High[i+shift];
      if(SsMax<price) SsMax=price;
      price=Low[i+shift];
      if(SsMin>=price)  SsMin=price;
   }

   smin = SsMin+(SsMax-SsMin)*K/100; 
   smax = SsMax-(SsMax-SsMin)*K/100; 
   if (Close[shift]<smin)
   {
     trend = -1;
   }
   if (Close[shift]>smax)
   {
     trend = 1;
   }
   return(trend);
}

int DetermineJuiceLevel()
{
  if (Symbol() == "GBPUSD") return (8);
  return (JuiceLevel);
}

double Juice(int shift, int period, int level)
{
   double osma= 0;

   osma= iStdDev(NULL,0, period, MODE_EMA, 0, PRICE_CLOSE,shift) - level*Point;

   return (osma); // return last computed value
}

bool GetSTExit(string type,int exitall, int SilverTr)
{
  bool ExitCondition;

   ExitCondition = false;

   if (type == "BUY")
   {

     if (SilverTr == -1)
     {
      if (Debug == 1)
      {
         Print ("Exit Condition met for Buy");
         Write ("Exit Condition met for Buy");
      }
      ExitCondition = true;
     }
   }
   if (type == "SELL")
   {

     if (SilverTr == 1)
     {
      if (Debug == 1)
      {
         Print ("Exit Condition met for Sell");
         Write ("Exit Condition met for Sell");
      }
      ExitCondition = true;
     }
   }

   if(exitall==1) ExitCondition = true;
   return(ExitCondition);
}

bool CheckBuyCondition(int STrend)
{
   if (STrend > 0)
   {
    if (Debug == 1) Print ("Buy Condition met");

    return(true);
    }
   return (false);
}

bool CheckSellCondition(int STrend)
{

   if (STrend < 0)
   {
       if (Debug == 1) Print ("Sell Condition met");
       return(true);
    }
   return (false);

}

int start()
  {
      // код доступен только после оплаты
   }

int ClosePositions(string type)
{
  int err,cnt;

   err = 1;
   cnt = 0;
   while (err>0 && cnt < 3)
   {
      if (type == "BUY")  err = HandleBuys(true);
      if (type == "SELL") err = HandleSells(true);
      if (err > 0) cnt++;
   }
   return (0);
}

int HandleBuys(int ExitConditions)
{
   int err = 0;

   if (ExitConditions == 1)   
   {
      if (!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet)) err = GetLastError();
      return(err); // exit
   }
    if(TrailingStop>0) 
    {                
      if(Bid-OrderOpenPrice()>Point*TrailingStop)
      {
         if(OrderStopLoss()<Bid-Point*TrailingStop)
         {
            if (!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Aqua))
            {
               err = GetLastError();
            }
            return(err);
          }
 

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

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

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

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

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

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

Стоимость полного кода
1 272,60₽ ≈ $15.55