нужна помощь в mql4

 

хочу написать советник, но не могу найти... подобрать...

вобщем напишу что хочу...

интервалы торговли 5 мин, 15 мин, 30 мин.

нужно что бы в переменную prst приходило текущее значение с индикатора Stochastic

а в переменную prst2 приходило значение предыдущей 5, 15, 30 минутки

также такая же история с индикатором RSI переменные prRSI и prRSI2

и с индикатором MACD, переменные prMACD и prMACD2

так же хочу поставить значение лота при автоматической сделке 5 % от текущего депозита, а как выразить это в коде непонимаю...

 
prst=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 0); //для %K

prst=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL, 0); // %D

соответственно

prst2=iStochastic(NULL,PERIOD_M5,5,3,3,MODE_SMA,0,MODE_MAIN, 0); //5минут

 
extern int K_period  = 5;
extern int D_period  = 5;
extern int Metod     = 0;
extern int Price     = 0;
extern int TimeFrame2=15;

double prst,prst2;

prst=iStochastic(NULL,0,K_period,D_period,1,Metod,Price,MODE_MAIN,0);
prst2=iStochastic(NULL,TimeFrame2,K_period,D_period,1,Metod,Price,MODE_MAIN,0);

Slowing стохастика нужно задавать только если используешь вторую линию, а так не имеет смысла, поэтому заменил на 1. Текущий бар в большинстве случаев тоже смотреть не имеет смысла, поэтому меняй 0 в конце на 1. В этом случае актуально проверять сигнал только на каждом новом баре, ибо это лишние расчеты, для этого делай так:

int TimeS; // маркер времени, за пределам всех функций

// это в функции start
if (TimeS!=Time[0]) { // новый бар образовался
   // суда вставить расчеты
   TimeS=Time[0]; // запомним время нового бара
   }

по поводу ММ:

// за пределами функций
extern int MM  = 5;
int LotDigits; 

// желательно вставить в init(), так как расчеты останутся актуальными всегда
if(MarketInfo(NULL,MODE_LOTSTEP)==0.01) LotDigits=2;
if(MarketInfo(NULL,MODE_LOTSTEP)==0.1) LotDigits=1;
// эта часть перед выставлением ордера
double Lot=
   NormalizeDouble(                             // округление до допустимого количества знаков за запятой наших расчетов
      (AccountBalance()*(MM/100))               // баланс умножаем на ММ/100, т.е. берем заданный процент от депозита
      /MarketInfo(NULL,MODE_MARGINREQUIRED)     // требуемый залог на 1 лот для данной валюты
   ,LotDigits);                                 // допустимое количество знаков за запятой

последнюю строчку разобрал по частям чтобы вставить комментарии, можешь собрать в одну без пробелов и переносов

 
эх даже спасибо никто не сказал, помогай потом (
 
keep87: эх даже спасибо никто не сказал, помогай потом (

Не волнуйтесь, мы все замечаем и помним. Большое Вам спасибо, что помогли новичку! Форум на этом и держится - на безвозмездной помощи одних другим.

Ну а сам новичок, надеюсь, тоже скажет Вам спасибо - когда проснется... время-то позднее.

P.S. Обычно не жду немедленной благодарности от того, кому помог. Но чаще всего ее получаю.

 

)) спасибо огромное) но как я для себя выяснил, мне тут еще далеко до новичка... я частью кода я разобрался и даже умудрился вставить в свой советник без ошибок...

вот открыл книгу и продолжаю изучать...

но тема еще не закрыта, так как советник еще не готов)

 

И писать свои вопросы желательно в сразу в тематическую ветку : https://www.mql5.com/ru/forum/134688

И еще более желательно ее предварительно перечитать, тогда боьшая часть отпадет сама собой.

 

Здравствуйте господа программисты!

я уже неделю убил и нечего толком сделать не смог.

либо руки не от туда растут, либо я не знаю как )))

Помогите кто сможет доделать. ПЛИЗЗЗЗЗЗ.

Нужно чтоб открылась позиция по параметрам
__1__ потом сразу же по параметрам __2__ устанавливается отложенный ордер с увеличенным лотом "LOTMM"
и ждет пока не закроется позиция, если позиция будет открыта и сработает отложеник,

нужно чтоб открылся новый отложеник с увеличенным лотом и т.д.

Котировка пятизначная "EURUSD=1.29228"

extern string __1__ = "Открыть позицию";
extern double         LOT=0.01;         //--- Лот открываемой позиции
extern int            TP=20;           //--- Тейк профит открываемой позиции
extern int            SL=120;           //--- Стоп лосс открываемой позиции
extern int            kol=1;            //--- Кол-во открываемых позиций
extern int            slippage=3;       //--- Проскальзывание
extern int            MG =111111;       //--- Номер

extern string __2__ = "Открыть лок";
extern double         LOTMM=2;          //--- Увеличение лота в процентах
extern int            ST=30;           //--- Расстояние в пунктах от открытой позиции
extern int            TP1=40;          //--- Тейк профит  лока
extern int            SL1=200;          //--- Стоп лосс лока

Файлы:
1f.mq4  4 kb
 
Tkachev_AA:

prst приходило текущее значение с индикатора Stochastic

а в переменную prst2 приходило значение предыдущей 5, 15, 30 минутки


extern int K_period  = 5;
extern int D_period  = 5; 
extern int Slow  = 3;
extern int Metod     = 0;
extern int Price     = 0;

double prst,prst2;

prSt=iStochastic(NULL,0,K_period,D_period,Slow,Metod,Price,MODE_MAIN,0);
prSt_previos=iStochastic(NULL,previos_period(),K_period,D_period,Slow,Metod,Price,MODE_MAIN,0);


...

//+-------
//+------------------------------------------------------------------+
//|   valenok2003@mail.ru                                14.06.2011
//+------------------------------------------------------------------+
//| previos_period() вычисляет нижестоящий период    
//+------------------------------------------------------------------+
int previos_period() {  
   string _Function = "previos_period():";
//------------------
   switch(Period()) {
     case PERIOD_M1:  return(PERIOD_M1);
     case PERIOD_M5:  return(PERIOD_M1);
     case PERIOD_M15: return(PERIOD_M5);
     case PERIOD_M30: return(PERIOD_M15);
     case PERIOD_H1:  return(PERIOD_M30);
     case PERIOD_H4:  return(PERIOD_H1);
     case PERIOD_D1:  return(PERIOD_H4);
     case PERIOD_W1:  return(PERIOD_D1);
     case PERIOD_MN1: return(PERIOD_W1);
   }
}
//+------------------------------------------------------------------+
//+-------
 
Mathemat:

Не волнуйтесь, мы все замечаем и помним. 

Большой брат никогда не спит )))
 
keep87:

 

Доброго времени суток Вам!!! Обращаюсь ко всем, кто дружит с программированием дабы помогли мне в написании индикатора.

Идея: на паре EUR - USD заметил определенную тенденцию. Если цена отклоняется (в основном цена закрытия) от МА21 прим к закр (1Н) на определенное расстояние, то намечается смена/ откат цены. Лично мне это помогает в торговле (работаю на демке, т.к.  только учусь).

В виду выше изложенного прошу программистов,  кому не в напряг, написать индикатор в котором отражалась следующая информация:

- цена открытия/закрытия, хай/лоу свечи;

- цена на котором в тот момент находилась МА;

- разница в пипах между: цена открытия/закрытия, хай/лоу свечи - цена на котором в тот момент находилась МА за последние 3 свечи;

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

 

ЗАРАНЕЕ БЛАГОДАРЕН ВСЕМ КТО ПОМОЩЕТ!!!

Причина обращения: