Переписать индикатор с руланга на mg5

MQL5 インディケータ

仕事が完了した

実行時間3 時間
依頼者からのフィードバック
Работу выполнил от... и до...
開発者からのフィードバック
Однозначное ТЗ и никаких задержек с проверкой результата - всё отлично.

指定

Переписать индикатор с Руланг(Румус) Форекс Клуба на mg5

Есть код на Руланг , и на mg4. Базовая версия, с которой будем сравнивать естественно код Румуса.

//!_IC_2
sp=inparam("PERIOD",1,1000,20);
if c>o then xh=h-c;else xh=h-o;
if c>o then xl=o-l;else xl=c-l;
tsh=mov(xh,sp,s);
tsl=mov(xl,sp,s);
//покупка
if xl>2*tsl or (c-o)> 2*tsh
   or (xl>2*xh and xl>tsl) then br=3; else br=0;
if (o-c)>2*tsl then br=0;
//r;
//продажа
if xh>2*tsh or (o-c)> 2*tsl
   or (xh>2*xl and xh>tsh) then sr=-3; else sr=0;
if abs(xh-xl)<((tsh+tsl)/2)
   and abs (o-c)<((tsh+tsl)/2) then
begin br=0;
sr=0;
end;
if (c-o)>2*tsh then sr=0;
//дожи
d=(tsh-tsl);
d1=abs(xh-xl);
d2=abs(o-c);
if d2<=d and d1<=d then 
begin sr=0; br=0; end;
a=h;
b=ref(h,-1);
if a>b then h2=a; else h2=b;
a1=l;
b1=ref(l,-1);
if a1<b1 then l2=a1; else l2=b1;
o2=ref(o,-1);
c2=c;
//покупка
if c2>h2-(h2-l2)/3 then br2=1; else br2=0;
//r2;
//продажа
if c2<l2+(h2-l2)/3 then sr2=-1; else sr2=0;
zzz=sr2+br2+br+sr;
if zzz>0 then rr=zzz; else rr=0;
if zzz<0 then rr1=zzz; else rr1=0;
rr;
rr1;

Вот код для МТ4

 //+------------------------------------------------------------------+

//|                                                       !_IC_2.mq4 |
//|                                                   Nikolay Kobzar |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Nikolay Kobzar"
#property link      "www.traderacademy.ru"

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

double rr[];
double rr1[];
double xh[];
double xl[];

extern int sp = 20;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorShortName("!_IC_2");
   IndicatorBuffers(4);
   SetIndexBuffer(0,rr);
   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
   SetIndexLabel(0,"rr");
   SetIndexBuffer(1,rr1);
   SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2);
   SetIndexLabel(1,"rr1");   
   
   SetIndexBuffer(2,xh);
   SetIndexBuffer(3,xl);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();

   if (Bars <= sp) return(0);
   if (counted_bars < 0) return(-1);
   if (counted_bars > 0) counted_bars--;

   int loopbegin = Bars - counted_bars - 1;
   
   double tsh, tsl;    
   int i,j;
   int br,sr,br2,sr2,zzz;
   double d,d1,d2,a,b,h2,a1,b1,l2,c2,o2;
   
   for(i=loopbegin; i>=0; i--) {
     if (Close[i] > Open[i]) {
       xh[i] = High[i]-Close[i];
       xl[i] = Open[i]-Low[i]; }
     else {
       xh[i] = High[i]-Open[i];
       xl[i] = Close[i]-Low[i];}         
   }
       
   for(i=loopbegin; i>=0; i--) {
     tsh=0;
     tsl=0;
     for (j=0;j<sp;j++) {
       tsh = tsh + xh[i+j];
       tsl = tsl + xl[i+j];
     }   
     tsh = tsh / sp;
     tsl = tsl / sp;   
     
     if ( (xl[i]>2*tsl) || (Close[i]-Open[i]>2*tsh)
          || ((xl[i]>2*xh[i]) && (xl[i]>tsl)) ) br=3; else br=0;
     if ( (Open[i]-Close[i])>2*tsl ) br=0;
     
     if ( (xh[i]>2*tsl) || (Open[i]-Close[i]>2*tsl) 
          || (xh[i]>2*xl[i] && xh[i]>tsh) ) sr=-3; else sr=0;
     if ( (MathAbs(xh[i]-xl[i]) < ((tsh+tsl)/2)) 
          && (MathAbs(Open[i]-Close[i])<((tsh+tsl)/2)) ) { br=0; sr=0;}
     if ( (Close[i]-Open[i])>2*tsh ) sr=0;
     
     d = tsh-tsl;
     d1 = MathAbs(xh[i]-xl[i]);
     d2 = MathAbs(Open[i]-Close[i]);
     if ( (d2<=d) && (d1<=d) ) { sr=0; br=0; }
     
     a=High[i];
     b=High[i+1];
     if (a>b) h2=a; else h2=b;
     a1=Low[i];
     b1=Low[i+1];
     if (a1<b1) l2=a1; else l2=b1;
     o2=Open[i+1];
     c2=Close[i];
     
     if (c2 > h2-(h2-l2)/3) br2=1; else br2=0;
     
     if (c2 < l2+(h2-l2)/3) sr2=-1; else sr2=0;
     zzz=sr2+br2+br+sr;
     if (zzz>0) rr[i]=zzz; else rr[i]=0;
     if (zzz<0) rr1[i]=zzz; else rr1[i]=0; 
   }
//----

   return(0);
  }
//+---------

応答済み

1
開発者 1
評価
(3)
プロジェクト
4
25%
仲裁
0
期限切れ
0
2
開発者 2
評価
プロジェクト
0
0%
仲裁
0
期限切れ
0
3
開発者 3
評価
(803)
プロジェクト
1374
72%
仲裁
113
28% / 48%
期限切れ
342
25%
仕事中
類似した注文
dify indicator MA_Cloud for mt4 and mt5, give source code with comments 1)Need to change alerts and arrows for cross price only true 2 MA without crossing (direction from small to big) 2)Fix the error when change to any timeframe for MA (disapeer) and for arrows (in history is very big on vertically out of see screenshot) 3)Add alerts for crossing of 2 MA (MA Small cross MA big) Arrows, Message, Sound - (True/False)
Изменить графический интерфейс утилиты, исправить расположение кнопок, изменить вид некоторых окон и добавить новые. Сохранить текущую адаптивность и работоспособность кнопок. Подробнее расскажу в ТЗ с наглядными скриншотами, что и где поменять. Правки нужно внести в МТ4 и МТ5 версии. Спасибо за ваши заявки, рассмотрю каждую
Мне нужен робот, который будет иметь следующие необходимые параметры: 1. робот должен работать на MT5 2. минимальный депозит $100 3. количество транзакций в день на депозит $100 с лотом 0,01 минимум 1000 4. макс прасат 15%
написать индикатор распознования флета. выявления флета из трёх частей проверки. в каждой части свой расчёт, по барам, по количеству поинтов, по ширине (высоте) баров, по минимальным значениям... когда все расчеты сошлись и не вышли из пропорций, тогда рисуется флет. Задание готово, отправлю подходящему кандидату. передача оплаты, когда индикатор будет работать без проблем, по всем параметрам расчетов. возможны не
Добрый день! Требуется выполнить следующую задачу: 1. для стандартного индикатора зигзаг 2. задаются стандартные настройки 3. задается тестовый период, валютная пара, таймфрейм 4. выгружается файл CVS или эксель с данными о зафиксированных пиках зигзага (НЕ ПРОМЕЖУТОЧНЫХ / ТЕКУЩИХ / ФОРМИРУЮЩИХСЯ, а именно о конечных пиках) 5. для каждого пика фиксируются
был старый работоспособный скрипт на очень старом МТ4... есть необходимость переписать его на MQL5, чтобы проверить теоретическую работоспособность в современном мире описание вроде бы где-то сохранилось кто-нибудь сможет помочь с этим вопросом и за какие деньги
стратегий в одном терминале может быть много нужен ММ для (баланс - сумма всех рисков) //Maximum amount of money to risk double moneyToRisk = NormalizeDouble( (AccountBalance() - Total_Current_Risk() )* RiskInPercent / 100, 7); Total_Current_Risk() { calculates all potential losses of all opened and all pending orders + all swaps + all commissions return (Total_Current_Amount_At_Risk) } double
I am looking to enhance the profitability of my current Expert Advisor (EA) using a Martingale approach with a CCI Indicator (the code is approximately 1200 lines currently) and would like to implement several key improvements. Below, I have detailed the areas where I believe the EA can be optimized and made more effective and i have provided the code in a .txt file: Note: I would like to run this EA most preferably

プロジェクト情報

予算