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

sereganlp2008.mq4

Вы автор или правообладатель?

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

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

О программе

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

Получить полный код

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

int Tenkan=12;
int Kijun=24;
int Senkou=120;

int s11=3;
int s12=3;
int s13=5;

int s21=5;
int s22=5;
int s23=10;

int s31=5;
int s32=5;
int s33=7;

int s41=3;
int s42=3;
int s43=7;

int MyTP=40;
int MySL=30;

int StopBezub=31;

datetime LostTime;

int ticket=0;
int ticket2=0;
int ticket3=0;
double lot=0.1;
double lot2=0;
double lot3=0;

bool CloseTP=false;
double VirtualTP;
int OgrTP=30;
double risk=4000;
double MaxBalance;

double P = 0, S = 0, R = 0, SP1 = 0, R1 = 0, SP2 = 0, R2 = 0, SP3 = 0, R3 = 0, SP4 = 0, R4 = 0;

int Capital()
  {
   if (AccountBalance() > MaxBalance) MaxBalance = AccountBalance();
   lot=NormalizeDouble(MaxBalance / risk, 1);
   if (AccountBalance()<lot*1500) lot=NormalizeDouble(AccountFreeMargin()/1500,1);
   if (lot<=5)
     {
      lot2=0;
      lot3=0;
     }
   if ((lot>5) && (lot<=10))
     {
      lot2=lot-5;
      lot=5;
      lot3=0;
     } else
   if ((lot>10) && (lot<=15))
     {
      lot3=lot-10;
      lot=5;
      lot2=5;
     } else
   if (lot>15)
     {
      lot=5;
      lot2=5;
      lot3=5;
     }
   if (AccountBalance()<7000)
     {
      lot2=0;
      lot3=0;
      lot=NormalizeDouble(AccountBalance() / risk, 1);
     }
  }

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

void FiboPivot(string symbol)
  {

    R = iHigh(symbol,PERIOD_D1,1) - iLow(symbol,PERIOD_D1,1);
    P = (iHigh(symbol,PERIOD_D1,1) + iLow(symbol,PERIOD_D1,1) + iClose(symbol,PERIOD_D1,1))/3; //Pivot
    R1 = P + (R * 0.38);
    R2 = P + (R * 0.62);
    R3 = P + (R * 0.99);
    R4 = 2*P+iHigh(symbol,PERIOD_D1,1)-2*iLow(symbol,PERIOD_D1,1);
    SP1 = P - (R * 0.38);
    SP2 = P - (R * 0.62);
    SP3 = P - (R * 0.99);
    SP4 = 2*P-(2*iHigh(symbol,PERIOD_D1,1)-iLow(symbol,PERIOD_D1,1));
  }

double MyTPUp(string symbol)
  {
   FiboPivot(symbol);
   double TP;
   TP=Ask+MyTP*Point;
   if (R4>Ask+MyTP*Point) TP=R4;
   if (R3>Ask+MyTP*Point) TP=R3;
   if (R2>Ask+MyTP*Point) TP=R2;
   if (R1>Ask+MyTP*Point) TP=R1;
   if (P>Ask+MyTP*Point) TP=P;
   if (SP1>Ask+MyTP*Point) TP=SP1;
   if (SP2>Ask+MyTP*Point) TP=SP2;
   if (SP3>Ask+MyTP*Point) TP=SP3;
   if (SP4>Ask+MyTP*Point) TP=SP4;
   return(TP);
  }

double MyTPDown(string symbol)
  {
   FiboPivot(symbol);
   double TP;
   TP=Bid-MyTP*Point;
   if (SP4<Bid-MyTP*Point) TP=SP4+Ask-Bid;
   if (SP3<Bid-MyTP*Point) TP=SP3+Ask-Bid;
   if (SP2<Bid-MyTP*Point) TP=SP2+Ask-Bid;
   if (SP1<Bid-MyTP*Point) TP=SP1+Ask-Bid;
   if (P<Bid-MyTP*Point) TP=P+Ask-Bid;
   if (R1<Bid-MyTP*Point) TP=R1+Ask-Bid;
   if (R2<Bid-MyTP*Point) TP=R2+Ask-Bid;
   if (R3<Bid-MyTP*Point) TP=R3+Ask-Bid;
   if (R4<Bid-MyTP*Point) TP=R4+Ask-Bid;
   return(TP);
  }

double MySLDown(string symbol)
  {
   FiboPivot(symbol);
   double SL;
   SL=Ask+MySL*Point;
   if (R4>Ask+MySL*Point) SL=R4+Ask-Bid;
   if (R3>Ask+MySL*Point) SL=R3+Ask-Bid;
   if (R2>Ask+MySL*Point) SL=R2+Ask-Bid;
   if (R1>Ask+MySL*Point) SL=R1+Ask-Bid;
   if (P>Ask+MySL*Point) SL=P+Ask-Bid;
   if (SP1>Ask+MySL*Point) SL=SP1+Ask-Bid;
   if (SP2>Ask+MySL*Point) SL=SP2+Ask-Bid;
   if (SP3>Ask+MySL*Point) SL=SP3+Ask-Bid;
   if (SP4>Ask+MySL*Point) SL=SP4+Ask-Bid;
   return(SL);
  }

double MySLUp(string symbol)
  {
   FiboPivot(symbol);
   double SL;
   SL=Bid-MySL*Point;
   if (SP4<Bid-MySL*Point) SL=SP4;
   if (SP3<Bid-MySL*Point) SL=SP3;
   if (SP2<Bid-MySL*Point) SL=SP2;
   if (SP1<Bid-MySL*Point) SL=SP1;
   if (P<Bid-MySL*Point) SL=P;
   if (R1<Bid-MySL*Point) SL=R1;
   if (R2<Bid-MySL*Point) SL=R2;
   if (R3<Bid-MySL*Point) SL=R3;
   if (R4<Bid-MySL*Point) SL=R4;
   return(SL);
  }

bool SignalIchimokuUp(string symbol)
  {
   bool signal=false;

   if ((iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_TENKANSEN,0)>iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_KIJUNSEN,0)) &&
       (iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_TENKANSEN,1)<=iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_KIJUNSEN,1)))
           signal=true;   else

   if ((iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,0)>iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,0)) &&
       (iHigh(symbol,0,0)>iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,0)) &&
       (iHigh(symbol,0,1)<iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,1)) &&
       (Bid<iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,0)+OgrTP*Point))
           signal=true;   else
   if ((iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,0)<iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,0)) &&
       (iHigh(symbol,0,0)>iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,0)) &&
       (iHigh(symbol,0,1)<iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,1)) &&
       (Bid<iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,0)+OgrTP*Point))
           signal=true;

   return(signal);
  }

bool SignalIchimokuDown(string symbol)
  {
   bool signal=false;

   if ((iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_TENKANSEN,0)<iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_KIJUNSEN,0)) &&
       (iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_TENKANSEN,1)>=iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_KIJUNSEN,1)))
          signal=true;   else

   if ((iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,0)<iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,0)) &&
       (iLow(symbol,0,0)<iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,0)) &&
       (iLow(symbol,0,1)>iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,1))  &&
       (Bid>iIchimoku(symbol,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,0)-OgrTP*Point))
          signal=true;   else
   if ((iIchimoku(symbol,0,Tenkan,Kijun,Senkou

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

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

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

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

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

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

Стоимость полного кода
1 012₽ ≈ $12.37