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

Firebird

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

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

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

О программе

Firebird — торговый советник для MetaTrader 4, реализующий систему торговли на основе SMA-полос с усреднением позиций. Советник рассчитывает простую скользящую среднюю заданной длины и смещает её вверх и вниз на заданный процент, формируя ценовой канал. При пробое границы канала открывается позиция в противоположном направлении текущего тренда. Если позиция уходит в убыток, советник открывает дополнительные позиции для усреднения входа. Используются стандартные торговые функции MetaTrader 4: OrderSend для размещения ордеров и OrderModify для корректировки стоп-лосса и тейк-профита.

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

НастройкаОписание
MA_length Длина MA — Период простой скользящей средней для расчёта центральной линии канала
Percent Процент — Процентное отклонение канала от SMA в обе стороны
>0 trades on friday (TradeOnFriday) Торговля в пятницу — Разрешает открытие сделок в пятницу при значении больше нуля
0=close, 1=HL (MAtype) Тип MA — Выбор цены для расчёта: 0 — цена закрытия, 1 — среднее высоких и низких
exits only (slip) Проскальзывание — Допустимое проскальзывание при выходе из позиции
Lots Лоты — Размер торговой позиции в лотах
TakeProfit Тейк-профит — Фиксированный уровень прибыли в пунктах
total loss on all open positions in pips (Stoploss) Стоп-лосс — Общий допустимый убыток по всем открытым позициям в пунктах
if position goes this amount of pips against you add another. (PipStep) Шаг пипсов — Расстояние в пипсах, при котором добавляется ещё одна позиция для усреднения
0=just add every PipStep, >0 =OrdersToal()^x *Pipstep (IncreasementType) Тип увеличения — 0 — добавление одинакового шага; больше нуля — увеличение пропорционально степени от общего числа ордеров
4 for most Symbols, 2 for JPY, check in MarketWatchWindow (SymbolFloatingPoints) Знаки символа — Количество знаков после запятой для текущего символа (4 для большинства, 2 для JPY-пар)
Получить полный код

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

extern int MA_length = 10;
extern double Percent = 0.2;
extern int TradeOnFriday =1; // >0 trades on friday
extern int MAtype=0;//0=close, 1=HL		 
extern int slip = 100;//exits only
extern int Lots = 1;
extern int TakeProfit = 30;
extern int Stoploss = 200;// total loss on all open positions in pips

extern int PipStep = 30;//if position goes this amount of pips against you add another.
extern double IncreasementType =0;//0=just add every PipStep,  >0 =OrdersToal()^x *Pipstep
extern int SymbolFloatingPoints =4;//4 for most Symbols, 2 for JPY, check in MarketWatchWindow

double KeepStopLoss=0;
double KeepAverage;
double dummy;
double spread=0;
double CurrentPipStep;
int OrderWatcher=0,flag=0,OpenTime=0;
int cnt=0, total,OpenTradesOnSymbol=0;
double LastPrice;
datetime orderclosetime;
int TheHistoryTotal;
int Direction=0;//1=long, 11=avoid long, 2=short, 22=avoid short
double StopperBuy=0,StopperSell=0;
   double PriceTargetBuy=0,PriceTargetSell=0;
   double AveragePriceBuy=0,AveragePriceSell=0;

int start()
{
      // код доступен только после оплаты
   }
   if(Symbol()=="USDJPY" || Symbol()=="EURJPY" || Symbol()=="GBPJPY") SymbolFloatingPoints=2;

   total=OrdersTotal();
   OpenTradesOnSymbol=0;
   for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if (OrderType()==OP_SELL || OrderType()==OP_BUY &&
          OrderSymbol()==Symbol() ) OpenTradesOnSymbol++;    
     }

Comment("LastPrice = ",LastPrice,"\n",
        "AveragePriceBuy = ",AveragePriceBuy,"\n",
        "AveragePriceSell = ",AveragePriceSell,"\n",
        "TradesOnsSymbol = ",OpenTradesOnSymbol,"\n", 
        "PriceTargetBuy = ",PriceTargetBuy,"\n", 
        "PriceTargetSell = ",PriceTargetSell,"\n", 
        "StopperBuy = ",StopperBuy,"\n", 
        "StopperSell = ",StopperSell,"\n", 
        "LastClosedOrder = ",TimeToStr(orderclosetime,TIME_DATE|TIME_SECONDS) ,"\n",
        "Flag = ",flag,"\n",
        "CurrentPipStep = ",CurrentPipStep); 

CurrentPipStep=PipStep;
if(IncreasementType>0)
  {
  CurrentPipStep=MathPow(OrdersTotal(),IncreasementType)*PipStep;
  } 

TheHistoryTotal=HistoryTotal();

for(int cnt2=TheHistoryTotal-1;cnt2>TheHistoryTotal-10;cnt2--) {
  OrderSelect(cnt2,SELECT_BY_POS,MODE_HISTORY);

    if ( (OrderSymbol()==Symbol()) ) {
       orderclosetime=OrderCloseTime();
       if(CurTime()-orderclosetime<Period()*60*2)  // At least 2 periods away!
       flag=1;   // Throw a flag
       else
       flag=0;
       break;
       }
} 

if(flag==0 && CurTime()-OpenTime>120) {   

if(MAtype==0)
   {
   if((iMA(NULL,0,MA_length,0,MODE_SMA,PRICE_OPEN,0)*(1+Percent/100))<Bid && Direction!=22 && (Bid>=(LastPrice+(CurrentPipStep*Point))||OpenTradesOnSymbol==0)) // Go SHORT -> Only sell if >= 30 pips above previous position entry	
 	  {
      OrderSend(Symbol(),OP_SELL,Lots,Bid,slip,Bid+(Stoploss*Point),Bid-(TakeProfit*Point),"1",0,0,Red);
      LastPrice=Bid;
      flag=1;
      OpenTime=CurTime();
      Direction=2;
      return;
     }   

   if((iMA(NULL,0,MA_length,0,MODE_SMA,PRICE_OPEN,0)*(1-Percent/100))>Ask && Direction!=11 && (Ask<=(LastPrice-(CurrentPipStep*Point))||OpenTradesOnSymbol==0)) // Go LONG -> Only buy if >= 30 pips below previous position entry	 

     {
      OrderSend(Symbol(),OP_BUY,Lots,Ask,slip,Ask-(Stoploss*Point),Ask+(TakeProfit*Point),"2",0,0,Blue);
      LastPrice=Ask;
      flag=1;
      OpenTime=CurTime();
      Direction=1;
      return;

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

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

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

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

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

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

Стоимость полного кода
550₽ ≈ $6.72