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

Sunan Giri v2

sunan giri v2@lifeindreamsworld.mq4
Вы автор или правообладатель?

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

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

О программе

Sunan Giri v2 — торговый советник для MetaTrader 4, работающий на основе индикаторов Bollinger Bands и Stochastic. Советник анализирует текущий и предыдущий бар, формируя сигналы для открытия позиций buy и sell с использованием нескольких таймфреймов стохастика.

EA поддерживает ограничение по времени торговли (JAM_ON/JAM_OFF), фильтрацию по номеру счёта и проверку срока действия. Включает функции усреднения позиций с настраиваемым шагом и множителем, компаундинг на основе баланса, а также фиксированный размер лота.

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

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

НастройкаОписание
blink Мигающие метки — Переключатель мигающего цвета информационных меток на графике.
JAM_ON Час начала торговли — Час, начиная с которого советник может открывать позиции (целое число от 0 до 24).
JAM_OFF Час остановки торговли — Час, после которого советник прекращает открытие новых позиций (целое число от 0 до 24).
CommentEA Комментарий позиции — Текстовый комментарий, присваиваемый каждой открытой позиции.
CLOSE_BY_STOCH Закрытие по стохастику — Переключатель автоматического закрытия позиций при достижении экстремальных уровней стохастика.
parameteropen Заголовок параметров открытия — Текстовый заголовок раздела параметров открытия позиций.
OPEN_BUY Открытие buy — Переключатель разрешения открытия позиций buy.
OPEN_SELL Открытие sell — Переключатель разрешения открытия позиций sell.
Compounding Компаундинг — Переключатель компаундинга: при включении размер лота рассчитывается пропорционально балансу счёта.
Pembagi Делитель компаундинга — Делитель для расчёта размера лота при компаундинге (баланс делится на это значение).
FixLot Фиксированный лот — Фиксированный размер лота при отключённом компаундинге.
tp_in_money Прибыль в деньгах — Порог прибыли в денежном выражении: при достижении указанной суммы прибыль закрывает все позиции.
TP Тейк-профит — Тейк-профит в пунктах для открытых позиций.
SL Стоп-лосс — Стоп-лосс в пунктах для открытых позиций.
parameterave Заголовок параметров усреднения — Текстовый заголовок раздела параметров усреднения.
USE_MARTY Усреднение — Переключатель функции усреднения (martingale): при включении советник открывает дополнительные позиции при движении против направления.
PipStep Шаг в пунктах — Шаг в пунктах для условия открытия следующего уровня усреднения.
multiplier Множитель лота — Множитель увеличения лота при каждом уровне усреднения.
Max_Level Максимальный уровень — Максимальное количество уровней усреднения (максимальное число открытых позиций в направлении).
CEK_SIGNAL Смещение сигнала — Смещение бара для основного сигнала индикатора (цифровой параметр).
INDI1 Название индикатора 1 — Название первого индикатора (отображаемый параметр).
periodbb Период Bollinger — Период для индикатора Bollinger Bands.
deviationbb Отклонение Bollinger — Отклонение стандартного отклонения для индикатора Bollinger Bands.
shiftbb Смещение Bollinger — Смещение для индикатора Bollinger Bands.
applytobb Применённая цена Bollinger — Применяемая цена для индикатора Bollinger Bands (тип применённой цены).
INDI2 Название индикатора 2 — Название второго индикатора (отображаемый параметр).
Kperiod Период K стохастика — Период усреднения для линии K индикатора стохастика.
Dperiod Период D стохастика — Период усреднения для линии D индикатора стохастика.
slowing Замедление стохастика — Замедление (задержка) для индикатора стохастика.
pricefieldsto Ценовое поле стохастика — Поле цены для индикатора стохастика (тип ценового поля).
methodsto Метод усреднения стохастика — Метод скользящей средней для индикатора стохастика.
OS Уровень перепроданности — Нижний пороговый уровень стохастика для определения перепроданности.
OB Уровень перекупленности — Верхний пороговый уровень стохастика для определения перекупленности.
INDI3 Название индикатора 3 — Название третьего индикатора (отображаемый параметр).
TF1 Таймфрейм 1 — Первый дополнительный таймфрейм для анализа стохастика.
CEK_SIGNAL_TF1 Смещение сигнала TF1 — Смещение бара для сигнала стохастика на первом дополнительном таймфрейме.
TF2 Таймфрейм 2 — Второй дополнительный таймфрейм для анализа стохастика.
CEK_SIGNAL_TF2 Смещение сигнала TF2 — Смещение бара для сигнала стохастика на втором дополнительном таймфрейме.
TF3 Таймфрейм 3 — Третий дополнительный таймфрейм для анализа стохастика.
CEK_SIGNAL_TF3 Смещение сигнала TF3 — Смещение бара для сигнала стохастика на третьем дополнительном таймфрейме.
MagicNumber Магический номер — Числовой идентификатор для фильтрации позиций, управляемых данным советником.
Получить полный код

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

#property strict
#define _VERSION_ "2.0"
#property version _VERSION_
double slbuy,slsell,tpbuy,tpsell;
color colorrek;
int ACCOUNT1  = 0;   //<===CHANGE NUMBER HERE

string EXPIRE = "9999.12.31";  //<=== CHANGE DATE FOR EXPIRED HERE,

extern bool blink = false;

extern int JAM_ON   = 0;
extern int JAM_OFF  =24;

extern string CommentEA = "EA Sunan Giri";

extern bool CLOSE_BY_STOCH = true;

extern string parameteropen    = "=====Parameter Open=====";
extern bool OPEN_BUY  = true;
extern bool OPEN_SELL = true; 
extern bool    Compounding             = true;
extern double  Pembagi                 = 100000;
double victor;
extern double FixLot  =0.1;

extern double tp_in_money = 5;

extern int TP  = 20;
extern int SL  = 0;

extern string parameterave    = "=====Parameter Averaging=====";
extern bool USE_MARTY = true;

extern int PipStep           = 20;
extern double multiplier     =  2;

extern int Max_Level          = 10;

extern int CEK_SIGNAL   = 1;
extern string INDI1     = "Bollinger";
extern int periodbb            = 20;
extern double deviationbb      = 2.0;
extern int shiftbb             = 0;
extern ENUM_APPLIED_PRICE applytobb = PRICE_CLOSE;

extern string INDI2 ="Stochastic";
extern int Kperiod=   5;
extern int Dperiod=   3;
extern int slowing=   3;
extern ENUM_STO_PRICE pricefieldsto  = STO_LOWHIGH;
extern ENUM_MA_METHOD methodsto      = MODE_SMA;

extern double OS = 30;
extern double OB = 70;

extern string INDI3 ="Multi TF Stochastic";

extern ENUM_TIMEFRAMES TF1 = PERIOD_M15;
extern int CEK_SIGNAL_TF1 = 0;

extern ENUM_TIMEFRAMES TF2 = PERIOD_M30;
extern int CEK_SIGNAL_TF2 = 0;

extern ENUM_TIMEFRAMES TF3 = PERIOD_H1;
extern int CEK_SIGNAL_TF3 = 0;

double lotsbuy = 0;
double lotssell= 0;

string kata_mutiara1="Urip mung sepisan, dadio seng manfaat marang liyane..";
string kata_mutiara2="Live only once, be a person who is useful to others..";

extern int MagicNumber=123455;
int Slippage=3000;

int LOTS,x,f,g,h,k,y,z,jumlahbuy,jumlahbuylimit,jumlahselllimit,jumlahsell,jumlahbuystop,jumlahsellstop;
double BUY[99], SELL[99], BUYLIMIT[99], SELLLIMIT[99], BUYSTOP[99], SELLSTOP[99],BATAS;
int prec=0;
int a=0;
int b=0;
int c=0;
double pt,minlot,stoplevel;
int i;
double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);

color  FontColorUp1 = Red;  
color  FontColorDn1 = White; 
color  FontColor = Blue;
color  FontColorUp2 = Yellow;  
color  FontColorDn2 = Lime; 
color  FontUP = Lime;  
color  Font = White; 
color  FontDOWN = Red; 

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

int deinit()
  {
  ObjectsDeleteAll();

    ObjectDelete("Market_Price_Label1"); 
    ObjectDelete("Market_Price_Label2"); 
    ObjectDelete("Market_Price_Label3"); 
    ObjectDelete("Market_Price_Label4"); 
    ObjectDelete("Market_Price_Label5"); 
    ObjectDelete("Market_Price_Label6"); 
    ObjectDelete("Market_Price_Label7"); 
    ObjectDelete("Market_Price_Label8"); 
    ObjectDelete("Market_Price_Label9"); 
    ObjectDelete("Market_Price_Label10"); 
    ObjectDelete("Market_Price_Label11"); 
    ObjectDelete("Market_Price_Label12"); 
    ObjectDelete("Market_Price_Label13"); 
    ObjectDelete("Market_Price_Label14"); 
    ObjectDelete("Market_Price_Label15"); 
    ObjectDelete("Market_Price_Label16"); 
    ObjectDelete("Market_Price_Label17"); 
    ObjectDelete("Market_Price_Label18"); 
    ObjectDelete("Market_Price_Label19"); 
    ObjectDelete("Market_Price_Label20"); 
    ObjectDelete("Market_Price_Label21"); 
    ObjectDelete("Market_Price_Label22"); 
    ObjectDelete("Market_Price_Label23"); 
    ObjectDelete("Market_Price_Label24"); 
    ObjectDelete("Market_Price_Label25"); 
    ObjectDelete("Market_Price_Label26"); 
    ObjectDelete("Market_Price_Label27"); 
    ObjectDelete("Market_Price_Label28"); 
    ObjectDelete("Market_Price_Label29"); 
    ObjectDelete("Market_Price_Label30"); 
    ObjectDelete("Market_Price_Label31"); 
    ObjectDelete("Market_Price_Label32"); 
    ObjectDelete("Market_Price_Label33"); 
    ObjectDelete("Market_Price_Label34"); 
    ObjectDelete("Market_Price_Label35"); 
    ObjectDelete("Market_Price_Label36"); 
    ObjectDelete("Market_Price_Label37"); 
    ObjectDelete("Market_Price_Label38"); 
    ObjectDelete("Market_Price_Label39"); 
    ObjectDelete("Market_Price_Label40"); 
    ObjectDelete("Market_Price_Label41"); 
    ObjectDelete("Market_Price_Label42"); 
    ObjectDelete("Market_Price_Label43"); 
    ObjectDelete("Market_Price_Label44"); 
    ObjectDelete("Market_Price_Label45"); 
    ObjectDelete("Market_Price_Label46"); 
    ObjectDelete("Market_Price_Label47"); 
    ObjectDelete("Market_Price_Label48"); 
    ObjectDelete("Market_Price_Label49"); 
    ObjectDelete("Market_Price_Label50");

   return(0);
  }

void OnTick()
  {
      // код доступен только после оплаты
   }
   min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);  
if(Compounding ) 
   {
      victor=AccountBalance() / Pembagi;
      if (victor < min_volume)
         victor=min_volume;
   } 
else 
   {
      victor= FixLot;
      if (victor < min_volume)
         victor=min_volume;  
   } 

  if(TimeCurrent()<StrToTime(EXPIRE))
    {
    Comment("");
    }

    if(TimeCurrent()>=StrToTime(EXPIRE))
    {
    Comment("EA EXPIRED !!");
    ObjectsDeleteAll();

    }

  if(AccountNumber()!=ACCOUNT1  && ACCOUNT1 >0)
     {

     }

  if( (AccountNumber()==ACCOUNT1&&ACCOUNT1>0) || ACCOUNT1==0)
     {

y=0; f=0; g=0; h=0; k=0; z=0; jumlahbuy=0; jumlahsell=0; jumlahbuylimit=0; jumlahselllimit=0; jumlahsellstop=0; jumlahbuystop=0;
   for(x=0; x<OrdersTotal(); x++)
   {
      int check = OrderSelect(x, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol()!=Symbol()|| OrderMagicNumber()!=MagicNumber ) continue;
      if (OrderType()==OP_BUY)
      {  BUY[y] = OrderOpenPrice();
         y++;
         jumlahbuy++;
      }
      else
      if (OrderType()==OP_SELL)
      {  SELL[z] = OrderOpenPrice();
         z++;
         jumlahsell++;
      }
   else
      if (OrderType()==OP_BUYLIMIT)
      {  BUYLIMIT[f] = OrderOpenPrice();
         f++;
         jumlahbuylimit++;
      }
        else
      if (OrderType()==OP_SELLLIMIT)
      {  SELLLIMIT[g] = OrderOpenPrice();
         g++;
         jumlahselllimit++;
      }
       else
      if (OrderType()==OP_SELLSTOP)
      {  SELLSTOP[h] = OrderOpenPrice();
         h++;
         jumlahsellstop++;
      }
     else 
     if (OrderType()==OP_BUYSTOP)
      {  BUYSTOP[k] = OrderOpenPrice();
         k++;
         jumlahbuystop++;
      }

   }

double SPREAD = (Ask-Bid)/pt;

double floating = (AccountEquity()-AccountBalance())/AccountBalance()*100;

    string lastkomen="";
   for(i=0; i<OrdersHistoryTotal(); i++)
   {
      int check = OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber ) continue;
      lastkomen=OrderComment();
   }

   double lastlot=0;
   for(i=0; i<OrdersTotal(); i++)
   {
      int check = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber ) continue;
      lastlot=OrderLots();
   }

     double profit=0;
     double lotstotal=0;
   for(i=0; i<OrdersTotal(); i++)
   {
      int check=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber ) continue;
      profit+=(OrderProfit()+OrderCommission()+OrderSwap());
      lotstotal+=OrderLots();
   }

     double profitbuy    = 0;
     double lastlotbuy   = 0;
     double totallotbuy  = 0;
     double totalhargabuy= 0;
     double hargaratabuy = 0;
   for(i=0; i<OrdersTotal(); i++)
   {
      int check = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber || OrderType()==OP_SELL) continue;
      if(OrderType()==OP_BUY)
      {
      profitbuy+=(OrderProfit()+OrderCommission()+OrderSwap());
      lastlotbuy = OrderLots();
      totallotbuy+=OrderLots();
      totalhargabuy+=(OrderLots()*OrderOpenPrice());
      hargaratabuy= totalhargabuy/(totallotbuy);
      }
   }

     double profitsell    = 0;
     double lastlotsell   = 0;
     double totallotsell  = 0;
     double totalhargasell= 0;
     double hargaratasell = 0;
   for(i=0; i<OrdersTotal(); i++)
   {
      int check = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber || OrderType()==OP_BUY) continue;
      if(OrderType()==OP_SELL)
      {
      profitsell+=(OrderProfit()+OrderCommission()+OrderSwap());
      lastlotsell = OrderLots();
      totallotsell+=OrderLots();
      totalhargasell+=(OrderLots()*OrderOpenPrice());
      hargaratasell= totalhargasell/(totallotsell);
      }
   }

   {

    if (iOpen(Symbol(),0,0) > iOpen(Symbol(),0,1)) FontColor = FontColorUp1;
    if (iOpen(Symbol(),0,0)<  iOpen(Symbol(),0,1)) FontColor = FontColorDn1;
    if (iClose(Symbol(),0,0) > iClose(Symbol(),0,1) ) FontColor = FontColorUp2;
    if (iClose(Symbol(),0,0) < iClose(Symbol(),0,1) ) FontColor = FontColorDn2;
    if (Ask>iOpen(Symbol(),0,0)) Font=FontUP;
    if (Bid>iOpen(Symbol(),0,0)) Font=FontUP;
    if (Ask<iOpen(Symbol(),0,0)) Font=FontDOWN;
    if (Bid<iOpen(Symbol(),0,0)) Font=FontDOWN;

   }

double OPEN_DAILY    = iOpen(Symbol(),PERIOD_D1,0);

double CLOSE    = iClose(Symbol(),0,CEK_SIGNAL);
double  OPEN    =  iOpen(Symbol(),0,CEK_SIGNAL);

double  HIGH    = iHigh(Symbol(),0,CEK_SIGNAL);
double   LOW    =  iLow(Symbol(),0,CEK_SIGNAL);

double BULL = CLOSE>OPEN;
double BEAR = CLOSE<OPEN;
double FLAT = CLOSE==OPEN;

string textcandle = "wait";
color colorcandle = clrWhite;
if(BULL)
{
   textcandle = "BULL";
   colorcandle= clrLime;
}
if(BEAR)
{
   textcandle = "BEAR";
   colorcandle= clrRed;
}
if(FLAT)
{
   textcandle = "BULL";
   colorcandle= clrYellow;
}

double CLOSE_LAMA   = iClose(Symbol(),0,CEK_SIGNAL+1);

double BBAND_ATAS =iBands(Symbol(),0,periodbb,deviationbb,shiftbb,applytobb,MODE_UPPER,CEK_SIGNAL);
double BBAND_BAWAH=iBands(Symbol(),0,periodbb,deviationbb,shiftbb,applytobb,MODE_LOWER,CEK_SIGNAL);

double BBAND_MIDDLE = (BBAND_ATAS+BBAND_BAWAH)/2;

double BBAND_ATAS_LAMA =iBands(Symbol(),0,periodbb,deviationbb,shiftbb,applytobb,MODE_UPPER,CEK_SIGNAL+1);
double BBAND_BAWAH_LAMA=iBands(Symbol(),0,periodbb,deviationbb,shiftbb,applytobb,MODE_LOWER,CEK_SIGNAL+1);

double STOCH        =iStochastic(Symbol(),0,Kperiod,Dperiod,slowing,methodsto,pricefieldsto,MODE_MAIN,CEK_SIGNAL  );
double STOCH_LAMA   =iStochastic(Symbol(),0,Kperiod,Dperiod,slowing,methodsto,pricefieldsto,MODE_MAIN,CEK_SIGNAL+1);

double SIGNAL        =iStochastic(Symbol(),0,Kperiod,Dperiod,slowing,methodsto,pricefieldsto,MODE_SIGNAL,CEK_SIGNAL  );
double SIGNAL_LAMA   =iStochastic(Symbol(),0,Kperiod,Dperiod,slowing,methodsto,pricefieldsto,MODE_SIGNAL,CEK_SIGNAL+1);

double STOCH1        =iStochastic(Symbol(),TF1,Kperiod,Dperiod,slowing,methodsto,pricefieldsto,MODE_MAIN,CEK_SIGNAL_TF1);
double STOCH2        =iStochastic(Symbol(),TF2,Kperiod,Dperiod,slowing,methodsto,pricefieldsto,MODE_MAIN,CEK_SIGNAL_TF2);
double STOCH3        =iStochastic(Symbol(),TF3,Kperiod,Dperiod,slowing,methodsto,pricefieldsto,MODE_MAIN,CEK_SIGNAL_TF3);

string texttf1 = "wait";
if(TF1==PERIOD_M1 ) texttf1="M1";
if(TF1==PERIOD_M5 ) texttf1="M5";
if(TF1==PERIOD_M15) texttf1="M15";
if(TF1==PERIOD_M30) texttf1="M30";
if(TF1==PERIOD_H1 ) texttf1="H1";
if(TF1==PERIOD_H4 ) texttf1="H4";
if(TF1==PERIOD_D1 ) texttf1="D1";
if(TF1==PERIOD_W1 ) texttf1="W1";
if(TF1==PERIOD_MN1) texttf1="MN1";

string texttf2 = "wait";
if(TF2==PERIOD_M1 ) texttf2="M1";
if(TF2==PERIOD_M5 ) texttf2="M5";
if(TF2==PERIOD_M15) texttf2="M15";
if(TF2==PERIOD_M30) texttf2="M30";
if(TF2==PERIOD_H1 ) texttf2="H1";
if(TF2==PERIOD_H4 ) texttf2="H4";
if(TF2==PERIOD_D1 ) texttf2="D1";
if(TF2==PERIOD_W1 ) texttf2="W1";
if(TF2==PERIOD_MN1) texttf2="MN1";

string texttf3 = "wait";
if(TF3==PERIOD_M1 ) texttf3="M1";
if(TF3==PERIOD_M5 ) texttf3="M5";
if(TF3==PERIOD_M15) texttf3="M15";
if(TF3==PERIOD_M30) texttf3="M30";
if(TF3==PERIOD_H1 ) texttf3="H1";
if(TF3==PERIOD_H4 ) texttf3="H4";
if(TF3==PERIOD_D1 ) texttf3="D1";
if(TF3==PERIOD_W1 ) texttf3="W1";
if(TF3==PERIOD_MN1) texttf3="MN1";

color color1 = clrWhite;
string text1 = "wait";
if(STOCH1<=OS) 
{
color1 = clrLime;
text1  = "OS";
}
if(STOCH1>=OB) 
{
color1 = clrOrangeRed;
text1  = "OB";
}

color color2 = clrWhite;
string text2 = "wait";
if(STOCH2<=OS) 
{
color2 = clrLime;
text2  = "OS";
}
if(STOCH2>=OB) 
{
color2 = clrOrangeRed;
text2  = "OB";
}

color color3 = clrWhite;
string text3 = "wait";
if(STOCH3<=OS) 
{
color3 = clrLime;
text3  = "OS";
}
if(STOCH3>=OB) 
{
color3 = clrOrangeRed;
text3  = "OB";
}

double HOKI_BUY   = CLOSE_LAMA>BBAND_BAWAH_LAMA && LOW<=BBAND_BAWAH &&
                    STOCH <= OS &&
                    text1=="OS" && text2=="OS" && text3=="OS" &&
                    STOCH>0 && STOCH1>0 && STOCH2>0 && STOCH3>0 && LOW>0 && BBAND_BAWAH>0;

double HOKI_SELL  = CLOSE_LAMA<BBAND_ATAS_LAMA && HIGH>=BBAND_ATAS &&
                    STOCH >= OB &&
                    text1=="OB" && text2=="OB" && text3=="OB" &&
                    STOCH>0 && STOCH1>0 && STOCH2>0 && STOCH3>0 && HIGH>0 && BBAND_ATAS>0;

{
if(jumlahbuy==0)        lotsbuy  = victor;
if(jumlahbuy> 0)        lotsbuy  = NormalizeDouble(lastlotbuy*multiplier,2);

if(jumlahsell==0)        lotssell  = victor;
if(jumlahsell> 0)        lotssell  = NormalizeDouble(lastlotsell*multiplier,2);
}

  if( Hour()>= (JAM_ON) && Hour()< (JAM_OFF) )
{

  if(jumlahbuy+jumlahsell==0)
  {
    if (OPEN_BUY && HOKI_BUY && bNewBar1())        
       {
            min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
            max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);         
            if (victor < min_volume)
               victor=min_volume;  
            if(CheckMoneyForTrade(Symbol(), victor,OP_BUY))     
               double snd = OrderSend(Symbol(),OP_BUY,victor,Ask,Slippage,0,0,CommentEA,MagicNumber,0,clrBlue);
            }                 
    if (OPEN_SELL && HOKI_SELL && bNewBar2())
        {
            min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
            max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);          
            if (victor < min_volume)
               victor=min_volume;
            if(CheckMoneyForTrade(Symbol(), victor,OP_SELL))            
               double snd = OrderSend(Symbol(),OP_SELL,victor,Bid,Slippage,0,0,CommentEA,MagicNumber,0,clrRed);
           } 
 }

 if(USE_MARTY==true)
   {
   int max_allowed_orders=(int)AccountInfoInteger(ACCOUNT_LIMIT_ORDERS);
if (jumlahbuy>0 && BUY[jumlahbuy-1]-Ask>=PipStep*pt && jumlahbuy<Max_Level && OPEN_BUY &&jumlahbuy<max_allowed_orders)//buy
         {
            min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
            max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);         
            if (lastlotbuy>max_volume) lastlotbuy=max_volume;
            if (lastlotbuy<min_volume) lastlotbuy=min_volume;
            if(CheckMoneyForTrade(Symbol(), NormalizeDouble(lastlotbuy*multiplier,2),OP_BUY)) 
               double snd = OrderSend(Symbol(),OP_BUY,NormalizeDouble(lastlotbuy*multiplier,2),Ask,Slippage,0,0,CommentEA,MagicNumber,0,clrBlue);
          }
if (jumlahsell>0 && Bid-SELL[jumlahsell-1]>=PipStep*pt && jumlahsell<Max_Level && OPEN_SELL &&jumlahsell<max_allowed_orders)//sell
         {
            min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
            max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);          
            if (lastlotsell>max_volume) lastlotsell=max_volume;
            if (lastlotsell<min_volume) lastlotsell=min_volume;
            if(CheckMoneyForTrade(Symbol(), NormalizeDouble(lastlotsell*multiplier,2),OP_SELL)) 
               double snd = OrderSend(Symbol(),OP_SELL,NormalizeDouble(lastlotsell*multiplier,2),Bid,Slippage,0,0,CommentEA,MagicNumber,0,clrRed);
          }
    }     

   }

     if(tp_in_money>0)
   {
    if( profit>tp_in_money || a>0) 
   {
      closeall();
      closeall();
      closeall();
      a++;
      if(total()==0) a=0;
   }

  }

 if(CLOSE_BY_STOCH==true)
 {
  if(jumlahbuy>0 && text1=="OB"&&text2=="OB"&&text3=="OB")
  {
     closeallbuy();
     closeallbuy();
     closeallbuy();
  }
 if(jumlahsell>0 && text1=="OS"&&text2=="OS"&&text3=="OS")
  {
     closeallsell();
     closeallsell();
     closeallsell();
  }

  }

     for(i=OrdersTotal()-1; i>=0; i--)
     {
       double check = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
       if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber || OrderType()>1||OrderType()==OP_SELL) continue;
       if(OrderType()==OP_BUY && jumlahbuy==1)
       {

 if(SL>0)
 { 
int stops_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL); 
bool SL_checkbuy=(Bid-SL>stops_level*_Point); 
bool SL_checksell=(SL-Ask>stops_level*_Point);
bool TP_checkbuy=(TP-Bid>stops_level*_Point);
bool TP_checksell=(Ask-TP>stops_level*_Point);
if (SL_checkbuy)slbuy = OrderOpenPrice() -SL*pt;
if(SL_checksell)slsell= OrderOpenPrice() +SL*pt;
 }
 if(SL==0)
 { 
slbuy =0;
slsell=0;
 }
 if(TP>0)
 {
   int stops_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL); 
   bool TP_checkbuy=(TP-Bid>stops_level*_Point);
   bool TP_checksell=(Ask-TP>stops_level*_Point); 
   if (TP_checkbuy)tpbuy = OrderOpenPrice() +TP*pt;
   if (TP_checksell)tpsell= OrderOpenPrice() -TP*pt;
}
if(TP==0)
 {
tpbuy =0;
tpsell=0;
}

          if((OrderStopLoss()==0 && SL>0)||(OrderTakeProfit()==0 && TP>0))
          {
            if(OrderModifyCheck(OrderTicket(),OrderOpenPrice(),slbuy,tpbuy))
               double mod = OrderModify(OrderTicket(),OrderOpenPrice(),slbuy,tpbuy,0,CLR_NONE);
          }

       }
     }

     for(i=OrdersTotal()-1; i>=0; i--)
     {
       int check = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
       if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber || OrderType()>1||OrderType()==OP_BUY) continue;
       if(OrderType()==OP_SELL && jumlahsell==1)
       {

 if(SL>0)
 { 
  slbuy = OrderOpenPrice() -SL*pt;
  slsell= OrderOpenPrice() +SL*pt;
 }
 if(SL==0)
 { 
slbuy =0;
slsell=0;
 }
 if(TP>0)
 {
  tpbuy = OrderOpenPrice() +TP*pt;
  tpsell= OrderOpenPrice() -TP*pt;
}
if(TP==0)
 {
tpbuy =0;
tpsell=0;
}

          if((OrderStopLoss()==0 && SL>0)||(OrderTakeProfit()==0 && TP>0))
          {
            if(OrderModifyCheck(OrderTicket(),OrderOpenPrice(),slsell,tpsell))
               double mod = OrderModify(OrderTicket(),OrderOpenPrice(),slsell,tpsell,0,CLR_NONE);
          }

       }
     }

{
  if(jumlahbuy>0 && hargaratabuy>0)
  {

  {
     double s_lbuy=0, t_pbuy=0;
     for(i=0; i<OrdersTotal(); i++)
     {
         int check = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber || OrderType()>1||OrderType()==OP_SELL) continue;
         if (OrderType()==OP_BUY)
         if(SL>0)
         {
         s_lbuy=hargaratabuy-SL*pt;
         }
         if(SL==0)
         {
         s_lbuy=0;
         }
         if(TP>0)
         {
         t_pbuy=hargaratabuy+TP*pt;
         }
          if(TP==0)
         {
         t_pbuy=0;
         }
     }

     for(i=OrdersTotal()-1; i>=0; i--)
     {
       int check = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
       if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber || OrderType()>1||OrderType()==OP_SELL) continue;
       if(OrderType()==OP_BUY)
       {
          if(
            (NormalizeDouble(OrderStopLoss()  ,Digits)!=NormalizeDouble(s_lbuy,Digits) && SL>0)||
            (NormalizeDouble(OrderTakeProfit(),Digits)!=NormalizeDouble(t_pbuy,Digits) && TP>0)
            )
          {
            if(OrderModifyCheck(OrderTicket(),OrderOpenPrice(),NormalizeDouble(s_lbuy,Digits),NormalizeDouble(t_pbuy,Digits)))
               double mod = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(s_lbuy,Digits),NormalizeDouble(t_pbuy,Digits),0,CLR_NONE);
          }
       }
     }
   }
   }

   if(jumlahsell>0 && hargaratasell>0)
   {

  {
     double s_lsell=0, t_psell=0;
     for(i=0; i<OrdersTotal(); i++)
     {
         int check = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber || OrderType()>1||OrderType()==OP_BUY) continue;
         if (OrderType()==OP_SELL)
         if(SL>0)
         {
         s_lsell=hargaratasell+SL*pt;
         }
         if(SL==0)
         {
         s_lsell=0;
         }
         if(TP>0)
         {
         t_psell=hargaratasell-TP*pt;
         }
          if(TP==0)
         {
         t_psell=0;
         }
     }

     for(i=OrdersTotal()-1; i>=0; i--)
     {

       int check = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
       if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber || OrderType()>1||OrderType()==OP_BUY) continue;
       if(OrderType()==OP_SELL)
       {
           if(
            (NormalizeDouble(OrderStopLoss()  ,Digits)!=NormalizeDouble(s_lsell,Digits) && SL>0)||
            (NormalizeDouble(OrderTakeProfit(),Digits)!=NormalizeDouble(t_psell,Digits) && TP>0)
            )
          {
            if(OrderModifyCheck(OrderTicket(),OrderOpenPrice(),NormalizeDouble(s_lsell,Digits),NormalizeDouble(t_psell,Digits)))
               double mod= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(s_lsell,Digits),NormalizeDouble(t_psell,Digits),0,CLR_NONE);
          }
       }
     }
   }       
   }

   }

  if(blink==true)
  {
   if(Seconds()==0)        colorrek=clrYellow;
   if(Seconds()==1)        colorrek=clrYellowGreen;
   if(Seconds()==2)        colorrek=clrAliceBlue;
   if(Seconds()==3)        colorrek=clrAzure;
   if(Seconds()==4)        colorrek=clrAntiqueWhite;
   if(Seconds()==5)        colorrek=clrAqua;
   if(Seconds()==6)        colorrek=clrBeige;
   if(Seconds()==7)        colorrek=clrBlanchedAlmond;
   if(Se

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

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

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

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

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

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

Стоимость полного кода
3 391,80₽ ≈ $41.45